- •1.Алгоритм, программа ұғымдары. Алгоритм қасиеттері және оларды жазу жолдары. Алгоритмдердің қарапайым типтерін бейнелеу.
- •2. Іздеу алгоритмдерінің типтері және бейнеленуі. Мысал келтіріңіз.
- •3. Сұрыптау алгоритмдерінің түрлері және бейнеленуі. Мысал келтіріңіз.
- •4. С тіліндегі арифметикалық операциялар, қатынас операциялары, инкремент және декремент операцияларын пайдалану.
- •5. С тіліндегі жиым (массив), вектор, матрицаларды пайдалану. Тілдің жиымдарды өңдеу тәсілдері.
- •6. С тілінде нұсқауыштарды пайдалану, оларды жариялау жолдары. Нұсқауыштармен атқарылатын операциялар.
- •Int*iptr;
- •Void change (int *u, int *V)
- •Int temp;
- •7. С программалау тіліндегі тұтынушы функцияларын (ішкі программаларды) сипаттау және анықтау жолдары.
- •8. С программалау тіліндегі мәліметтердің тіркестік (жолдық) типтері және солармен жұмыс істейтін функциялар.
- •9.Программаларда файлдармен жұмыс істеу. Файлды ашу/жабу операторлары, оған мәлімет жазу/оқу тәсілдерін программалау.
- •10. С программалау тіліндегі мәліметтердің динамикалық құрылымдары. Мәліметтердің абстрактылық типтері.
- •10. Динамические структуры данных
2. Іздеу алгоритмдерінің типтері және бейнеленуі. Мысал келтіріңіз.
Іздеу есептерінде берілген шартқа сәйкес келетін элементті іздеп табу керек. Ол үшін жиым элементтерін біртіндеп тізбектей қарастырып отырып шартты тексеріп шығу керек. Осылай ету барысында циклден шығудың екі жолы бар:
Керекті элемент табылғаннан кейін;
Жиым элементтері тегіс қаралып шықты, керекті элемент табылмады.
1-есеп. Берілген к санына тең жиымның алғашқы элементін табу.
Int k;
Printf(“\nK=”);
Scanf(“%i“,&k);
Int ok=0; //элемент табылғаны/табылмағаны белгісі
Int I, nom;
For(i=0;i<n;i++)
If(a[i]==k) {ok=1;nom=i;break;}
If(ok==1) printf(“\nnom=”, nom);
Else printf(“\nk-ға тең элемент жоқ!”);
Бұл есеп жиымды өңдеу есептерінің бірі (4-класс)
While цикл операторы
Шарты алдын ала тексерілетін цикл схемасы:
Оның жазылуы:
While (шарт-өрнек)
{ 1 оператор;
2 оператор;
......
N оператор;
}
Мұнда шарт-өрнекке кіретін айнымалы цикл ішінде өзгеріп отырады
Мысал
/* y=f(x)функциясының мəндерін х х0-ден xk-ға дейін dx қадаммен өзгергендеанықтаукерек*/ қадаммен өзгергенде анықтау керек /
#include <stdio.h>
#include <conio.h>
main ()
{
float x,y,x0,xk,dx;
int k; int n; clrscr();
printf(“x0,xk,dx= “);
scanf("%f%f%f",&x0,&xk,&dx);
printf(----------------------\n);
printf(" x | y\n");
printf("----------------------\n");
x=x0;
x, y
y f(x)
x=x0;
while (x<=xk)
{ y=-2.4*x*x+5*x-3;
printf("%6 2f | %6 2f\n" x y);
x = x + dx
}
printf("----------------------\n");
getch();
}
Do while цикл операторы
Шарты соңынан тексерілетін do … while циклінің схемасы
Жалпы жазылу түрі:
do
{
1-оператор;
2-оператор;
… … …
}
while (өрнек);
Do ... while циклінде шарт соңында тексерілетін болғандықтан, соңында оның тұлғасы ең болмағанда бір рет орындалады. Цикл соңында жазылған while(өрнек) өрнек ақиқат болса (немесе0-ге тең болмаса), цикл тұлғасы қайтадан орындалады Ал өрнек жалған
болса(немесе0-ге тең болса), цикл аяқталады.
// 15 бүтін сандар ішінен олардың максимумын табу
#include <stdio h> #include <stdio.h>
main ()
{
int a, max, i=1;
max = -32000; //max басында ең кіші санға тең болады
do
{
printf(“саненгізіңіз:“); printf( сан енгізіңіз: );
scanf("%d",&a);
if (a > max) max = a; () i++;
}
hil (i15) while (i<=15);
printf(“\n15 санның ең үлкені=%i",max);
getch();
17
getch();
}
3. Сұрыптау алгоритмдерінің түрлері және бейнеленуі. Мысал келтіріңіз.
Сұрыптау-берілген обьектілер жиынын (сандарды) ұсынылған реттілікпен қайта теріп орналастыру процесі.
Жиымдарды сұрыптау жылдамдығы әр түрлі болады. Қарапайым сұрыптау тәсілдері n*n рет салыстыруды керек етеді, мұндағы n- жиым элементтері саны; ал жылдам сұрыптау тәсілі n*ln(n) рет салыстыруды қажет етеді. Қарапайым тәсілдер түсінуге жеңіл, өйткені алгоритмі түсінікті. Күрделі тәсілдер аз әрекеттер санын керек еткенмен, операциялары күрделірек болады, сондықтан элементтер саны аз жиымдарға қарапайым тәсілдерді қолданған дұрыс.
Қарапайым тәсілдер 3 топқа бөлінеді:
Жай таңдау жолымен сұрыптау
Жиымның ең кіші элементі анықталады да, ол бірінші элементпен орын ауыстырады. Қалған элементтермен де осы тәсіл қайталанады.
44 |
55 |
12 |
42 |
94 |
18 |
|
|
минимум |
|
|
|
int I, min, n_min,j;
for(int i=0;i<n-1;i++)
{
min=a[i]; n_min=i; //минимумды іздеу
for(j=i+1;j<n; j++)
if(a[j]< min)
{min=a[j]; n_min=j;}
a[n_min]=a[i]; /алмастыру
a[i]=min;}
Жай енгізу тәсілімен сұрыптау
Жиым элементтері 2-ге –бастапқы тізбекке және дайын тізбекке бөлінеді. Әрбір адымда I=2 нөмірімен бастап берілген тізбектен I-ші элемент алынады да, ол дайын тізбектің керекті жеріне орналастырылады. Мұнан кейін I-ге 1 қосылады да, сол әрекеттер қайталанады.
44 |
55 |
12 |
42 |
94 |
18 |
Дайын тізбек |
Бастапқы тізбек |
Керекті орынды іздеу кезінде оң жақтағы келесі элементпен орын ауыстыру қарастырылады, яғни таңдалып алынған элемент сұрыпталғандардың J=I-1 нөмірінен басталатын кезекті элементімен салыстырылады. Егер таңдалып алынған элемент a[I]-ден артық болса, онда ол сұрыпталғандар ішіне қосылады, әйтпесе a[J] бір орынға ығысады да, таңдалған элемент сұрыпталғандар ішіндегі келесі элементпен салыстырылады. Керекті орынды іздеу әрекеті екі жағдайда:
Егер a[I]> a[J] болатын элемент табылса;
Дайын тізбектің сол жақ шетіне жеткен кезде аяқталады.
Мысалы: int i,j,x;
For(i=1;i<n;i++)
{x=a[i]; //ауысатын элементті есте сақтау
J=i-1;
While(x<a[j]&&j>=0) // керекті орынды іздеу
{a[j+1]=a[j]; // оңға жылжыту
j--;
}
A[j+1]=x; //элементті кірістіріп қою
}
Жай алмастыру тәсілімен сұрыптау
Мұнда ең соңғыдан бастап, екі элемент салыстырылады да, қажет болса, орындары алмастырылады. Осындай әрекет нәтижесінде ең кіші элемент жиымның ең сол жақ шетіне ығысады. Қалған жиым элементтері үшін де осы процесс қайталанады.
44 |
55 |
12 |
42 |
94 |
18 |
for(int i=1;i<n;i++)
for(int j=n-1;j>=I;j--)
if(a[j]<a[j-1])
{int r=a[j];
a[j]=a[j-1];
a[j-1]=r;}