- •Мәтінді форматтау
- •Ақпараттың қолданбалы теориясы
- •3. Алгоритмдік.
- •Idf0,dfd инструменталдық құрылғы
- •Алгоритмдерді жазу жолдары
- •С тіліндегі арифметикалық операциялар, қатынас операциялары, инкремент және декремент операцияларын пайдалану.
- •С программалау тіліндегі мәліметтердің тіркестік (жолдық) типтері және солармен жұмыс істейтін функциялар.
С тіліндегі арифметикалық операциялар, қатынас операциялары, инкремент және декремент операцияларын пайдалану.
Арифметикалық операциялар символдар арқылы жазылады. Си тілінде мынадай операциялар бар: * — көбейту, / — бөлу, % — модуль бойынша бөлу(қалдықты анықтау), + -қосу, — — азайту.
Модуль бойынша бөлу бүтін санды бүтін санға бөлген кездегі қалдықты анықтайды. Мысалы: 20%3=2.
Қатынас операциялары. Қатынас операциялары екі мәнді салыстыру үшін қолданылады. Си тіліндегі қатынас операциясының тізбегі мынадай: ==, !=, <, <=, >, >=.
Егер қарастырылатын қатынас нәтижесі ақиқат болса, шарттық өрнектің мәні 1-ге тең болып саналады. Егер ол жалған болса, шарттық өрнек мәні 0-ге тең болады. Қатынас операциясының приоритеті арифметикалық операцияларға қарағанда, төмен және меншіктеу операторымен салыстырғанда жоғары болады. Ал қатынас операцияларын приоритеттеріне сәйкес етіп екі топқа бөлуге болады. Мұнда соңғы 4 операциясының приоритеті 1-ші және 2-ші операциялар приоритетімен салыстырғанда жоғары болады.
Инкремент және декремент операциялары(арттыру немесе кеміту) ++ және – түрінде жазылады. Бұлар кез келген операндтың мәндерін бірге арттыруға немесе кемітуге мүмкіндік береді.
Инкремент, яғни арттыру операциясы (++) және декремент (—), кеміту операциясы айнымалы (тек айнымалы мәнін) мәнін бірге арттырады немесе кемітеді. Олар айнымалы мәнін өзгертеді, яғни жасырын түрдегі меншіктеу амалы болып табылады. Кейде олар жеке оператор түрінде жазылады:
i++; немесе ++i;
Бұл екеуі де мынадай амалмен бірдей болып саналады i = i + 1;
Бұл екеуін өрнектерде жиі қолданады. Мысалы:
sum = sum +x * —i;
Инкремент пен декремент екі формада жазылады: префистік және постфикстік. Постфикстік арттыру былай жазылады: x++, ал префикстік арттыру былай жазылады: ++x. Префикстік амалдар негізгі операция алдында, ал постфикстік амалдар негізгі амалдан кейін орындалады.
Постфикстік формада x айнымалысының мәні оны қолданғаннан кейін өзгереді, ал префикстік формада – айнымалы мәні оны қолданғанға дейін өзгереді, яғни бір деген санға артады. Мысалы:
k=10;
x=k++; /* x=10 k=11 */
x=++k; /* x=12 k=12 */
Арттыру/кеміту операцияларын өрнек ішінде де орындау мүмкіндігі бар. Мысалы: sum=a+b++;/*алдымен a,b қосылады, сонан соң b 1-ге артады*/
sum=a+ ++b;/*алдымен b 1-ге артады, сосын барып a,b қосылады*/
Арттыру/кеміту операцияларының приоритеттері өте жоғары, тек жақша ішіндегі операциялардың приоритеті олардан жоғары болады.
С тіліндегі жиым (массив), вектор, матрицаларды пайдалану. Тілдің жиымдарды өңдеу тәсілдері.
Массив немесе жиым – бір типтегі элементтердің реттелген жиыны. Олар бір атаумен – идентификатормен аталады да, индексті айнымалы ұғымына сәйкес келеді. Мысалы, мынадай тізбек
0 1 1 2 3 5 8 13 21
Си тілінде осы тізбекке сай жиымды сипаттап, оған бастапқы мән беріп инициалдау үшін былай жазамыз:
int fib[8]={0,1,1,2,3,5,8,13,21};
немесе
int fib[]={0,1,1,2,3,5,8,13,21};
мұндағы fib – жиым аты, оның элементтері типі int, ал ұзындығы – 9, жиым элементтерінің индек-стері 0-ден бастап нөмірленеді, сол себепті 9 элемент 8 индекспен көрсетіледі. Мәндері көрсетілсе, индексті жазбаса да болады.
Жиым элементтерін енгізу/шығару
Жиым элементтерін енгізу немесе оларды түрлендіру үшін цикл операторы қолданылады. Төменде 10 элем-енті бар жиымды 0-ден 9-ға дейінгі сандармен толты-рып, сонан кейін оларды кері бағытта экранға шығару мысалы көрсетілген:
main ()
{int a[10];
int i;
for (i = 0; i<10; i++)
a[i] = i;
for (i = 9; i>=0; i—)
printf(“ %i”, a[i]); }
Екі өлшемді жиымды – матрицаны пайдалану үшін тік жақшалар ішінде олардың екі өлшемініңде көлемін көрсету керек. М: int a[4][3];
Алғашқы сан жолдар саны, ал екінші сан бағандар санын қөрсетеді, a 12 элементтен тұрады. Оларға бастапқы мәнді былай береміз:
int a[4][3]={ {0,1,2},
{3,4,5},
{6,7,8},
{9,10,11} };
Ішкі жүйелі жақшалардыда қоймаса болады:
a[4][3]={0,1,2,3,4,5,6,7,8,9,10,11};
Жиымдарды өңдеу есептерінің түрлері (класстары)
Жиымды өңдеу есептері көбінесе бірыңғайланған 4 түрге бөлінеді.
Есептердің 1-түріне жиым элементтерінің барлығын немесе көрсетілгендерін бірдей бір тәсілмен өңдеу есептері жатады.
Есептердің 2-түріне жиым элементтерінің орналасу реттілігін өзгерту тәсілдері жатады.
Есептердің 3-класына бңрнеше жиымдарды қатар өңдеу немесе бір жиымның ішкі элементтерін бірнеше топқа бөліп жеке-жеке өңдеу тәсілдері жатады. Жиымдар бір тәсілмен- синхрондлы өңделеді немесе әр түрлі тәсілмен – асинхронды түрде өңделеді.
Есептердің 4-класына жиымның берілген санға тең бірінші элементін табу, яғни іздеу есептері жатады.
С тілінде нұсқауыштарды пайдалану, оларды жариялау жолдары. Нұсқауыштармен атқарылатын операциялар.
Нұсқауыш мәліметтердің адресін сақтайтын айнымалы болып табылады. Жалпы алғанда, нұскауыш адрестің символдық кескінделуі болып саналады. Қарастырылатын мысалда &sum-sum атты айнымалыға сілтейтін нұскауыш болып табылады. Нақты алрес ретінде белгілі бір сан тұрады, ал &sum нұскауыш типті константа болып табылады.
Си тілінде нұскауыш типті айнымалылар да бар. Нұскауыш типті айнымалылар мәні болып белгілі бір шаманың адресі саналады.
Мысалы, нұскауыш типті айнымалы ptr идентификаторы арқылы бегіленген болсын, онда төмендегі оператор sum айнымалысының адресін ptr атты нұскауыш типті айнымалыға меншіктейді. Ptr атты нұскауыш типті айнымалы басқа да объектіге сілтеуі мүмкін.
Мысалы:
int *ptr;
Ptr=∑ ptr=& max;
*операциясы- адрес арқылы қатынас жасау үшін пайдаланылатын операция. Мысалы, ptr нұскауыш типті айнымалысында max айнымалысына нұсқайтын сілтеме сақталған болсын. Осы айнымалының мәнін білу үшін * адресі бойынша қатынас жасау операциясын қолдануға болады. Ptr нұскауышы мәнін анықтау үшін келесі оперцияны орындау қажет: res=*ptr;
Нұскауышты сипаттау. Нұсқауыш типті айнымалыны сипаттағанда берілген нұсқауыш қандай типті айнымалыға сілтейтінін көрсету қажет. Өйткені әр түрлі типті айнымалыға ЭЕМ жадында ұялардың әр түрлі саны бөлініп беріледі.
Int*iptr;
Char*cptr;
Float*fptr;
Функциялар арасында байланыс жасау үшін нұсқауыштарды пайдалану
Мысал. Бұл программада айнымалының мәндерін ауыстыру үшін нұсқауыштар пайдаланылған:
#include<stdio.h>
#include<conio.h>
Void change (int *u, int *v)
{
int temp;
temp=*u;*u=*v;*v=temp;}
main()
{int x=5, y=10;
Clrscr();
printf(«x=%d y=%d\n»,x,y);
change(&x,&y);
printf(«x=%d y=%d\n”, x,y);
getch();
}
Нәтижесі
X=5 y=10
X=10 y=5
Нұсқауыштарға қолданылатын операциялар
Си тілінде нұсқауыш типті айнымалыларға 5 негізгі оператор қолдануға болады:
Меншіктеу операциясы. Нұсқауышқа адресті меншіктеуге болады. Жиымның атын қолданып немесе адресті анықтайтын & операторын пайдаланып, әдетте адресті меншіктеуге болады;
Мәнді анықтау. Берілген адрес бойынша кейбір ұяшықта сақталатын мәнді анықтау үшін * операциясы қолданылады;
Нұсқауыштың адресін анықтау. Кез келген айнымалылар сияқты нұсқауыш типті айнымалылар мәні немесе адресі болуы мүмкін. & операциясы арқылы нұсқауыштың адресін анықтауға болады;
Нұсқауыштарды арттыру. Бұл амал әдеттегі + операциясы көмегімен немесе арттыру операциясы арқылы орындалуы мүмкін. Нұсқауышты арттырып, жиымның келесі элементіне өтуге болады (қажет болса, нұсқауыш мәнін кемітуге де болады);
Нұсқауыштардың айырмасы. Бір жиымның элементіне сілтейтін нұсқауыштың айырмасын табуға болады. Жиым элементінің арасындағы ара қашықтығын анықтау үшін нұсқауыштың айырмасын есептеуге болады.
С программалау тіліндегі тұтынушы функцияларын (ішкі программаларды) сипаттау және анықтау жолдары.
Cи тілінде стандартты функцийлармен қатар тұтынушы өзі құрастырған функциялармен де жұмыс істеу мүмкіндігі бар. Ол функцияны алдын ала main функциясыны дейін толық анықтау керек немесе оны алдын ала қысқаша сипаттап алып, main функциясынын кейін толық анықтауға болад. Функция дегеніміз – белгілі бір операциялар тобын атқаратын программа блогы.
Функция мынадай жалпы түрде сипатталады:
[<функция типі>] <функция аты> ([<формальды параметрлер спецификациясы>])
<функция тұлғасы>;
мұндағы [<функция типі>] – функция есептейтін нәтиже типі;
<функцияның аты> – функция идентификаторы, яғни аты;
<формальды параметрлер спецификациясы> – бұл болмауы да мүмкін немесе әрбір параметр спецификациясы: <типі> <параметр аты> – формальды параметр-лердің типтерін және идентификаторларын анықтайды;
<функция тұлғасы> – орындалатын операторлар тізбегі және оның ішінде локальді айнымалының сипатталуы болуы мүмкін.
Функцияны шақыру үшін функцияның аты және жақшада нақты аргументтері көрсетіледі. Функция өз жұ-мысын аяқтағаннан кейін есептелген нәтижені returnоператоры арқылы қайтарады. Бұл оператордың жалпы түрі мынадай:
return(өрнек);
return;
return операторы функцияның орындалуын аяқтайды да, функцияны шақырған оператордан кейінгі жолға басқаруды береді.
Оң бүтін санның факториалын анықтау функциясын былай жазуға болады:
long fakt(int k)
{ if (k<0) return 0;
if (k==0) return 1;
long p=1;
for (int j=1; j<=k;j++)
p*=j;
return (p); }
