- •Программалау тілдері
- •2.2. Си тілінің қарапайым элементтері
- •2.2.1 Пайдаланылатын символдар си тілінің символдарын бес топқа бөлуге болады.
- •2.2.2 Тілдің қарапайым объектілері
- •Бақылау сұрақтары
- •2.3. Си тіліндегі мәліметтер типтері және енгізу, шығару функциялары
- •2.4. Бүтін сан түріндегі мәліметтерді сипаттау
- •2.4.2. Char типі
- •2.4.3. Float және double жылжымалы нүктелі нақты сандар типтері
- •2.5 Символдық тіркестер (жолдар, қатарлар)
- •2.6. Printf және scanf функциялары
- •Бақылау сұрақтары
- •3. Си тілінде қолданылатын негізгі операторлар
- •3.1. Меншіктеу операторы
- •3.2. Типтерді түрлендіру
- •Int I; float fl;
- •3.3. Программа жұмысын басқару операторлары
- •3.4. Шартты оператор
- •If (шарт)
- •If (шарт)
- •Int r; /* gil-ды 4-ке бөлгендегі қалдық */
- •Int ball;
- •3.4.1 Шартты операция
- •3.5. Switch көп нұсқалы таңдау операторы
- •Бақылау сұрақтары
- •4. Цикл операторлары
- •4.1. For цикл операторы
- •4.2. While операторы
- •4 .3. Do ... While цикл операторы
- •5. Си тілінде массивтерді пайдалану
- •Int index;
- •Void main()
- •Жиымды өңдеу есептерінің түрлері (кластары)
- •Void main()
- •Void main()
- •Int b[10]; //қосымша массив
- •Жиымды сұрыптау (сорттау, реттеу)
- •Жай таңдау жолымен сұрыптау
- •Жай енгізу (кірістіру) тәсілімен сұрыптау
- •Жай алмастыру арқылы сұрыптау
- •Int *iptr;
- •Функциялар арасында байланыс жасау үшін нұсқауыштарды пайдалану
- •Void change (int *u, int *V)
- •Int temp;
- •Int xmin,X[10];
- •6. Екі өлшемді жиымдар
- •Void line()
- •Void line()
- •Екінші типтегі есептер алгоритмдері
- •Void line()
- •Int I,j,jmin,min;
- •Int amin;
- •Бақылау сұрақтары
- •7. Сөз тіркестерін өңдеу
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Сөз тіркестерімен жұмыс істейтін функциялар
- •Көмекші программа. Функцияны пайдалану
- •Int mini(int X, int y)
- •Int maxi(int X, int y)
- •Void lin(char a)
- •Void z1(int *X, int *y)
- •Void z1(int*, int*);
- •Int rus (unsigned char r)
- •Int min_index(int sp[], int ras)
- •Void init(int mas[],int ras);//функцияны сипаттау
- •Жоғарыда қарастырырылған функцияда екі өлшемді жиымның бағаналарының саны тұрақты және ол ауқымды ko айнымалысымен анықталған.
- •Void main(void)
- •Index(s1,s2)
- •Void main(void)
- •Int main()
- •Бақылау сұрақтары
- •Құрылымдарды пайдалану мысалы:
- •Void Vvod(int nom,struct Spisok *sved)
- •Void main(void)
- •Vvod(-1,sved);
- •Int I; clrscr();
- •Void main(void)
- •Int I,j,k,priznak;
- •If(!priznak) break;
- •If(!priznak)break; }
- •Бақылау сұрақтары
- •Void main ()
- •Int pages;
- •Void main()
- •Бақылау сұрақтары
- •11. Графикалық режимде жұмыс істеу
- •Void main ( )
- •Int gmode; //режим аты
- •Int errorcode; // қате коды
- •11.1. Графикалық режим орнату, одан шығу, мәтін жазу, сызық салу функциялары
- •Initgraph(&Driver,&Mode,Path);
- •Initgraph(&Driver,&Mode," ");
- •Экранға мәтін шығару функциясы
- •Экрандағы көрсетілген орынға мәтін шығару функциясы
- •1) Line (x1,y1,x2,y2);
- •2) Lineto (X,y);
- •11.2. Сызық стильдерін беру
- •Int gmode;
- •11.3. Тұйық сызықтар салу
- •Көпбұрыш салу функциясы
- •Int gmode;
- •Іші боялған контурлы эллипс салу функциясы
- •Pieslice(X,y,БұрышБасы,БұрышСоңы,Радиус);
- •Void main ()
- •Void main ( )
- •Void main ()
Void z1(int *X, int *y)
{ int t;
t=*x;
*x=*y;
*y=t;
}
Осы функцияны пайдаланатын (шақыру) программа бөлігі:
int a=2, b=3;
Void z1(int*, int*);
…
printf(“\n a=%d, b=%d”, a, b);
z1(&a, &b);
printf(“\n a=%d, b=%d”, a, b);
…
Мұнда функцияны шақыру кезінде, мәндер өзгеріске ұшырайды, яғни экранға төмендегі мәндер шығарылады:
a=2, b=3
a=3, b=2
2-мысал. unsigned char типті r параметрімен шақырылатын rus функциясы анықталған. Егер функцияның параметрі орыс алфавитінің әрпі болса, бірге тең бүтін мәнді, ал кері жағдайда 0 мәнін шығарады.
Int rus (unsigned char r)
{if (r>='А' && c<=' ')
return 1;
else
return 0;
}
Функциялар өздерін өздері рекурсивті түрде шақыруы да мүмкін.
3-мысал: n!=1*2*3*…*n санының факториалын есептейтін рекурсивті функцияны қарастырайық:
fac(int n)
{
int b;
if (n==1) return 1;
b=fac(n-1)*n;
return n;
}
Функцияны рекурсивті шақыру кезінде ол функцияның жаңа көшірмесі құрылмайды, бұл шақыру жергілікті айнымалылар мен параметрлердің жаңа көшірмелерін құрады. Рекурсивті функциядан шығудың дұрыс жолдарын қарастыру қажет, өйтпеген жағдайда мұндай функциямен жұмыс істеу барысында біраз уақыттан кейін ол “тоқтап қалуы” мүмкін.
Кез келген басқа объектілер сияқты функцияларда да нұсқауышты пайдалануға болады, мысалы, type t, type z параметрлі type типін қайтаратын функциядағы р нұсқауышын келесі түрде сипаттауға болады:
type (*p)(type1 t1, type2 t2);
Айтылғандарды тұжырымдай келе функцияда бір және екі өлшемді жиымдарды (массивтерді) пайдалануды қарастырайық.
Функцияға нақты параметр ретінде бір өлшемді жиымды жіберуге болады, ол үшін жиымның бастапқы (нөлінші) элементінің орнын көрсетсек жеткілікті.
Бір өлшемді жиымды пайдалану мысалы:
Int min_index(int sp[], int ras)
{ int i, mindx, m;
mindx=0;m=sp[mindx];
for(i=0; i<ras; i++)
if(sp[i]<m)
{ m=sp[i]; mindx=i;
};
return(mindx);
}
Бұл жерде Си тілінің артықшылығын айта кеткен жөн. Жоғарыда қарастырылған мысалдан көріп отырғанымыздай, компиляторға өңделіп отырған жиым мөлшерін анық көрсетудің қажеті жоқ. Функция тұлғасында жиымның бастапқы элементінің адресін көрсету жеткілікті. Бір өлшемді жиымды кездейсоқ бүтін сандармен толтыру үшін келесі түрдегі функцияны пайдалануға болады:
Void init(int mas[],int ras);//функцияны сипаттау
{
int k;
for (k=0; k<ras; k++)
mas[k]=rand();
}
Программаның қандай да бір бөлігінде жоғарыда аталған функцияны init(spisok, dlina) түрінде шақырсақ, бір өлшемді ұзындығы dlina болатын spisok жиымының элементтері кездейсоқ мәндерге ие болады. Енді min_index функциясын пайдаланатын программаны қарастырайық:
#include <stdio.h>
#include <conio.h>
#define dlina 150
main()
{int k, list[dlina];
for (k=0; k<dlina; k++)
list[k]=rand();
k= min_index(list, dlina);
printf("list[%3d]=%6d\n",k, list[k]);
}
Функцияның нақты параметрі ретінде екі немесе одан да көп өлшемді жиымдарды да пайдалануға болады.
Екі өлшемді жиымды пайдалану мысалы:
void minit(int matrix[][KO],int str);
{
int i,j;
for (i=0; i<str; i++)
for (j=0; j<KO; j++)
matrix[i][j]= rand();
}
