- •[Gl]Дәріс №1. Си тілі негіздері.[:] Си тілі негіздері.
- •Жалпы түсініктер
- •Cи тілінің алфавиті
- •2. Си тілінің алфавиті
- •[Gl] Дәріс №2. Тілдің қарапайым объектілері.[:]
- •Тілдің қарапайым объектілері.
- •[Gl]Дәріс №3. Стандартты функциялар.[:] Стандартты функциялар.
- •1. Printf және scanf функциялары
- •2. Спецификациялардың түрлері.
- •[Gl]Дәріс №4. Си тілі операторлары[:] Си тілі операторлары
- •4. Келтіру операциясы
- •5. Логикалық оператор
- •[Gl]Дәріс №5. Цикл операторлары.[:] Цикл операторлары.
- •3.For цикл операторы
- •Int n; // көбейткіш
- •Int p; // көбейтінді
- •5 Санының көбейту кестесі
- •4. Do while цикл операторы
- •[Gl]Дәріс №6. Көшу операторлары[:] Көшу операторлары
- •2. Continue операторы
- •3. Goto операторы
- •[Gl]Дәріс №7. Си тілі элементтері.[:] Си тілі элементтері.
- •Switch ауыстырғыш операторы
- •Эем жадының кластары және айнымалылардың қолданылу аймағы
- •1. Switch ауыстырғыш операторы
- •2. Эем жадының кластары және айнымалылардың қолданылу аймағы
- •[Kgl]Дәріс №8. Cи тіліндегі функциялар.[:] Cи тіліндегі функциялар
- •2. Функция түрлері.
- •Return операторы.
- •[Gl]Дәріс №9. Сөз тіркестерін өңдеу.[:] Сөз тіркестерін өңдеу.
- •2. Сөз тіркестерін өңдеу
- •[Gl]Дәріс №10. Сөз тіркестерін өңдейтін басқа функциялар.[:] Сөз тіркестерін өңдейтін басқа функциялар
- •1. Сөз тіркестерін енгізу-шығару функциялары.
- •2. Сөз тіркестерін өңдейтін басқа функциялар.
- •1. Сөз тіркестерін енгізу-шығару функциялары
- •2.Сөз тіркестерімен жұмыс істейтін басқа функциялар
- •Программалау технологиясы пәні бойынша тест тапсырмалары
[Gl]Дәріс №3. Стандартты функциялар.[:] Стандартты функциялар.
Сұрақтар:
printf және scanf функциялары.
Спецификациялардың түрлері.
Си тілінде математикадағы тәрізді стандартты функ-циялар бар. Олар жиі кездесетін математикалық және басқа да функцияларды есептеу үшін қолданылады. Стандартты функцияны жазу үшін міндетті түрде функцияның аты және жақшаның ішінде аргументі көрсетілуі қажет. Функцияны есептеу барысында аргумент пен функция типтерінің әр уақытта сәйкес келе бермейтінін есте сақтаған жөн.
Енді программаларда жиі пайдаланылатын өрнектерді мысал ретінде қарастырайық.
|x| fabs(x) Аргументтік абсолюттік шамасы нақты
|x| abs(x) Аргументтік абсолюттік шамасы бүтін
tg x tan(x) Аргументтің тангенсы нақты
arctg x atan(x) Аргументтің арктангенсы нақты
arccos x acos(x) Аргументтің арккосинусы нақты
arcsin x asin(x) Аргументтің арксинусы нақты
cos x cos(x) Аргументтің косинусы нақты
sіn x sіn(x) Аргументтің синусы нақты
ex exp(x) е-нің (2,71828) х дәрежесі нақты
lnx log(x) х-санының натурал логарифмі нақты
lg x log10(x) х-санының ондық логарифмі нақты
p M_PI (p-дің мәні pі=3.14159265)
e M_E (e-нің мәні е=2.718281828)
xn pow(x,n) х-тің n дәрежесі нақты
sqrt(x) х-тің квадрат түбірі нақты
ceil(x) х санын бүтінге дейін жоғары дөңгелектейді нақты
Math.hpp Сeil(x) х санын бүтінге дейін жоғары дөңгелектейді бүтін
fmod(x,y) қалдық нақты
floor(x) х санын бүтінге дейін төмен дөңгелектейді нақты
Math.hpp Floor(x) х санын бүтінге дейін төмен дөңгелектейді бүтін
Stdlib.h randomize кездейсоқ сандардың генераторы
Stdlib.h rand 0... 37767 аралығындағы кездейсоқ сан бүтін
Stdlib.h random(num) 0... num-1 аралығындағы кездейсоқ сан бүтін
Варианттар:
Операциялар Операциялар классификациясы
Операцияларда қатысатын операндалар саны бойынша операциялар былай бөлінеді:
унарлы операциялар, немесе бір операндты операциялар,
бинарлы операциялар, немесе екі операндты операциялар,
тернарлы операциялар, немесе үш операндты (бұл шартты операция
Меншіктеу операциясы да унарлы жөне бинарлы бола алады.
Унарлы операцияларды талдау оңнан солға карай жүргізіледі. Бинарлы операциялар солдан оңға карай талданады
Унарлы операциялар тобы
Операция белгісі |
Операция |
Операциялар тобы |
- |
Арифметикалы0 терістеу |
Терістеу және толықтауыш |
~ |
Разрядты логикалық терістеу (толықтауыш) |
|
! |
Логикалық терістеу |
|
* |
Адрестеуді алып тастау |
Адрестеуді алып тастау және адрес |
& |
Адрес |
|
+ |
Унарлы плюс |
Унарлы плюс |
sizeof |
Мөлшер |
Мөлшер |
Бинарлы операциялар топтары
Операциялар белгісі Операция Операциялар тобы
* Көбейту Мультипликативті
/ Бөлу
% Бөлуден калган қаддық
+ Қосу Аддитивтік
- Алу
« Солға жылжу Жылжу операциясы
» Оңға жылжу
< Аз Қатынас опеоапиялаг
> Көп
<= Аз немесе тең
>= Көп немесе тен
= Тең
!= Тең емес
& Разрядты логикалықЖӘНЕ Разрядты
| Разрядты логикалық НЕМЕСЕ
Разрядты
НЕМЕСЕ
&& Логикалық ЖӘНЕ Логикалык
|| ЛогикалықНЕМЕСЕ
> Үтір (тезбектеліп есептеу) Тізбектеп есептеу
Төменде меншіктеу операциялары келтірілген. Меншіктеу операциясы
оң операнданың мәні сол операндамен берілген жад облысына
меншіктелуін айтады. Сондықтан меншіктеу операциясының сол операндасы
немесе меншіктеудің унарлы өрнегінін жалғыз операндасын жад облысына сілтейтін өрнек болуы керек.
Меншіктеу операциялары
Операция белгісі Операция аты
++ Көбею (унарлы инкремент)
-- Азаю (унарлы декремент)
= Қарапайым меншіктеу
*= Меншіктеумен көбейту
/= Меншіктеумен бөлу
%= Меншіктеумен бөлуден калған қаддық
+= Меншіктеумен косу
-= Меншіктеумен алу
«= Меншіктеумен солға жылжу
»= Меншіктеумен оңға жылжу
&= Меншіктеумен разрядты ЖӘНЕ
|= Меншікгеумен разрядты НЕМЕСЕ
^= Меншіктеумен разрядты шығарып тастайтын НЕМЕСЕ
Жад облысына сілтейтін өрнек атайтын өрнек деп немесе 1-мәнді деп аталады. Мынадай өрнектер атайтын өрнектер бола алады:
берілгендердің бүтін және жылжымалы типті, сілтемелер типті,|кұрылым және қоспа типті идентификаторлары;
массив немесе функция тәрізді есептелетін индекстік өрнектерден басқа индекстік өрнектер ([ ]);
элемент таңдау өрнегі (-> немесе .)> егер таңдалатын элемент жоғарыдағы өрнектердің бірі болса;
адрестеуді алып тастау операциясының унарлы өрнегі (*), бұнда массив немесе функцияға сілтейтін өрнек болмауы керек;
дөңгелек жакша ішіндегі атайтын өрнектері (1-мән).
Ескерту. const кілтті сөзімен сипатталған объект меншіктеу операциясының сол операндасы бола алмайды (мәнін өзгертуге болмайды).
Қарапайым арифметикалық түрлендірулер
Операциялар орындалу барысында өрнектер операндаларын бір типке келтіру немесе қысқа шамаларды бүтін шамалардың өлшеміне дейін кеңейту үшін типтерді автоматты түрлендіреді. Орындалатын түрлендірулер операциялар спецификасынан және операндалар немесе операнда типіне байланысты. Көп операциялар бүтін жөне жылжымалы типтерге ұқсас түрлендірулер орындайды. Бүл түрлендірулер арифметикалық түрлендірулер.
Төменде келтірілген арифметикалық түрлендірулер қарапайым арифметикалық түрлендірулер деп аталады.
Қарапайым арифметикалық түрлендірулер мынадай ережелер бойынша жүргізіледі:
float типті операндалар double типті операндаға түрленеді.
Егер бір операнд long double типті болса, екінші операнд long double типіне түрленеді.
Егер бір операнд double типті болса, екінші операнд double типіне түрленеді.
char немесе short типті кез-келген операнда int типіне тұрленеді.
unsigned char немесе unsigned short типті кез келген операнда unsigned int типіне түрленеді.
Егер бір операнд unsigned long типті, онда екіншісі unsigned long типіне түрленеді.
Егер бір операнд long типті болса, онда екінші операнд long типіне түрленеді.
Егер бір операнд unsigned int типті, онда екінші операнд unsigned int типіне түрленеді.
Сонымен, өрнектер есептеу барысында операндалар кай операнда үлкен өлшемді болса, соған түрленеді.
Мысалы, мынадай айнымалылар сипатталған болса:
double fl;
unsigned char ch;
unsigned long m;
int i;
Онда fl*(i+ch/m) өрнекті есептеу барысында түрлендіру былай орындалады. сһ операндасы әуелі unsigned int типіне түрленеді (5 ереже). Содан соң unsigned long типіне түрленеді (6 ереже). Осы ереже бойыніи unsigned long түріне түрленіп, дөңгелек жакшаға алынған өрі корытындысы unsigned long типін алады. Сосын ол double типіне (ереже 3 түрленеді және бүкіл өрнек корытындысы double типін алады
Терістеу және толыктауыш операциялары
Арифметикалық терістеу операциясы ("-") өз операндасын терісеуінв табады. Операнд бүтін немесе жылжымалы (яғни нақты) шама болуы керек. Орындалу барысында қарапайым арифметикалық түрлендірулер орындалады.
М ы с а л:
int stat=5;
stat=-stat; /* Значение stat является отрицанием 5*/
stat=-12; /* stat присваивается отрицание к 12*/
EMEC ("!") логикалык терістеу операциясы егер операнд ақиқат болса (ноль емес), онда 0 мәнін алады, және егер операнд жалған болса (0), онда 1 мәнін алады. Қорытындысы int типті болады. Операнд бүтін немесе I ылжымалы типті немесе сілтеме типті болуы керек. Мысал: int x=0;
!x өрнегінің корытындысы 1-ге тең (акиқат).
Екілік толықтау операциясы ("~") өз операндасының екілік толықтауын алады. Операнд бүтін типті болуы керек. Қарапайым арифметикалық түрлендірулер жүргізіледі де, қорытынды түрлендіруден кейін операнда типін алады.
М ы с а л:
main ()
{
сhar c='9';
unsigned char cc;
cc=~c;
рrintf("с(символ)=%с\tс(оналтылық) =
%x\n",c,c);
рrintf("~с(символ)=%с\t~с(оналтылық) =
%x\n",cc,cc);
)
Программа орындалу қорытындысы:
с(символ)=9 с(оналтылык)=39
~с(символ)=Ц ~с(оналтылык)=с6
Көбейту операциясы ("*") операндтар көбейтуді шақырады.
М ы с а л д а р:
int a = 5;
float у = 0.2;
double x, z;
х = у * a;
/ * Значения переменных а и у преобразуются к типу double, a затем результат умножения присваивается переменной х * / z = (x-a)*y;
* Значения переменных а и у перед вычислением выражения преобразуются к типу double */
Белу операциясы ("/") бірінші операндты екінші операндқа бөлуді шақырады. Егер екі бүтін сан бүтін бөлінбесе, нәтиже келесі тәртіп бойынша анықталады:
егер операндтар оң мәнді және unsigned типті болса, нәтиже ең жақын кішкентай бүтін санға теңестіріледі;
егер операндтардың біреуі теріс мәнді болса, нөтиже бағыты
(нольден немесе нольге) әр компьютерге сәйкес анықталады
(берілген қарастыруда нольге). Нольге бөлу кезінде қате деген дерек беріледі. М ы с а л:
main ()
int с = 49;
int cc = 10;
printf (%d/%d = %d\n",c,cc,c/(cc));
printf (%d/-%d = %d\n",c,cc,c/(-cc));
}
Программа орындалу корытындысы:
49/10 = 4
49/. 10 = -4
"Бөлуден қалдық" операциясы ("%") бірінші операндты екіншісіне бөлгендегі қалдық нәтижесін береді.
Нәтиже таңбасы белгілі компьютерге тәуелді. Берілген қарастыруда нәтиже таңбасы бірінші операндтың таңбасына сәйкес келеді. Егере екінші операнд нольге тең болса, хабар беріледі. М ы с а л:
main ( )
{
int с = 49;
int cc = 10;
printf ("остаток от деления %d на %d = %d\n",c,cc,c% (cc));
printf ("остаток от деления %d на -%d = %d\n",c,cc,c% (-cc));
printf ("остаток от деления -%d на %d = %d\n",c,cc,(-c)% (cc));
printf ("остаток от деления -%d на -%d = %d\n",c,cc,(-c)% (-cc));
}
Программа орындалу корытындысы: остаток от деления 49 на 10 = 9
остаток от деления 49 на -10 = 9
остаток от деления -49 на 10 = -9
остаток от деления -49 на -10 = -9
Адреетеуді алып тастау және адрестер операііиялары
Бұл операциялар сілтеме типті айнымалылармен жұмыс үшін қолданылады.
*") адрестеуді алып тастау операциясы адрестелген шамаға сілтеме
ылы жанама жетуді қамтамасыз етеді. Операнд сілтеме болу керек.
перация нәтижесі операнд көрсеткен өлшем болып табылады. Нөтиже типі
теме адрестеген шаманың типі болып табылады. Егер сілтемеде кате адрес
болса, нәтиже анықталмайды.
Сілтемеде кате адрес болғандағы кейбір жалпы жағдайларға мыналар жатады:
• сілтеме нольдік болады;
нүсқау кезінде белсенді емес жергілікті объект адресін анықтайтын сілтеме;
