Поможем написать учебную работу
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.
Билет №1
1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
2. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
3. Үшбұрыш ауданын тап.
#include<stdio.h>
Void main()
{
Float s,a,h;
Scanf(“%f%f”,&a,&h);
S=1/2(a*h);
Printf(“s=%f\n”,s);
}
Билет №2
1.DO- WHILE циклы операторы
Мүнда шарт цикл соңында тексеріледі. For және do while - да цикл бір рет те орындалмауы мүмкін.
do
{операторлар }
while (өрнек);
Әзір өрнекте берілген шарт орындалғанша,''оператормен'' сипатталған әрекет қайталанады.
while және do…while циклдерінің айырмашылығы, do…while циклін пайдаланған жағдайда, оның құрамына кіретін операторлар міндетті түрде бір рет орындалады.
Мысалы:1:1~100 саның қосындысын шғару .
# include <stdio.h>
main ()
{int i,sum;
i=1;
do{
sum=sum+i;
i++;
} while (i<=100);
printf(“%d\n”,sum);
}
while циклы операторы
Мүнда алдымен шарт тексеріліп, нәтижесі шын болғанда цикл орындалады.
while(өрнек)
{ операторлар; }
Біршама әмбебеп оператор болып табылады. Әзір өрнек нольге тең, болмаса, оператордың (жай немесе құрама) әрекетін қайталап орындайды.
2.Массив бұл бір атауға ие болатын және оперативті жадының ұяшықтарында тізбектей орналасатын бір типтегі элементтердің жиынтығы. c++ программалау тіліндегі массив индекспен анықталатын, алдын-ала белгілі бір типтегі компоненттерден тұрады. Массив бір өлшемді немесе көп өлшемді болуы мүмкін.
Си-де массивтің элементтері әрқашан нөлден басталып нөмерлененеді. Индекс - бүтін айнымалы мен бүтін тұрақтылардан құралған, кез-келген бүтін өрнек болуы мүмкін. Әр цифрларды, бос орынды литерлерді (бос орын , \t табуляциялары және \n жаңа жолдар) және басқа литерлерді жеке есептейтін программаны жазайық. Цифрларды есептеуді массивте сақтаймыз.
# include<stdio.h> /* цифрларды, бос орындарды және басқа литерлерді есептеу */
main ()
{ int c, i, nwhite, nother;
int ndigit [10];
nwhite=nother=0;
for (i=0; i<10; i++) ndigit [i]=0;
while ((c=getchar())!=EOF)
if (c>=0 && c<=9) // литер цифр болып табылады ма?
++ndigit [c-0];
else if (c = = ¦ ¦ c = = \n ¦ ¦ c = = \t) ++nwhite;
else ++nother;
printf (“цифры = ”);
for (i=0; i<10; i++)
printf (“%d”, ndigit [i]);
printf (“, пробелы=%d,прочие =%d\n”, nwhite, nother);
3. Бөшкенің бүйір бетінің ауданын () және көлемін (v=) тап. Биіктігі h пен радиусы r белгілі.
#define pi 3.14
#include<stdio.h>
Void main()
{
Float s,r,h;
Scanf(“%f%f”,&r,&h);
S=2*pi*r*h;
V=pi*r*r*h;
Printf(“s=%f,v=%f\n”,s,v);
}
Билет №3
1. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
2.Айнымалыларды сипаттауС-де барлыќ айнымалылар ќолдануға дейін сипатталуы тиіс. Негізгі 5 типі бар:
1.char- символды.
2.int-бүтін.
3.float-жылжымалы нүктелі.
4.double-2 ece үзындыќтағы жылжымалы нүктелі.
5.void-бос, мәнсіз.
Int- бүтін. Бұл типтің мәні, мына диапазонмен (-32768-ден 32767) шектелген бүтін сандар. Диапазон типке арналған ұяшыќтардың Өлшемімен аныќталады және наќты компьютерге байланысты. Бұдан басќа int типімен бірге ќолданылатын ќызметші сөздер бар: short int, unsigned int, long int бұлар сандар диапазонын ќысќартады немесе ұзартады.
Char-символдыќ, Бұл тип үшін мүмкін мән бір символ. Символ апострофта жазылады. Компьютердің жадында символ бір байт ќана орын алады. Жадыда символ саќталмайды, ал сан- символ коды саќталады.Арнайы таблицаларда барлыќ мүмкін символдар және оларға сәйкес кодтар кӘрсетіледі.
Си тілінде char типін сандыќ түрде ќолдануға болады, ол үшін жаќшадағы бүтін (int) спецификаторын ќолданамыз.
Float- заттыќ тип. Бұл типтің мәні- сан, біраќ char және int типтерінен айырмашылығы, бұл тек бүтін емес.
Double-екі есе наќты заттыќ сандар.Бұл тип float типіне аналогты, біраќ ұлкен диапазондағы мәндерді ќабылдайды.
char, int бүтін типтер, бұлар бүтін сандарды саќтауға арналған. float, double - жылжымалы нүктелі сандар. Осы 5 типтің негізінде Өзге типтер жасалынады, ол үшін модификаторлар ќолданады.
3. Дене g жылдамдықпен құлайды. Дененің өткен жолын (h=gt2/2) анықта.
#define g 9.8
#include<stdio.h>
Void main()
{
Float h,t;
Scanf(“%f”,t);
H=(g*t*t)/2;
Printf(“h=%f\n”,h);
}
Билет №4
1. FOR циклы операторы- циклы операторының жазылу формасы
for (инициялизациялау; шарт тексеру; өзгеру) операторлар;
Жалпы түрі.
For (өрнекі; өрнек2; өрнекЗ) операторлар,
Инициализациялау цикл параметріне алғашқы мән беру үшін қолданылады.
Шарт тексеру - циклды аяқтау үшін қолданылатын шартты өрнек.
Өзгеру - параметр мәнін өзгерту үшін керек. Шарт мәні шын болған кезде цикл орындалады.
Мысалы
for(i=0;i<10; i++) printf("% d\n",i); цикл параметрі тек бүтін болуы шарт емес. Циклды үзу үшін breakоператоры қолданылады.
Мысалы:1~100 саның қосындысын шғару .
# include<stdio.h>
main ()
{int i,sum;
sum=0;
for(i=1;i<=100;i++)
sum=sum+i;
printf(“%d”,sum);
}
2.Массив бұл бір атауға ие болатын және оперативті жадының ұяшықтарында тізбектей орналасатын бір типтегі элементтердің жиынтығы. c++ программалау тіліндегі массив индекспен анықталатын, алдын-ала белгілі бір типтегі компоненттерден тұрады. Массив бір өлшемді немесе көп өлшемді болуы мүмкін.
Си-де массивтің элементтері әрқашан нөлден басталып нөмерлененеді. Индекс - бүтін айнымалы мен бүтін тұрақтылардан құралған, кез-келген бүтін өрнек болуы мүмкін. Әр цифрларды, бос орынды литерлерді (бос орын , \t табуляциялары және \n жаңа жолдар) және басқа литерлерді жеке есептейтін программаны жазайық. Цифрларды есептеуді массивте сақтаймыз.
# include<stdio.h> /* цифрларды, бос орындарды және басқа литерлерді есептеу */
main ()
{ int c, i, nwhite, nother;
int ndigit [10];
nwhite=nother=0;
for (i=0; i<10; i++) ndigit [i]=0;
while ((c=getchar())!=EOF)
if (c>=0 && c<=9) // литер цифр болып табылады ма?
++ndigit [c-0];
else if (c = = ¦ ¦ c = = \n ¦ ¦ c = = \t) ++nwhite;
else ++nother;
printf (“цифры = ”);
for (i=0; i<10; i++)
printf (“%d”, ndigit [i]);
printf (“, пробелы=%d,прочие =%d\n”, nwhite, nother);
3. Бөшкенің бүйір бетінің ауданын () және көлемін (v=) тап. Биіктігі h пен радиусы r белгілі.
#define pi 3.14
#include<stdio.h>
Void main()
{
Float s,r,h;
Scanf(“%f%f”,&r,&h);
S=2*pi*r*h;
V=pi*r*r*h;
Printf(“s=%f,v=%f\n”,s,v);
}
Билет №5
1. FOR циклы операторы- циклы операторының жазылу формасы
for (инициялизациялау; шарт тексеру; өзгеру) операторлар;
Жалпы түрі.
For (өрнекі; өрнек2; өрнекЗ) операторлар,
Инициализациялау цикл параметріне алғашқы мән беру үшін қолданылады.
Шарт тексеру - циклды аяқтау үшін қолданылатын шартты өрнек.
Өзгеру - параметр мәнін өзгерту үшін керек. Шарт мәні шын болған кезде цикл орындалады.
Мысалы
for(i=0;i<10; i++) printf("% d\n",i); цикл параметрі тек бүтін болуы шарт емес. Циклды үзу үшін breakоператоры қолданылады.
DO- WHILE циклы операторы
Мүнда шарт цикл соңында тексеріледі. For және do while - да цикл бір рет те орындалмауы мүмкін.
do
{операторлар }
while (өрнек);
Әзір өрнекте берілген шарт орындалғанша,''оператормен'' сипатталған әрекет қайталанады.
while және do…while циклдерінің айырмашылығы, do…while циклін пайдаланған жағдайда, оның құрамына кіретін операторлар міндетті түрде бір рет орындалады.
Мысалы:1:1~100 саның қосындысын шғару .
# include <stdio.h>
main ()
{int i,sum;
i=1;
do{
sum=sum+i;
i++;
} while (i<=100);
printf(“%d\n”,sum);
}
while циклы операторы
Мүнда алдымен шарт тексеріліп, нәтижесі шын болғанда цикл орындалады.
while(өрнек)
{ операторлар; }
Біршама әмбебеп оператор болып табылады. Әзір өрнек нольге тең, болмаса, оператордың (жай немесе құрама) әрекетін қайталап орындайды.
2.Айнымалыларды сипаттауС-де барлыќ айнымалылар ќолдануға дейін сипатталуы тиіс. Негізгі 5 типі бар:
1.char- символды.
2.int-бүтін.
3.float-жылжымалы нүктелі.
4.double-2 ece үзындыќтағы жылжымалы нүктелі.
5.void-бос, мәнсіз.
Int- бүтін. Бұл типтің мәні, мына диапазонмен (-32768-ден 32767) шектелген бүтін сандар. Диапазон типке арналған ұяшыќтардың Өлшемімен аныќталады және наќты компьютерге байланысты. Бұдан басќа int типімен бірге ќолданылатын ќызметші сөздер бар: short int, unsigned int, long int бұлар сандар диапазонын ќысќартады немесе ұзартады.
Char-символдыќ, Бұл тип үшін мүмкін мән бір символ. Символ апострофта жазылады. Компьютердің жадында символ бір байт ќана орын алады. Жадыда символ саќталмайды, ал сан- символ коды саќталады.Арнайы таблицаларда барлыќ мүмкін символдар және оларға сәйкес кодтар кӘрсетіледі.
Си тілінде char типін сандыќ түрде ќолдануға болады, ол үшін жаќшадағы бүтін (int) спецификаторын ќолданамыз.
Float- заттыќ тип. Бұл типтің мәні- сан, біраќ char және int типтерінен айырмашылығы, бұл тек бүтін емес.
Double-екі есе наќты заттыќ сандар.Бұл тип float типіне аналогты, біраќ ұлкен диапазондағы мәндерді ќабылдайды.
char, int бүтін типтер, бұлар бүтін сандарды саќтауға арналған. float, double - жылжымалы нүктелі сандар. Осы 5 типтің негізінде Өзге типтер жасалынады, ол үшін модификаторлар ќолданады.
3. Поезд t1 сағаты v1жылдамдықпен, t2 сағаты v2жылдамдықпен, t3 сағаты v3 жылдамдықпен жүрген. әр жылдамдықпен жүрген жолдың ұзындығын және жалпы жүрілген жолды анықта.
#include<stdio.h>
void main ()
{
float s1,s2,s3,v,t1,t2,t3,v1,v2,v3;
scanf("%f%f%f%f%f%f",&t1,&v1,&t2,&v2,&t3,&v3);
s1=t1*v1; s2=t2*v2; s3=t3*v3;
v=(v1+v2+v3)/3;
printf("s1=%f,s2=%f,s3=%f,v=%f\n",s1,s2,s3,v);
}
Билет №6
1.Функциялар бұл Си-дің берік қәрастырылуы, алға қойылған есептерімен немесе олардың бұліктерінің шешімдерімен байланысты. Функциялар үлкен есептеулердегі есептерді ұсақтарға бөледі және құрылған программаны қайтып «нөлден» бастамай, басқа жасаушылармен жасалғандарды пайданлануға мүмкіндік береді. Осы түрде таңдалған функцияларда «тығылған» (ипкапсуляцияланған), олардың функционалдануының бөлшектері программаның басқа бөлімдері үшін болмайды, бұл программаны жалпы түсініктірек және оған өзгерістерді енгізуді жеңілдетеді.
Егер функцияның нәтижесінің типі өткізіліп алынған болса, онда ол int типіндегі мәнді қайтарады деп шамалайды.
Бүтін емес мәндерді қайтаратын функциялар, біріншіден осы жөнінде қайтаратын мәннің типі арқылы декларациялануы қажет. Сонымен қатар, шақырушы программа шақырылатын функция бүтін емес мәнді қайтаратынын білу маңызды. Бұны қамтамасыз ететін тәсілдердің бірі шақыратын функцияларда шақырылатынды оның сипаттауы керек.
2.Массив бұл бір атауға ие болатын және оперативті жадының ұяшықтарында тізбектей орналасатын бір типтегі элементтердің жиынтығы. c++ программалау тіліндегі массив индекспен анықталатын, алдын-ала белгілі бір типтегі компоненттерден тұрады. Массив бір өлшемді немесе көп өлшемді болуы мүмкін.
Си-де массивтің элементтері әрқашан нөлден басталып нөмерлененеді. Индекс - бүтін айнымалы мен бүтін тұрақтылардан құралған, кез-келген бүтін өрнек болуы мүмкін. Әр цифрларды, бос орынды литерлерді (бос орын , \t табуляциялары және \n жаңа жолдар) және басқа литерлерді жеке есептейтін программаны жазайық. Цифрларды есептеуді массивте сақтаймыз.
# include<stdio.h> /* цифрларды, бос орындарды және басқа литерлерді есептеу */
main ()
{ int c, i, nwhite, nother;
int ndigit [10];
nwhite=nother=0;
for (i=0; i<10; i++) ndigit [i]=0;
while ((c=getchar())!=EOF)
if (c>=0 && c<=9) // литер цифр болып табылады ма?
++ndigit [c-0];
else if (c = = ¦ ¦ c = = \n ¦ ¦ c = = \t) ++nwhite;
else ++nother;
printf (“цифры = ”);
for (i=0; i<10; i++)
printf (“%d”, ndigit [i]);
printf (“, пробелы=%d,прочие =%d\n”, nwhite, nother);
3.Кез-келген N бүтін санындағы массивтегі ең кіші мәнді және рет нөмерін табатын программа құр.
#include<iostream.h>
#define N 8
void main ()
{
int a[N],i,min;
for(i=0;i<N;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(i=0;i<N;i++)
{
cout<<a[i]<<" ";
}
min=0;
for(i=0;i<N;i++)
if(a[i]<a[min])
min=i;
cout<<"min:"<<"a["<<min<<"]="<<a[min]<<endl;
}
Билет №7
1. Цикл операторлары бірнеше рет қайталанып орындалатын есептеулерді ұйыдастыру үшін қолданылады.Кез келген цикл оның тұлғасынан,яғни бірнеше рет қайталанатын оператор тізбегінен,бастапқы берілген мәндерді тағайындаудан,цикл параметірінің өзеруінен және цикл қайталануын жалғастыру шартын тексеруден тұрады.
Циклдың бір рет орындалуы қадам деп аталады.Шар әрбір қадам сайын тексеріліп отырады .
Цикл тұлғасында өзгерілетін және оны қайталау шартын тексеруде қолданылатын айнымалылар цикл параметрлері деп аталады.
Егер циклды жалғастыру керек болмаса оны тоқтату үшін break,continue,return және goto операторлары қолданылады. 3 түрлі цикл операторлары бар:
l.for; 2.while; 3. do-while
Барлық циклдық операторлардың келесі ерекшелігі бар:
а) Қайталанатын операторлар ( циклдің денесі ) бір ақ рет жазылады;
ә) Циклге тек қана басынан ( тақырыбы ) ғана кіруге болады;
б) Циклің айнымалылары алдын ала циклге дейін анықталуы тиіс;
в) Цикл денесінде көшу операторын ( Goto ) қолданып программаның басқа бөліктеріне шығуға болады.
д) Цикл ұйымдастырғанда, міндетті түрде циклден шығу шарты орындалатынын қарастыру керек, әйтпесе программа орындалуы циклге келгенде тоқтап тұрып қалады ( программа «мәңгі циклденіп» қалады ).
2.Массив бұл бір атауға ие болатын және оперативті жадының ұяшықтарында тізбектей орналасатын бір типтегі элементтердің жиынтығы. c++ программалау тіліндегі массив индекспен анықталатын, алдын-ала белгілі бір типтегі компоненттерден тұрады. Массив бір өлшемді немесе көп өлшемді болуы мүмкін.
Си-де массивтің элементтері әрқашан нөлден басталып нөмерлененеді. Индекс - бүтін айнымалы мен бүтін тұрақтылардан құралған, кез-келген бүтін өрнек болуы мүмкін. Әр цифрларды, бос орынды литерлерді (бос орын , \t табуляциялары және \n жаңа жолдар) және басқа литерлерді жеке есептейтін программаны жазайық. Цифрларды есептеуді массивте сақтаймыз.
# include<stdio.h> /* цифрларды, бос орындарды және басқа литерлерді есептеу */
main ()
{ int c, i, nwhite, nother;
int ndigit [10];
nwhite=nother=0;
for (i=0; i<10; i++) ndigit [i]=0;
while ((c=getchar())!=EOF)
if (c>=0 && c<=9) // литер цифр болып табылады ма?
++ndigit [c-0];
else if (c = = ¦ ¦ c = = \n ¦ ¦ c = = \t) ++nwhite;
else ++nother;
printf (“цифры = ”);
for (i=0; i<10; i++)
printf (“%d”, ndigit [i]);
printf (“, пробелы=%d,прочие =%d\n”, nwhite, nother);
3.Кез-келген N бүтін санындағы массивтегі max мәнін және рет нөмерін табатын программа құр.
#include<iostream.h>
#define N 5
void main ()
{
int a[N],i,max;
for(i=0;i<N;i++)
{
cout<<"a["<<i<<"]=";
cin>>a[i];
}
for(i=0;i<N;i++)
{
cout<<a[i]<<" ";
}
max=0;
for(i=0;i<N;i++)
if(a[i]>a[max])
max=i;
cout<<"max="<<"a["<<max<<"]="<<a[max]<<endl;
}
Билет №8
1. Параметрлі айнымалысанды функциялар.
Егер функцияның формалды парамерлерінің тізімі көп нүктемен аяқталса, оны шықырған кезде осы жерде тағы бірнеше параметр көрсетуге болатының білдіреді. Бұл параметрлер үшін типтердің сәйкестңгңн тексеру орындалмады, char және short типтері int ретінде,ал float типі doubleретінде беріледі. мысал ретінде printf функциясын келтіруге болады, оның прототипі келесі түрде береледі:
Int printf (const char*,…);
Жоғарыдағы мысал функцияны шақыру кезңнде кем бір char* типті парамерт болуын және басқа параметрлердің болуы немесе болмауы мүмкін екендігін көрсетеді.
Printf (“бастапқы мәліметтерді енгізініз”); //бір параметр
Printf(“қосынды; &5.2f теңге “ , sum); //екі парамер
Printf(“&d &d &d”,a ,b, c, d); //бес параметр
Функция ішіндегі міндетті емес параметрлерге қол жеткізу үшін stdarg.h> тақырыптық файлында орналасқан va_start, va_arg және va_end кітапхана макростары қолданылады.
2. Цикл операторлары бірнеше рет қайталанып орындалатын есептеулерді ұйыдастыру үшін қолданылады.Кез келген цикл оның тұлғасынан,яғни бірнеше рет қайталанатын оператор тізбегінен,бастапқы берілген мәндерді тағайындаудан,цикл параметірінің өзеруінен және цикл қайталануын жалғастыру шартын тексеруден тұрады.
Циклдың бір рет орындалуы қадам деп аталады.Шар әрбір қадам сайын тексеріліп отырады .
Цикл тұлғасында өзгерілетін және оны қайталау шартын тексеруде қолданылатын айнымалылар цикл параметрлері деп аталады.
Егер циклды жалғастыру керек болмаса оны тоқтату үшін break,continue,return және goto операторлары қолданылады. 3 түрлі цикл операторлары бар:
l.for; 2.while; 3. do-while
Барлық циклдық операторлардың келесі ерекшелігі бар:
а) Қайталанатын операторлар ( циклдің денесі ) бір ақ рет жазылады;
ә) Циклге тек қана басынан ( тақырыбы ) ғана кіруге болады;
б) Циклің айнымалылары алдын ала циклге дейін анықталуы тиіс;
в) Цикл денесінде көшу операторын ( Goto ) қолданып программаның басқа бөліктеріне шығуға болады.
д) Цикл ұйымдастырғанда, міндетті түрде циклден шығу шарты орындалатынын қарастыру керек, әйтпесе программа орындалуы циклге келгенде тоқтап тұрып қалады ( программа «мәңгі циклденіп» қалады ).
3.Экранға 1 ден 9 ға дейінгі көбейту таблицасын шығаратын таблица құр.
#include<stdio.h>
void main()
{
inti,j;
int a[10][10];
for(i=1;i<10;i++)
for(j=1;j<10;j++)
a[i][j]=i*j;
for(i=1;i<10;i++)
{
for(j=1;j<10;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}
Билет №9
1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
2.Функциялар бұл Си-дің берік қәрастырылуы, алға қойылған есептерімен немесе олардың бұліктерінің шешімдерімен байланысты. Функциялар үлкен есептеулердегі есептерді ұсақтарға бөледі және құрылған программаны қайтып «нөлден» бастамай, басқа жасаушылармен жасалғандарды пайданлануға мүмкіндік береді. Осы түрде таңдалған функцияларда «тығылған» (ипкапсуляцияланған), олардың функционалдануының бөлшектері программаның басқа бөлімдері үшін болмайды, бұл программаны жалпы түсініктірек және оған өзгерістерді енгізуді жеңілдетеді.
Егер функцияның нәтижесінің типі өткізіліп алынған болса, онда ол int типіндегі мәнді қайтарады деп шамалайды.
Бүтін емес мәндерді қайтаратын функциялар, біріншіден осы жөнінде қайтаратын мәннің типі арқылы декларациялануы қажет. Сонымен қатар, шақырушы программа шақырылатын функция бүтін емес мәнді қайтаратынын білу маңызды. Бұны қамтамасыз ететін тәсілдердің бірі шақыратын функцияларда шақырылатынды оның сипаттауы керек.
3.Экранға 1 ден 8 ға дейінгі көбейту таблицасын шығаратын таблица құр.
{
inti,j;
int a[9][9];
for(i=1;i<9;i++)
for(j=1;j<9;j++)
a[i][j]=i*j;
for(i=1;i<9;i++)
{
for(j=1;j<9;j++)
printf(" %d",a[i][j]);
printf("\n");
}
}
Билет №10
1.Файлдан оқу немесе файлға жазу үшін ол әрі қарай файлға қатынас жасау үшін қолданылған көрсеткішті қайтаратын, библиотекалық fopen функциясының көмегімен алдын-ала ашылуы керек.
Файлдың көрсеткіші деп аталатын бұл көрсеткіш, файл туралы ақпараттан (буфер адресі, буфердегі ағымдық литердің жағдайы, файл оқуға немесе жазуға ашық па, файлмен жұмыс істеуде қате бар ма және файлдың соңы кездестіме) тұратын құрылымға жіберіледі. <stdio.h>-тан алынған анықтамалар FILE деп аталатын құрылымның сипаттамасын қосатын болғандықтан, қолданушыға толығымен білу керек емес. Тек қана файл көрсеткішін анықтау үшін талап етілетін бұл келесі түрдегі декларацияны беру:
FILE * fp;
FILE * fopen(char*name, char* mode);
Файлдан оқу мен файлға жазудың бірнеше тәсілдері бар. Ең қарапайымы getc және putc функцияларын қолдану. int getc ( FILE*fp) функциясы с литерін *fp файылына жазады және қате болған жағдайда, жазылған литерді немесе EOF-ті қайтарады.
Файлдардың форматты енгізу-шығаруын scanf және printf функцияларында тұрғызуға болады. Олар scanf және printf-тің, олардың бірінші аргументі файлға көрсеткіш болып табылатын айырмашылығымен ұқсас
int fscanf( FILE*fp, char * format,…)
int fprintf( FILE*fp, char * format,…)
2. Параметрлі айнымалысанды функциялар.
Егер функцияның формалды парамерлерінің тізімі көп нүктемен аяқталса, оны шықырған кезде осы жерде тағы бірнеше параметр көрсетуге болатының білдіреді. Бұл параметрлер үшін типтердің сәйкестңгңн тексеру орындалмады, char және short типтері int ретінде,ал float типі doubleретінде беріледі. мысал ретінде printf функциясын келтіруге болады, оның прототипі келесі түрде береледі:
Int printf (const char*,…);
Жоғарыдағы мысал функцияны шақыру кезңнде кем бір char* типті парамерт болуын және басқа параметрлердің болуы немесе болмауы мүмкін екендігін көрсетеді.
Printf (“бастапқы мәліметтерді енгізініз”); //бір параметр
Printf(“қосынды; &5.2f теңге “ , sum); //екі парамер
Printf(“&d &d &d”,a ,b, c, d); //бес параметр
Функция ішіндегі міндетті емес параметрлерге қол жеткізу үшін stdarg.h> тақырыптық файлында орналасқан va_start, va_arg және va_end кітапхана макростары қолданылады.
3.Ай нөмерін енгіз. Қай жыл мезгіліне жататынын шығар.
#include<stdio.h>
#include<conio.h>
void main()
{
int m;
puts("\n Ai nomirin engiz(1..12)");
printf("->");
scanf("%x",&m);
switch(m)
{
case 1:puts("January, season_Winter"); break;
case 2:puts("February, season_Winter"); break;
case 3:puts("March, season_Spring"); break;
case 4:puts("April, season_Spring"); break;
case 5:puts("May, season_Spring"); break;
case 6:puts("June, season_Summer"); break;
case 7:puts("July, season_Summer"); break;
case 8:puts("August, season_Summer"); break;
case 9:puts("September, season_Autumn"); break;
case 10:puts("October, season_Autumn"); break;
case 11:puts("November, season_Autumn"); break;
case 12:puts("December, season_Winter"); break;
default:puts("San 1..12 diapasonda bolu kerek!");
}
getch();
}
Билет №11
1.Массив бұл бір атауға ие болатын және оперативті жадының ұяшықтарында тізбектей орналасатын бір типтегі элементтердің жиынтығы. c++ программалау тіліндегі массив индекспен анықталатын, алдын-ала белгілі бір типтегі компоненттерден тұрады. Массив бір өлшемді немесе көп өлшемді болуы мүмкін.
Си-де массивтің элементтері әрқашан нөлден басталып нөмерлененеді. Индекс - бүтін айнымалы мен бүтін тұрақтылардан құралған, кез-келген бүтін өрнек болуы мүмкін. Әр цифрларды, бос орынды литерлерді (бос орын , \t табуляциялары және \n жаңа жолдар) және басқа литерлерді жеке есептейтін программаны жазайық. Цифрларды есептеуді массивте сақтаймыз.
# include<stdio.h> /* цифрларды, бос орындарды және басқа литерлерді есептеу */
main ()
{ int c, i, nwhite, nother;
int ndigit [10];
nwhite=nother=0;
for (i=0; i<10; i++) ndigit [i]=0;
while ((c=getchar())!=EOF)
if (c>=0 && c<=9) // литер цифр болып табылады ма?
++ndigit [c-0];
else if (c = = ¦ ¦ c = = \n ¦ ¦ c = = \t) ++nwhite;
else ++nother;
printf (“цифры = ”);
for (i=0; i<10; i++)
printf (“%d”, ndigit [i]);
printf (“, пробелы=%d,прочие =%d\n”, nwhite, nother);
2.Айнымалыларды сипаттауС-де барлыќ айнымалылар ќолдануға дейін сипатталуы тиіс. Негізгі 5 типі бар:
1.char- символды.
2.int-бүтін.
3.float-жылжымалы нүктелі.
4.double-2 ece үзындыќтағы жылжымалы нүктелі.
5.void-бос, мәнсіз.
Int- бүтін. Бұл типтің мәні, мына диапазонмен (-32768-ден 32767) шектелген бүтін сандар. Диапазон типке арналған ұяшыќтардың Өлшемімен аныќталады және наќты компьютерге байланысты. Бұдан басќа int типімен бірге ќолданылатын ќызметші сөздер бар: short int, unsigned int, long int бұлар сандар диапазонын ќысќартады немесе ұзартады.
Char-символдыќ, Бұл тип үшін мүмкін мән бір символ. Символ апострофта жазылады. Компьютердің жадында символ бір байт ќана орын алады. Жадыда символ саќталмайды, ал сан- символ коды саќталады.Арнайы таблицаларда барлыќ мүмкін символдар және оларға сәйкес кодтар кӘрсетіледі.
Си тілінде char типін сандыќ түрде ќолдануға болады, ол үшін жаќшадағы бүтін (int) спецификаторын ќолданамыз.
Float- заттыќ тип. Бұл типтің мәні- сан, біраќ char және int типтерінен айырмашылығы, бұл тек бүтін емес.
Double-екі есе наќты заттыќ сандар.Бұл тип float типіне аналогты, біраќ ұлкен диапазондағы мәндерді ќабылдайды.
char, int бүтін типтер, бұлар бүтін сандарды саќтауға арналған. float, double - жылжымалы нүктелі сандар. Осы 5 типтің негізінде Өзге типтер жасалынады, ол үшін модификаторлар ќолданады.
3.X Бір өлшемдімассив элементтерінің қосындысын, олардың санын шғару.
#include<stdio.h>
#define X 10
void main()
{
inti,a[X];
long s=0;
for(i=0;i<X;i++)
scanf("%d",&a[i]);
for(i=0;i<X;i++)
s=s+a[i];
printf("s=%ld\t",s);
for(i=0;i<X;i++)
printf("%d ",a[i]);
}
Билет №12
1. Параметрлі айнымалысанды функциялар.
Егер функцияның формалды парамерлерінің тізімі көп нүктемен аяқталса, оны шықырған кезде осы жерде тағы бірнеше параметр көрсетуге болатының білдіреді. Бұл параметрлер үшін типтердің сәйкестңгңн тексеру орындалмады, char және short типтері int ретінде,ал float типі doubleретінде беріледі. мысал ретінде printf функциясын келтіруге болады, оның прототипі келесі түрде береледі:
Int printf (const char*,…);
Жоғарыдағы мысал функцияны шақыру кезңнде кем бір char* типті парамерт болуын және басқа параметрлердің болуы немесе болмауы мүмкін екендігін көрсетеді.
Printf (“бастапқы мәліметтерді енгізініз”); //бір параметр
Printf(“қосынды; &5.2f теңге “ , sum); //екі парамер
Printf(“&d &d &d”,a ,b, c, d); //бес параметр
Функция ішіндегі міндетті емес параметрлерге қол жеткізу үшін stdarg.h> тақырыптық файлында орналасқан va_start, va_arg және va_end кітапхана макростары қолданылады.
2.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
3. .
#include<stdio.h>
void main()
{
inti;
long float t=1, sum=0;
for(i=1;i<=4;i++)
scanf("%d",&i);
for(i=1;i<=4;i++)
{
t=1;
t=1/(2*t*i);
sum=sum+t;
}
printf("sum=%lf",sum);
}
Билет №13
1.Айнымалыларды сипаттауС-де барлыќ айнымалылар ќолдануға дейін сипатталуы тиіс. Негізгі 5 типі бар:
1.char- символды.
2.int-бүтін.
3.float-жылжымалы нүктелі.
4.double-2 ece үзындыќтағы жылжымалы нүктелі.
5.void-бос, мәнсіз.
Int- бүтін. Бұл типтің мәні, мына диапазонмен (-32768-ден 32767) шектелген бүтін сандар. Диапазон типке арналған ұяшыќтардың Өлшемімен аныќталады және наќты компьютерге байланысты. Бұдан басќа int типімен бірге ќолданылатын ќызметші сөздер бар: short int, unsigned int, long int бұлар сандар диапазонын ќысќартады немесе ұзартады.
Char-символдыќ, Бұл тип үшін мүмкін мән бір символ. Символ апострофта жазылады. Компьютердің жадында символ бір байт ќана орын алады. Жадыда символ саќталмайды, ал сан- символ коды саќталады.Арнайы таблицаларда барлыќ мүмкін символдар және оларға сәйкес кодтар кӘрсетіледі.
Си тілінде char типін сандыќ түрде ќолдануға болады, ол үшін жаќшадағы бүтін (int) спецификаторын ќолданамыз.
Float- заттыќ тип. Бұл типтің мәні- сан, біраќ char және int типтерінен айырмашылығы, бұл тек бүтін емес.
Double-екі есе наќты заттыќ сандар.Бұл тип float типіне аналогты, біраќ ұлкен диапазондағы мәндерді ќабылдайды.
char, int бүтін типтер, бұлар бүтін сандарды саќтауға арналған. float, double - жылжымалы нүктелі сандар. Осы 5 типтің негізінде Өзге типтер жасалынады, ол үшін модификаторлар ќолданады.
2.Файлдан оқу немесе файлға жазу үшін ол әрі қарай файлға қатынас жасау үшін қолданылған көрсеткішті қайтаратын, библиотекалық fopen функциясының көмегімен алдын-ала ашылуы керек.
Файлдың көрсеткіші деп аталатын бұл көрсеткіш, файл туралы ақпараттан (буфер адресі, буфердегі ағымдық литердің жағдайы, файл оқуға немесе жазуға ашық па, файлмен жұмыс істеуде қате бар ма және файлдың соңы кездестіме) тұратын құрылымға жіберіледі. <stdio.h>-тан алынған анықтамалар FILE деп аталатын құрылымның сипаттамасын қосатын болғандықтан, қолданушыға толығымен білу керек емес. Тек қана файл көрсеткішін анықтау үшін талап етілетін бұл келесі түрдегі декларацияны беру:
FILE * fp;
FILE * fopen(char*name, char* mode);
Файлдан оқу мен файлға жазудың бірнеше тәсілдері бар. Ең қарапайымы getc және putc функцияларын қолдану. int getc ( FILE*fp) функциясы с литерін *fp файылына жазады және қате болған жағдайда, жазылған литерді немесе EOF-ті қайтарады.
Файлдардың форматты енгізу-шығаруын scanf және printf функцияларында тұрғызуға болады. Олар scanf және printf-тің, олардың бірінші аргументі файлға көрсеткіш болып табылатын айырмашылығымен ұқсас
int fscanf( FILE*fp, char * format,…)
int fprintf( FILE*fp, char * format,…)
3.jok
Билет №14
1.Файлдан оқу немесе файлға жазу үшін ол әрі қарай файлға қатынас жасау үшін қолданылған көрсеткішті қайтаратын, библиотекалық fopen функциясының көмегімен алдын-ала ашылуы керек.
Файлдың көрсеткіші деп аталатын бұл көрсеткіш, файл туралы ақпараттан (буфер адресі, буфердегі ағымдық литердің жағдайы, файл оқуға немесе жазуға ашық па, файлмен жұмыс істеуде қате бар ма және файлдың соңы кездестіме) тұратын құрылымға жіберіледі. <stdio.h>-тан алынған анықтамалар FILE деп аталатын құрылымның сипаттамасын қосатын болғандықтан, қолданушыға толығымен білу керек емес. Тек қана файл көрсеткішін анықтау үшін талап етілетін бұл келесі түрдегі декларацияны беру:
FILE * fp;
FILE * fopen(char*name, char* mode);
Файлдан оқу мен файлға жазудың бірнеше тәсілдері бар. Ең қарапайымы getc және putc функцияларын қолдану. int getc ( FILE*fp) функциясы с литерін *fp файылына жазады және қате болған жағдайда, жазылған литерді немесе EOF-ті қайтарады.
Файлдардың форматты енгізу-шығаруын scanf және printf функцияларында тұрғызуға болады. Олар scanf және printf-тің, олардың бірінші аргументі файлға көрсеткіш болып табылатын айырмашылығымен ұқсас
int fscanf( FILE*fp, char * format,…)
int fprintf( FILE*fp, char * format,…)
2. Параметрлі айнымалысанды функциялар.
Егер функцияның формалды парамерлерінің тізімі көп нүктемен аяқталса, оны шықырған кезде осы жерде тағы бірнеше параметр көрсетуге болатының білдіреді. Бұл параметрлер үшін типтердің сәйкестңгңн тексеру орындалмады, char және short типтері int ретінде,ал float типі doubleретінде беріледі. мысал ретінде printf функциясын келтіруге болады, оның прототипі келесі түрде береледі:
Int printf (const char*,…);
Жоғарыдағы мысал функцияны шақыру кезңнде кем бір char* типті парамерт болуын және басқа параметрлердің болуы немесе болмауы мүмкін екендігін көрсетеді.
Printf (“бастапқы мәліметтерді енгізініз”); //бір параметр
Printf(“қосынды; &5.2f теңге “ , sum); //екі парамер
Printf(“&d &d &d”,a ,b, c, d); //бес параметр
Функция ішіндегі міндетті емес параметрлерге қол жеткізу үшін stdarg.h> тақырыптық файлында орналасқан va_start, va_arg және va_end кітапхана макростары қолданылады.
3.
#include<stdio.h>
void main()
{
inti;
long float t=1, p=1;
for(i=1;i<=4;i++)
scanf("%d",&i);
for(i=1;i<=4;i++)
{
t=1;
t=1/(2*t*i);
p=p*t;
}
printf("p=%lf",p);
}
Билет №15
1. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
2. Параметрлі айнымалысанды функциялар.
Егер функцияның формалды парамерлерінің тізімі көп нүктемен аяқталса, оны шықырған кезде осы жерде тағы бірнеше параметр көрсетуге болатының білдіреді. Бұл параметрлер үшін типтердің сәйкестңгңн тексеру орындалмады, char және short типтері int ретінде,ал float типі doubleретінде беріледі. мысал ретінде printf функциясын келтіруге болады, оның прототипі келесі түрде береледі:
Int printf (const char*,…);
Жоғарыдағы мысал функцияны шақыру кезңнде кем бір char* типті парамерт болуын және басқа параметрлердің болуы немесе болмауы мүмкін екендігін көрсетеді.
Printf (“бастапқы мәліметтерді енгізініз”); //бір параметр
Printf(“қосынды; &5.2f теңге “ , sum); //екі парамер
Printf(“&d &d &d”,a ,b, c, d); //бес параметр
Функция ішіндегі міндетті емес параметрлерге қол жеткізу үшін stdarg.h> тақырыптық файлында орналасқан va_start, va_arg және va_end кітапхана макростары қолданылады.
3.#include<stdio.h>
#include<conio.h>
void main()
{int n, a[n], i, nom, min;
puts("vvedite mass");
scanf("% d", &n);
for(i=0;i<n;i++)
{
a[n]=rand();
}
for(i=0;i<n;i++)
{
printf("a[%d]=%d\n", i, a[i]);
if((i+1)%10==0)
printf("\n");}
min=a[0];
nom=0;
for(i=0;i<n;i++)
{if(a[n]<min)
{min=a[n];
nom=n;
}}
printf("%d", nom, min);
getch();
}
Билет №16
1.Файлдан оқу немесе файлға жазу үшін ол әрі қарай файлға қатынас жасау үшін қолданылған көрсеткішті қайтаратын, библиотекалық fopen функциясының көмегімен алдын-ала ашылуы керек.
Файлдың көрсеткіші деп аталатын бұл көрсеткіш, файл туралы ақпараттан (буфер адресі, буфердегі ағымдық литердің жағдайы, файл оқуға немесе жазуға ашық па, файлмен жұмыс істеуде қате бар ма және файлдың соңы кездестіме) тұратын құрылымға жіберіледі. <stdio.h>-тан алынған анықтамалар FILE деп аталатын құрылымның сипаттамасын қосатын болғандықтан, қолданушыға толығымен білу керек емес. Тек қана файл көрсеткішін анықтау үшін талап етілетін бұл келесі түрдегі декларацияны беру:
FILE * fp;
FILE * fopen(char*name, char* mode);
Файлдан оқу мен файлға жазудың бірнеше тәсілдері бар. Ең қарапайымы getc және putc функцияларын қолдану. int getc ( FILE*fp) функциясы с литерін *fp файылына жазады және қате болған жағдайда, жазылған литерді немесе EOF-ті қайтарады.
Файлдардың форматты енгізу-шығаруын scanf және printf функцияларында тұрғызуға болады. Олар scanf және printf-тің, олардың бірінші аргументі файлға көрсеткіш болып табылатын айырмашылығымен ұқсас
int fscanf( FILE*fp, char * format,…)
int fprintf( FILE*fp, char * format,…)
2. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
3. #include <iostream.h>
#include <math.h>
void main()
{
int min = -1;
int max = -1;
int n;
cout<< "Введитеколичествоэлементов: ";
cin>> n;
cout<<endl<<endl;
int *mas = int[n];// мундагыmas жанамассив
for (inti=0; i<n; i++)
{
mas[i] = rand() % 20 - 10;
cout<< mas[i] << " ";
}
cout<<endl<<endl;
for ( inti=0; i<n; i++)
{
if (min = -1 || abs(mas[min]) > abs(mas[i]))
min = mas[i];
}
for (inti=0; i<n; i++)
{
if (min= -1 || abs(mas[min]) < abs(mas[i]))
max= mas[i];
}
cout<< "min: " << min << " " << "max: " << max<<endl<<endl;
return 0;
}
Билет №17
1.Айнымалыларды сипаттауС-де барлыќ айнымалылар ќолдануға дейін сипатталуы тиіс. Негізгі 5 типі бар:
1.char- символды.
2.int-бүтін.
3.float-жылжымалы нүктелі.
4.double-2 ece үзындыќтағы жылжымалы нүктелі.
5.void-бос, мәнсіз.
Int- бүтін. Бұл типтің мәні, мына диапазонмен (-32768-ден 32767) шектелген бүтін сандар. Диапазон типке арналған ұяшыќтардың Өлшемімен аныќталады және наќты компьютерге байланысты. Бұдан басќа int типімен бірге ќолданылатын ќызметші сөздер бар: short int, unsigned int, long int бұлар сандар диапазонын ќысќартады немесе ұзартады.
Char-символдыќ, Бұл тип үшін мүмкін мән бір символ. Символ апострофта жазылады. Компьютердің жадында символ бір байт ќана орын алады. Жадыда символ саќталмайды, ал сан- символ коды саќталады.Арнайы таблицаларда барлыќ мүмкін символдар және оларға сәйкес кодтар кӘрсетіледі.
Си тілінде char типін сандыќ түрде ќолдануға болады, ол үшін жаќшадағы бүтін (int) спецификаторын ќолданамыз.
Float- заттыќ тип. Бұл типтің мәні- сан, біраќ char және int типтерінен айырмашылығы, бұл тек бүтін емес.
Double-екі есе наќты заттыќ сандар.Бұл тип float типіне аналогты, біраќ ұлкен диапазондағы мәндерді ќабылдайды.
char, int бүтін типтер, бұлар бүтін сандарды саќтауға арналған. float, double - жылжымалы нүктелі сандар. Осы 5 типтің негізінде Өзге типтер жасалынады, ол үшін модификаторлар ќолданады.
2.Кез келген табиғи тілдегі мәтінде 4 негізгі элементті бөліп қарастыруға болады,олар: символдар сөздер тіркестері және сөйлемдер.
С+ тілінің алфавиті
Си тілінде қолданылатын символдар жиындары:
1. латын алфавитінің бас әріптері (A,B,C,…….,Y,Z) мен кіші әріптері (a,b,c,………,y,z) ;
2. 0- ден 9- ға дейінгі араб цифрлары;
3. арнаулы символдар:
+ (плюс), - (минус), * (жұлдызша ), / (бөлу сызығы), = (тең), > (үлкен), < ( кіші) , ; (нүктелі үтір), & (амперсанд ), [ ] (тік
жақшалар), { } (жүйелі жақшалар ), ( ) (дөңгелек жақшалар), _ (астын сызу), (бос орын ), . (нүкте), , (үтір), : (қос нүкте), #
(нөмір), % (процент), ~ (разрядтап терістеу), ? (сұрақ белгісі), ! ( леп белгісі), \ (кері слэш).4.бос орын символдары:бос орын табуляция символы,жаңа жолға көшу символы.
5.Алфавит символдарынан тіл лексемалары құралады.Олар:
Идентификаторлар;
Түйынды сөздер;
Операциялар белгілері;
Тұрақтылар;
Ажыратқыштар;
Лексемалардың шекаралық символдары ретінде ажыратқыштар немесе операциялар белгілері сияқты басқа лексемалар қолданылады.
Ақпараттық жүйелерде іздеу алгоритмдері және әртүрлі табиғаттағы мәліметтерді сұрыптау, жеке жағдайда кез-келген ұзындықтағы мәтіндік жолдар кеңінен қолданылады. Іздеу алгоритмдері мен сұрыптаудың тиімділігі көп жағдайда мәліметтердің көрінісін таңдаумен байланысты. Осындай ыңғайлы және тиімді көріністің бірі кез-келген ұзындықтағы мәтіндік жолдың басындағы көрсеткіштер массиві болып табылады.
Жадыда жолдар бір-бірімен тығыз орналасқандықтан, әр жеке жолға көрсеткіш арқылы оның бірініші литеріне қатынас жасау жүзеге асады.
Көрсеткіштердің өзін массив түрінде ұйымдастыруға болады. Мүмкіндіктердің бірі: екі жолдарды салыстыру арқылы олардың strcmp функцияларына көрсеткіштерді беру. Жолдардың орындарын ауыстыру үшін, массивте олардың көрсеткіштерінің орнын ауыстыру жеткілікті (жолдардың өзін емес).
Бұдан екі мәселе бірдей шешіледі: біреуі жадыны басқару күрделілігімен, ал екіншішісі жолдардың өзін ауыстыруда жинақталған үлкен шығындармен байланысты.
Сұрыптау процессі үш кезеңге бөлінеді:
енгізу кезінде барлық жолдард оқу;
енгізілген жолдарды сұрыптау;
оларды рет-ретімен басып шығару.
Енгізу программасы барлық жолдардағы литерлерді оқу және есте сақтау керек, сол сиқты жолдрадың көрсеткіштер массивін тұрғызу керек. Бұл функция сол сияқты, енгізілген жолдардың санын есептеу керек бұл ақпарат сұрыптау және баспаға шығару үшін қажет болады.
Шығару программасы жолдарды басып шығарумен ғана айналысады және ол көрсеткіштер массивінде олраға сілтеме жасайтындай ретпен орындалуы керек.
3.Заут жұмысшыларының айлық төлемақысының мазмұнын көрсететін файл құру
#include <stdio.h>
main()
{
Int zarplata;
printf("Введите зарплату в денежных : ");
scanf("%i",&zarplata);
switch (zarplata % 120000)
{
case 50000 : printf("Техперсонал");break;
case 60000 : printf("Секретарь"); break;
case 70000 : printf("Администрация"); break;
case 80000: printf("Цехрабочии"); break;
case 90000: printf("Работникистоляры"); break;
case 100000 : printf("Бетонщики"); break;
case 105000: printf("Фасовщики"); break;
case 110000: printf("Бригадир"); break;
case 115000 : printf("Старшийбригадир"); break;
case 120000 : printf("Директор"); break;
default: printf("Введитеденьги");
}
printf("\nВведите ENTER");
getch();
}
Билет №18
1..Құрылым бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атауға топтастырылған бір немесе бірнеше айнымалылыр (әр түрлі болуы мүмкін). Құрылымдар күрделі мәліметтерді (әсіресе үлкен программаларда) ұйымдастыруға көмектеседі және өзара байланысқан айнымалылар тобын жиынның жеке элементіндей емес, бір тұтас ретінде түсіндіреді.
Құрлымның кең таралған мысалы төлемдік ведомостардың жолдары. Ол ведомост қызметкерлердің толық аты, адресі, социалды сақтандыру карточкаларының нөмері, еңбек ақысы және т.б. мәліметтерден тұрады. Осы мінездемелердің кейбіреуінің өзі құрылым болуы мүмкін: мысалы, толық ат, сол сияқты адресі және еңбек ақының өзі бірнеше компоненттерден тұрады. Си үшін басқа әдеттегі, мысалы график аймағынан: нүкте координаттар жұбы, тікбұрыш нүктелер жұбы және т.б. болып табылады.
Құрылымдар көшірілуі мүмкін, олармен меншіктеу операциялары орындалуы мүмкін, оларды функцияға аргументтер ретінде беруге болады және ол функцияны олардың нәтижелері ретінде қайтаруға болады. Автоматты құрылым мен массивтер үшін сол сияқты инициализация рұқсат етіледі.
«Нүкте» құрлымының декларациясы келесі түрде болады:
structpoint
{ intx; \\ декларация тізімі фигуралы жақшада
inty;
};
point бұл құрылым тегі (аты) (tag ярлык, этикетка).
Тег берілген түрдегі құрлымның атын береді және әрі қарай фигуралы жақшамен аяқталған декларацияның қысқаша белгіленуі ретінде қызмет атқарады.
Құрылымда тізілген айнымалылар мүшелер деп аталады. Тегтер мен мүшелердің аттары программаның кәдімгі айнымалыларының аттармен сәйкес келуі мүмкін. Мүшелердің аттары әртүрлі құрлымдарда кездесуі мүмкін. .
Құрлым декларациясы бұл тип.
struct {…}x,y,z;
жазбасы құрлымдық типтің үш айнымалыларының сипаттамасын білдіреді.
Айнымалылар тізімінен тұрмайтын құрылым декларациясы жадыны резервке алмайды: ол тек шаблонды немесе құрылым үлгісін сипаттайды. Егер құрылымның тегі болмаса, онда осы тегтерді объектілерді анықтауда қолдануға болады. Мысалы, struct point pt; декларациясы struct point типті pt құрылымдық айнымалыны анықтайды.Автоматты құрылымдарды (auto жады класының құрлымы) сәйкес келетін типтегі құрылым түрінде нәтижені қайтаратын меншіктеумен немесе функцияға айналдырумен инициализациялауға болады.
Құрылымдарға орындалатын операциялар бұл оларды көшіру, меншіктеу, & операторының көмегімен аталатын адрес және олардың мүшелеріне қатысудың жүзеге асырылуы. Құрылымды функцияға аргумент ретінде беру және оларды нәтиже түрінде функциялардан қайтару. Сондай-ақ көшіру және меншіктеу операцияларына жатады. Құрылымдарды салыстыруға болмайды.
Құрылымдық объектілерді функцияға берудің үш тәсілі бар:
компоненттерді (мүшелерді) жеке беру;
барлық құрылымдарды түгелдей беру;
көрсеткішті құрылымға беру.
Егер функцияға, оны түгелдей көшіретін үлкен құрылым берілсе, көрсеткішті оған беру тиімдірек.
2. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
3.Ү массив элементтерінің геометриялық ортасын табу
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 15
main ()
{
int a[n],i;
printf("\nЭлементы массива:");
for(i=0;i<n;i++)
{a[i] = rand() % 100 - 50; // случайные числа до 32767
printf(" %i",a[i]);} // далее остаток от 100 и - 50
// определение произведения и кол-ва пол.эл-тов
i=0; // начальный индекс = 0
float p=1.0; // произведение положит.эл-тов
int k=0; // кол-во положит.эл-тов
do
{ if (a[i]>0) { k++; p*=a[i];}
i++;
}
while (i<n);
printf("\nкол-вополэл-тов : %d\n",k);
p=pow(p,1.0/k);
printf("cpгеом = %f",p);
getch();
}
Билет №19
1.Кез келген табиғи тілдегі мәтінде 4 негізгі элементті бөліп қарастыруға болады,олар: символдар сөздер тіркестері және сөйлемдер.
С+ тілінің алфавиті
Си тілінде қолданылатын символдар жиындары:
1. латын алфавитінің бас әріптері (A,B,C,…….,Y,Z) мен кіші әріптері (a,b,c,………,y,z) ;
2. 0- ден 9- ға дейінгі араб цифрлары;
3. арнаулы символдар:
+ (плюс), - (минус), * (жұлдызша ), / (бөлу сызығы), = (тең), > (үлкен), < ( кіші) , ; (нүктелі үтір), & (амперсанд ), [ ] (тік
жақшалар), { } (жүйелі жақшалар ), ( ) (дөңгелек жақшалар), _ (астын сызу), (бос орын ), . (нүкте), , (үтір), : (қос нүкте), #
(нөмір), % (процент), ~ (разрядтап терістеу), ? (сұрақ белгісі), ! ( леп белгісі), \ (кері слэш).4.бос орын символдары:бос орын табуляция символы,жаңа жолға көшу символы.
5.Алфавит символдарынан тіл лексемалары құралады.Олар:
Идентификаторлар;
Түйынды сөздер;
Операциялар белгілері;
Тұрақтылар;
Ажыратқыштар;
Лексемалардың шекаралық символдары ретінде ажыратқыштар немесе операциялар белгілері сияқты басқа лексемалар қолданылады.
Ақпараттық жүйелерде іздеу алгоритмдері және әртүрлі табиғаттағы мәліметтерді сұрыптау, жеке жағдайда кез-келген ұзындықтағы мәтіндік жолдар кеңінен қолданылады. Іздеу алгоритмдері мен сұрыптаудың тиімділігі көп жағдайда мәліметтердің көрінісін таңдаумен байланысты. Осындай ыңғайлы және тиімді көріністің бірі кез-келген ұзындықтағы мәтіндік жолдың басындағы көрсеткіштер массиві болып табылады.
Жадыда жолдар бір-бірімен тығыз орналасқандықтан, әр жеке жолға көрсеткіш арқылы оның бірініші литеріне қатынас жасау жүзеге асады.
Көрсеткіштердің өзін массив түрінде ұйымдастыруға болады. Мүмкіндіктердің бірі: екі жолдарды салыстыру арқылы олардың strcmp функцияларына көрсеткіштерді беру. Жолдардың орындарын ауыстыру үшін, массивте олардың көрсеткіштерінің орнын ауыстыру жеткілікті (жолдардың өзін емес).
Бұдан екі мәселе бірдей шешіледі: біреуі жадыны басқару күрделілігімен, ал екіншішісі жолдардың өзін ауыстыруда жинақталған үлкен шығындармен байланысты.
Сұрыптау процессі үш кезеңге бөлінеді:
енгізу кезінде барлық жолдард оқу;
енгізілген жолдарды сұрыптау;
оларды рет-ретімен басып шығару.
Енгізу программасы барлық жолдардағы литерлерді оқу және есте сақтау керек, сол сиқты жолдрадың көрсеткіштер массивін тұрғызу керек. Бұл функция сол сияқты, енгізілген жолдардың санын есептеу керек бұл ақпарат сұрыптау және баспаға шығару үшін қажет болады.
Шығару программасы жолдарды басып шығарумен ғана айналысады және ол көрсеткіштер массивінде олраға сілтеме жасайтындай ретпен орындалуы керек.
2.Файлдан оқу немесе файлға жазу үшін ол әрі қарай файлға қатынас жасау үшін қолданылған көрсеткішті қайтаратын, библиотекалық fopen функциясының көмегімен алдын-ала ашылуы керек.
Файлдың көрсеткіші деп аталатын бұл көрсеткіш, файл туралы ақпараттан (буфер адресі, буфердегі ағымдық литердің жағдайы, файл оқуға немесе жазуға ашық па, файлмен жұмыс істеуде қате бар ма және файлдың соңы кездестіме) тұратын құрылымға жіберіледі. <stdio.h>-тан алынған анықтамалар FILE деп аталатын құрылымның сипаттамасын қосатын болғандықтан, қолданушыға толығымен білу керек емес. Тек қана файл көрсеткішін анықтау үшін талап етілетін бұл келесі түрдегі декларацияны беру:
FILE * fp;
FILE * fopen(char*name, char* mode);
Файлдан оқу мен файлға жазудың бірнеше тәсілдері бар. Ең қарапайымы getc және putc функцияларын қолдану. int getc ( FILE*fp) функциясы с литерін *fp файылына жазады және қате болған жағдайда, жазылған литерді немесе EOF-ті қайтарады.
Файлдардың форматты енгізу-шығаруын scanf және printf функцияларында тұрғызуға болады. Олар scanf және printf-тің, олардың бірінші аргументі файлға көрсеткіш болып табылатын айырмашылығымен ұқсас
int fscanf( FILE*fp, char * format,…)
int fprintf( FILE*fp, char * format,…)
3.S=1*2*3*4*5........
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int a[14];
int n;
printf("\nРазмерность массива : ");
scanf("%d",&n);
for(inti=0;i<n;i++)
{
a[i] = rand() % 20;
printf("%i ",a[i]);
}
int s=1;
for(i=0;i<n;i+=2)
s*=a[i]; //элементы с индексами 0, 2, 4...
printf("\nсумма четных элементов массива : %i",sum);
}
Билет №20
1..Құрылым бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атауға топтастырылған бір немесе бірнеше айнымалылыр (әр түрлі болуы мүмкін). Құрылымдар күрделі мәліметтерді (әсіресе үлкен программаларда) ұйымдастыруға көмектеседі және өзара байланысқан айнымалылар тобын жиынның жеке элементіндей емес, бір тұтас ретінде түсіндіреді.
Құрлымның кең таралған мысалы төлемдік ведомостардың жолдары. Ол ведомост қызметкерлердің толық аты, адресі, социалды сақтандыру карточкаларының нөмері, еңбек ақысы және т.б. мәліметтерден тұрады. Осы мінездемелердің кейбіреуінің өзі құрылым болуы мүмкін: мысалы, толық ат, сол сияқты адресі және еңбек ақының өзі бірнеше компоненттерден тұрады. Си үшін басқа әдеттегі, мысалы график аймағынан: нүкте координаттар жұбы, тікбұрыш нүктелер жұбы және т.б. болып табылады.
Құрылымдар көшірілуі мүмкін, олармен меншіктеу операциялары орындалуы мүмкін, оларды функцияға аргументтер ретінде беруге болады және ол функцияны олардың нәтижелері ретінде қайтаруға болады. Автоматты құрылым мен массивтер үшін сол сияқты инициализация рұқсат етіледі.
«Нүкте» құрлымының декларациясы келесі түрде болады:
structpoint
{ intx; \\ декларация тізімі фигуралы жақшада
inty;
};
point бұл құрылым тегі (аты) (tag ярлык, этикетка).
Тег берілген түрдегі құрлымның атын береді және әрі қарай фигуралы жақшамен аяқталған декларацияның қысқаша белгіленуі ретінде қызмет атқарады.
Құрылымда тізілген айнымалылар мүшелер деп аталады. Тегтер мен мүшелердің аттары программаның кәдімгі айнымалыларының аттармен сәйкес келуі мүмкін. Мүшелердің аттары әртүрлі құрлымдарда кездесуі мүмкін. .
Құрлым декларациясы бұл тип.
struct {…}x,y,z;
жазбасы құрлымдық типтің үш айнымалыларының сипаттамасын білдіреді.
Айнымалылар тізімінен тұрмайтын құрылым декларациясы жадыны резервке алмайды: ол тек шаблонды немесе құрылым үлгісін сипаттайды. Егер құрылымның тегі болмаса, онда осы тегтерді объектілерді анықтауда қолдануға болады. Мысалы, struct point pt; декларациясы struct point типті pt құрылымдық айнымалыны анықтайды.Автоматты құрылымдарды (auto жады класының құрлымы) сәйкес келетін типтегі құрылым түрінде нәтижені қайтаратын меншіктеумен немесе функцияға айналдырумен инициализациялауға болады.
Құрылымдарға орындалатын операциялар бұл оларды көшіру, меншіктеу, & операторының көмегімен аталатын адрес және олардың мүшелеріне қатысудың жүзеге асырылуы. Құрылымды функцияға аргумент ретінде беру және оларды нәтиже түрінде функциялардан қайтару. Сондай-ақ көшіру және меншіктеу операцияларына жатады. Құрылымдарды салыстыруға болмайды.
Құрылымдық объектілерді функцияға берудің үш тәсілі бар:
компоненттерді (мүшелерді) жеке беру;
барлық құрылымдарды түгелдей беру;
көрсеткішті құрылымға беру.
Егер функцияға, оны түгелдей көшіретін үлкен құрылым берілсе, көрсеткішті оған беру тиімдірек.
2.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
3.N массивінің 3-ке қысқаратын элементерінің қосындысын табу
#include <stdio.h>
#include <conio.h>
int main()
{
intsumm,i,n,c;
i=1;//Началонатуральногоряда
n=20; //Скольконужночисел
summ=0; //Вэтойпеременнойбудемхранитьсумму
while(c!=n)
{
if (i % 3 == 0)//Тогдапроверяемделитсялина 3 безостатка
{
c++;
summ=summ+i;
}
}
i++;
};
//Когдасчетчик c сталравен n выводимрезультат
cout<< 'summ';
};
Билет №21
1.Кез келген табиғи тілдегі мәтінде 4 негізгі элементті бөліп қарастыруға болады,олар: символдар сөздер тіркестері және сөйлемдер.
С+ тілінің алфавиті
Си тілінде қолданылатын символдар жиындары:
1. латын алфавитінің бас әріптері (A,B,C,…….,Y,Z) мен кіші әріптері (a,b,c,………,y,z) ;
2. 0- ден 9- ға дейінгі араб цифрлары;
3. арнаулы символдар:
+ (плюс), - (минус), * (жұлдызша ), / (бөлу сызығы), = (тең), > (үлкен), < ( кіші) , ; (нүктелі үтір), & (амперсанд ), [ ] (тік
жақшалар), { } (жүйелі жақшалар ), ( ) (дөңгелек жақшалар), _ (астын сызу), (бос орын ), . (нүкте), , (үтір), : (қос нүкте), #
(нөмір), % (процент), ~ (разрядтап терістеу), ? (сұрақ белгісі), ! ( леп белгісі), \ (кері слэш).4.бос орын символдары:бос орын табуляция символы,жаңа жолға көшу символы.
5.Алфавит символдарынан тіл лексемалары құралады.Олар:
Идентификаторлар;
Түйынды сөздер;
Операциялар белгілері;
Тұрақтылар;
Ажыратқыштар;
Лексемалардың шекаралық символдары ретінде ажыратқыштар немесе операциялар белгілері сияқты басқа лексемалар қолданылады.
Ақпараттық жүйелерде іздеу алгоритмдері және әртүрлі табиғаттағы мәліметтерді сұрыптау, жеке жағдайда кез-келген ұзындықтағы мәтіндік жолдар кеңінен қолданылады. Іздеу алгоритмдері мен сұрыптаудың тиімділігі көп жағдайда мәліметтердің көрінісін таңдаумен байланысты. Осындай ыңғайлы және тиімді көріністің бірі кез-келген ұзындықтағы мәтіндік жолдың басындағы көрсеткіштер массиві болып табылады.
Жадыда жолдар бір-бірімен тығыз орналасқандықтан, әр жеке жолға көрсеткіш арқылы оның бірініші литеріне қатынас жасау жүзеге асады.
Көрсеткіштердің өзін массив түрінде ұйымдастыруға болады. Мүмкіндіктердің бірі: екі жолдарды салыстыру арқылы олардың strcmp функцияларына көрсеткіштерді беру. Жолдардың орындарын ауыстыру үшін, массивте олардың көрсеткіштерінің орнын ауыстыру жеткілікті (жолдардың өзін емес).
Бұдан екі мәселе бірдей шешіледі: біреуі жадыны басқару күрделілігімен, ал екіншішісі жолдардың өзін ауыстыруда жинақталған үлкен шығындармен байланысты.
Сұрыптау процессі үш кезеңге бөлінеді:
енгізу кезінде барлық жолдард оқу;
енгізілген жолдарды сұрыптау;
оларды рет-ретімен басып шығару.
Енгізу программасы барлық жолдардағы литерлерді оқу және есте сақтау керек, сол сиқты жолдрадың көрсеткіштер массивін тұрғызу керек. Бұл функция сол сияқты, енгізілген жолдардың санын есептеу керек бұл ақпарат сұрыптау және баспаға шығару үшін қажет болады.
Шығару программасы жолдарды басып шығарумен ғана айналысады және ол көрсеткіштер массивінде олраға сілтеме жасайтындай ретпен орындалуы керек.
2.Енгізу-шығару мүмкіндіктері Си тілінің негізгі бөлігі емес. Нақтылы программалар біз сөз қылғандарға қарағанда, өзін қоршағандармен өте күрделі тәсілдермен өзара әрекеттеседі.
Библиотекалық енгізу-шығару функциясы ANSI стандартымен дәл анықталады, сондықтан Си-де қолдау болатын кез-келген қондырғымен байланысты. Осы функциялар енгізу-шығару мәтінінің қарапайым моделін іске асырады. Мәтіндік ағын жолдар тізбегінен тұрады; әр жол жаңа литер жолымен аяқталады.
Енгізудің қарапайым механизмі ағынның келесі литерін қайтаратын немесе егер файлдың EOF соңы табылса getchar функциясының бір литерін оқу:
int getchar ( void)
әдетте EOF = -1 мәніне тең.
int putchar (int) функциясы шығару үшін қолданылады: putchar (c) с литерін стандартты шығаруға (экран) жібереміз. putchar фукнкциясы нәтиже ретінде жіберілген литерді немесе қате болған жағдайда EOF-ты қайтарады.
Printf функциясымен орындалатын шығару, сондай-ақ стандартты шығу ағынына жіберіледі putchar және printf-ды қалауымыз бойынша кезектесіп шығаруға болады, бұдан шығару осы функциялар шақыратын жүйелілікпен қалыптасады.
3.S=1*3*5*7.....
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int a[21];
intn;
printf("\nРазмерность массива : ");
scanf("%d",&n);
for(inti=0;i<n;i++)
{
a[i] = rand() % 21;
printf("%i ",a[i]);
}
int sum=1;
for(i=0;i<n;i+=3)
sum+=a[i]; //элементы с индексами 1,3,5...
printf("\nсумма нечетных элементов массива : %i",sum);
}
Билет №22
1.Шартты өрнектер
if(a>b) z=a;
elsez=b;
нұсқаулары екі а және b мәндерінің ең үлкенінің бірін z-ке жібереді.
Си-де тернарлық оператор “?:” бар, ол осы және оған ұқсас конструкцияларға жазбаның басқа тәсілін көрсетеді.
z=(a>b) ? a:b; // z=max(a,b)
Шартты өрнек шынымен де өрнек болып табылады және оны өрнек жіберілетін кез-келген жерде қолдануға болады.
Шартты өрнек көбінесе программаны қысқартуға мүмкіндік береді. Мысал ретінде массивтің nэлементтері әрбір жол бойынша 10-нан, бағандар арасынан бір бос орыннан басып шығаруды қамтамасыз ететін циклді келтірейік: циклдің әрбір жолы соңғы жолды қосқанда жаңа жол литерімен аяқталады.
for (i=0; i<n; i+ +)
printf (“%6d%c”, ar [i],(i%10= = 9¦¦i= = n-1)?\n: );
Жаңа жол литері әрбір оныншыдан кейін және nші элементтен кейін жіберіледі. Қалған басқа элементтерден кейін бос орын келеді.
2. Функция нақты есептерді шешуге арналып құрылған программаның өзіндік бірлігі. Си тіліндегі функция басқа тілдердегі ішкі программа мен процедуралардың атқаратын қызметін атқарады. Функцияны пайдаланған ыңғайлы, мысалы, егер программаның бір және сол кодын өңдеу қажет болса. Айнымалылар сияқты функцияны да жариялау керек. Функцияны оны пайдаланғанға дейін жариялау қажет. Си тіліндегі әр функция ат пен аргументтер тізіміне ие.
Функциялар эффектілі және қолданғанда жеңіл болу керек. Әдетте бұл программалар бұл тілде аздаған функциялар ұлкен сандардан тәрады. Программа бір немесе бірнеше файлдардан табылады. Файлдарды бұлек хабарлауға және бірге жүктеуге болады. Функциялар ішкі басқа функцияларды анықтай алмайды.
Си программистке программаның қәрылымын анықтауға ұлкен мүмкіндіктер береді. Программаның сапасы оның барлық программаларды логикалық негізделген функциялардың жақсы негізделген интерфейстермен және программаның тексті жақсы қәжаттауы программистің білгірлігіне байланысты.
Функциялар бұл Си-дің берік қәрастырылуы, алға қойылған есептерімен немесе олардың бұліктерінің шешімдерімен байланысты. Функция программаның өз бетімен істелген бірлігі. Есептердің анықталған кластарын шешу үшін функцияларды бұлек файлға бұлуге болады. Бұл файл пайдалану кітапханасын әсынады.
Функциялар кітапханасы:
әртүрлі программистерге бір және сол функцияларды қолдануға;
программаның қәрылымы мен көрнектілігін жоғарылату;
қолданатын программаларды үйренуге және түзетуге, оқуын жеңілдетуге рәқсат етеді.
Си тіліндегі кез-келген программа main операторымен бас функцияларды және басқа функциялардың кез-келген санын әстайды.
Функция кейбір есептеулерді ыңғайлы тәсілмен жеке безендіруге және оларды әрі қарай оның қалай жұмыс істейтінін қамқорлыққа алмай-ақ, қолдануды қамтамасыз етеді. Си-де функцияны қолдану механизмі ыңғайлы, жеңіл, тиімді және мақсаты анық, түсінікті түрдегі программаны алу.
Кез-келген функцияны анықтау келесі түрде болады:
функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)
{ декларация
инструкция
}
Функцияны анықтаудан басқа, форматы келесі түрде болатын функция прототипі түсінігі бар.
функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)
3.S=2*4*6*7……
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
main()
{
int a[50];
intn;
printf("\nРазмерность массива : ");
scanf("%d",&n);
for(inti=0;i<n;i++)
{
a[i] = rand() % 50;
printf("%i ",a[i]);
}
int sum=1;
for(i=0;i<n;i+=2)
sum*=a[i]; //элементы с индексами 0, 2, 4...
printf("\nсумма четных элементов массива : %i",sum);
}
Билет №23
1.Шартты өрнектер
if(a>b) z=a;
elsez=b;
нұсқаулары екі а және b мәндерінің ең үлкенінің бірін z-ке жібереді.
Си-де тернарлық оператор “?:” бар, ол осы және оған ұқсас конструкцияларға жазбаның басқа тәсілін көрсетеді.
z=(a>b) ? a:b; // z=max(a,b)
Шартты өрнек шынымен де өрнек болып табылады және оны өрнек жіберілетін кез-келген жерде қолдануға болады.
Шартты өрнек көбінесе программаны қысқартуға мүмкіндік береді. Мысал ретінде массивтің nэлементтері әрбір жол бойынша 10-нан, бағандар арасынан бір бос орыннан басып шығаруды қамтамасыз ететін циклді келтірейік: циклдің әрбір жолы соңғы жолды қосқанда жаңа жол литерімен аяқталады.
for (i=0; i<n; i+ +)
printf (“%6d%c”, ar [i],(i%10= = 9¦¦i= = n-1)?\n: );
Жаңа жол литері әрбір оныншыдан кейін және nші элементтен кейін жіберіледі. Қалған басқа элементтерден кейін бос орын келеді.
2. Функция нақты есептерді шешуге арналып құрылған программаның өзіндік бірлігі. Си тіліндегі функция басқа тілдердегі ішкі программа мен процедуралардың атқаратын қызметін атқарады. Функцияны пайдаланған ыңғайлы, мысалы, егер программаның бір және сол кодын өңдеу қажет болса. Айнымалылар сияқты функцияны да жариялау керек. Функцияны оны пайдаланғанға дейін жариялау қажет. Си тіліндегі әр функция ат пен аргументтер тізіміне ие.
Функциялар эффектілі және қолданғанда жеңіл болу керек. Әдетте бұл программалар бұл тілде аздаған функциялар ұлкен сандардан тәрады. Программа бір немесе бірнеше файлдардан табылады. Файлдарды бұлек хабарлауға және бірге жүктеуге болады. Функциялар ішкі басқа функцияларды анықтай алмайды.
Си программистке программаның қәрылымын анықтауға ұлкен мүмкіндіктер береді. Программаның сапасы оның барлық программаларды логикалық негізделген функциялардың жақсы негізделген интерфейстермен және программаның тексті жақсы қәжаттауы программистің білгірлігіне байланысты.
Функциялар бұл Си-дің берік қәрастырылуы, алға қойылған есептерімен немесе олардың бұліктерінің шешімдерімен байланысты. Функция программаның өз бетімен істелген бірлігі. Есептердің анықталған кластарын шешу үшін функцияларды бұлек файлға бұлуге болады. Бұл файл пайдалану кітапханасын әсынады.
Функциялар кітапханасы:
әртүрлі программистерге бір және сол функцияларды қолдануға;
программаның қәрылымы мен көрнектілігін жоғарылату;
қолданатын программаларды үйренуге және түзетуге, оқуын жеңілдетуге рәқсат етеді.
Си тіліндегі кез-келген программа main операторымен бас функцияларды және басқа функциялардың кез-келген санын әстайды.
Функция кейбір есептеулерді ыңғайлы тәсілмен жеке безендіруге және оларды әрі қарай оның қалай жұмыс істейтінін қамқорлыққа алмай-ақ, қолдануды қамтамасыз етеді. Си-де функцияны қолдану механизмі ыңғайлы, жеңіл, тиімді және мақсаты анық, түсінікті түрдегі программаны алу.
Кез-келген функцияны анықтау келесі түрде болады:
функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)
{ декларация
инструкция
}
Функцияны анықтаудан басқа, форматы келесі түрде болатын функция прототипі түсінігі бар.
функция_аты нәтижесінің_типі (формальды_параметрлер_тізімі)
3.А массивэлементтерінің геометриялық ортасын табу
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define n 15
main ()
{
int a[n],i;
printf("\nЭлементымассива:");
for(i=0;i<n;i++)
{a[i] = rand() % 50;
printf(" %i",a[i]);
}
// определение произведения и кол-ва пол.эл-тов
i=0; // начальный индекс = 0
float p=1.0; // произведение положит.эл-тов
int k=0; // кол-во положит.эл-тов
do
{ if (a[i]>0) { k++; p*=a[i];}
i++;
}
while (i<n);
printf("\nкол-вополэл-тов : %d\n",k);
p=pow(p,1.0/k);
printf("cpгеом = %f",p);
getch();
}
Билет №24
1.Көп жағдайда, берілгендерді өңдеу ғана керек емес, сонымен қатар оларды енгізу және шығару. Си тілінде енгізу үшін біраз стандарттық функциялар бар: бірі берілгендерді файлдан енгізеді,ылғандары берілгендерді файлдан алуға мүмкіндік береді. Олардың қатарына scanf () және printf () функцияларын жатқызуға болады. Берілгендерді шығаруды жүзеге асыратын негізгі функцияларға printf(),puts() және putchar жатады.
Printf() функциясының жалпы түрі
Printf() (форматтар қатары, обьект1, обьект2,…обьектn)
Мысалы:
Printf(“ y=%d\n”, y);
Мұндағы %d бүтін санды көрсету операторы
y-шығару обьектісі
scanf () функцияда Printf () да шғатын функцияны енгізу.
Жазылу формасы:
scanf () форматтар қатары, обьект1, обьект2,…обьектn)
Мысалы:
scanf () (“ %d%d”, &x,&y);
Бұл x, y айнымалысына мән енгіз дегенді білдіреді.
Мәселен нәтеже экыранына 123 345 мәндері енгізіңіз.
Егер оның формасын былай өзгертсек онда
scanf () (“x=%d, y =%d”, &x,&y);
нәтеже x=123, y =345
Шығару обьектісі айнымалы, тұрақты өрнектер немесе функцияларды көрсетеді. Берілгендерді көрсетудің келесі алаңдардың спецификациясын пайдалану мүмкін.
2. #include<stdio.h> инструкциясы компиляторға, ол программаның мәтініне стандартты библиотеканың енгізу-шығаруы туралы ақпаратты қосу керек екендігін хабарлайды (printf функциясының прототипін шақыру). printf стандартты функциясы форматты енгізу-шығарудың әмбебап функциясы. Оның бірінші аргументі, әрбір % таңбасы оның келесі аргуметтерінің біреуіне сәйкес келетін стринг болатынын, ал % таңбасынан кейін орналасқан ақпарат осы аргументтердің әрбірі шығарылу түрін көрсетеді.
Бұдан басқа, printf келесі спецификаторларды қолданады: %0 сегіздік сан үшін, %X он алтылық сан үшін, %С литерді басу үшін, %S стрингті басу үшін, литер %% - %-тің өзі үшін.
Стандартты библиотека енгізу-шығарудың өте қарапайым моделін ұстанады. Мәтіндік енгізу-шығару, ол қайдан шығып немесе қайда бағытталғанынан тәуелсіз литер ағынымен жұмыс жасайды. Енгізу-шығару моделі бұл мәтіндік ағын, яғни әрқайсысы нөлден тұратын немесе литерден артық жолдарға бөлінген және жаңа жол литермен аяқталатын (\n) литерлер тізбегі.
Литердің біреуінің қарапайым оқу және жазу функциялары getchar и putchar болып табылады, сәйкесінше мәтіндік ағыннан келесі литерді оқу және бүтін айнымалыны литер түрінде басу.
3.Екі түрлі товардың бағасы p процентке өсті. Бастапқы және қазіргі бағасын шығар
#include <iostream.h> // Инклуд(ы)
using namespace std; // Ввод/выводданных
int main()
{
inta,b,c,d; // Вводимпеременные
cout<< "Введитечисло." <<endl; // Просим пользователя ввести начальное число
cin>> a; // А тут он уже вводит
b = a/100; // Выполняем деление
cout<< "Один процент от этого числа равен: " << b << " \nА вам сколько процентов нужно? " <<endl; // Просим пользователя ввести кол-во процентов
cin>> c; // Он вводит конечно же, куда ему деваться?
d = b*c; // Выполняем умножение
cout<< c << " процентов от числа " << a << " равняется: " << d <<endl; // Результат
system("pause"); // Задерживаем этот результат на экране, пусть смотрит
return 0; // Скажем системе, что программа завершилась успешно, без ошибок
}
Билет №25
1.Шартты өрнектер
if(a>b) z=a;
elsez=b;
нұсқаулары екі а және b мәндерінің ең үлкенінің бірін z-ке жібереді.
Си-де тернарлық оператор “?:” бар, ол осы және оған ұқсас конструкцияларға жазбаның басқа тәсілін көрсетеді.
z=(a>b) ? a:b; // z=max(a,b)
Шартты өрнек шынымен де өрнек болып табылады және оны өрнек жіберілетін кез-келген жерде қолдануға болады.
Шартты өрнек көбінесе программаны қысқартуға мүмкіндік береді. Мысал ретінде массивтің nэлементтері әрбір жол бойынша 10-нан, бағандар арасынан бір бос орыннан басып шығаруды қамтамасыз ететін циклді келтірейік: циклдің әрбір жолы соңғы жолды қосқанда жаңа жол литерімен аяқталады.
for (i=0; i<n; i+ +)
printf (“%6d%c”, ar [i],(i%10= = 9¦¦i= = n-1)?\n: );
Жаңа жол литері әрбір оныншыдан кейін және nші элементтен кейін жіберіледі. Қалған басқа элементтерден кейін бос орын келеді.
2.Құрылым бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атауға топтастырылған бір немесе бірнеше айнымалылыр (әр түрлі болуы мүмкін). Құрылымдар күрделі мәліметтерді (әсіресе үлкен программаларда) ұйымдастыруға көмектеседі және өзара байланысқан айнымалылар тобын жиынның жеке элементіндей емес, бір тұтас ретінде түсіндіреді.
Құрлымның кең таралған мысалы төлемдік ведомостардың жолдары. Ол ведомост қызметкерлердің толық аты, адресі, социалды сақтандыру карточкаларының нөмері, еңбек ақысы және т.б. мәліметтерден тұрады. Осы мінездемелердің кейбіреуінің өзі құрылым болуы мүмкін: мысалы, толық ат, сол сияқты адресі және еңбек ақының өзі бірнеше компоненттерден тұрады. Си үшін басқа әдеттегі, мысалы график аймағынан: нүкте координаттар жұбы, тікбұрыш нүктелер жұбы және т.б. болып табылады.
Құрылымдар көшірілуі мүмкін, олармен меншіктеу операциялары орындалуы мүмкін, оларды функцияға аргументтер ретінде беруге болады және ол функцияны олардың нәтижелері ретінде қайтаруға болады. Автоматты құрылым мен массивтер үшін сол сияқты инициализация рұқсат етіледі.
«Нүкте» құрлымының декларациясы келесі түрде болады:
structpoint
{ intx; \\ декларация тізімі фигуралы жақшада
inty;
};
point бұл құрылым тегі (аты) (tag ярлык, этикетка).
Тег берілген түрдегі құрлымның атын береді және әрі қарай фигуралы жақшамен аяқталған декларацияның қысқаша белгіленуі ретінде қызмет атқарады.
Құрылымда тізілген айнымалылар мүшелер деп аталады. Тегтер мен мүшелердің аттары программаның кәдімгі айнымалыларының аттармен сәйкес келуі мүмкін. Мүшелердің аттары әртүрлі құрлымдарда кездесуі мүмкін. .
Құрлым декларациясы бұл тип.
struct {…}x,y,z;
жазбасы құрлымдық типтің үш айнымалыларының сипаттамасын білдіреді.
Айнымалылар тізімінен тұрмайтын құрылым декларациясы жадыны резервке алмайды: ол тек шаблонды немесе құрылым үлгісін сипаттайды. Егер құрылымның тегі болмаса, онда осы тегтерді объектілерді анықтауда қолдануға болады. Мысалы, struct point pt; декларациясы struct point типті pt құрылымдық айнымалыны анықтайды.Автоматты құрылымдарды (auto жады класының құрлымы) сәйкес келетін типтегі құрылым түрінде нәтижені қайтаратын меншіктеумен немесе функцияға айналдырумен инициализациялауға болады.
Құрылымдарға орындалатын операциялар бұл оларды көшіру, меншіктеу, & операторының көмегімен аталатын адрес және олардың мүшелеріне қатысудың жүзеге асырылуы. Құрылымды функцияға аргумент ретінде беру және оларды нәтиже түрінде функциялардан қайтару. Сондай-ақ көшіру және меншіктеу операцияларына жатады. Құрылымдарды салыстыруға болмайды.
Құрылымдық объектілерді функцияға берудің үш тәсілі бар:
компоненттерді (мүшелерді) жеке беру;
барлық құрылымдарды түгелдей беру;
көрсеткішті құрылымға беру.
Егер функцияға, оны түгелдей көшіретін үлкен құрылым берілсе, көрсеткішті оған беру тиімдірек.
3.Тікбұрышты -ң катеті мен доғай бұрышы белгілі болса, оның периметрі мен ауданын есепте.
#include <stdio.h>
#include <math.h>
main()
{
floata,b,c,p,s;
clrscr();
printf("\n‚ үшбұрышқабырғаларыненгіз : \n");
scanf("%f%f%f",&a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("s=%f\n",s);
}
Билет №26
1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
2.Енгізу-шығару мүмкіндіктері Си тілінің негізгі бөлігі емес. Нақтылы программалар біз сөз қылғандарға қарағанда, өзін қоршағандармен өте күрделі тәсілдермен өзара әрекеттеседі.
Библиотекалық енгізу-шығару функциясы ANSI стандартымен дәл анықталады, сондықтан Си-де қолдау болатын кез-келген қондырғымен байланысты. Осы функциялар енгізу-шығару мәтінінің қарапайым моделін іске асырады. Мәтіндік ағын жолдар тізбегінен тұрады; әр жол жаңа литер жолымен аяқталады.
Енгізудің қарапайым механизмі ағынның келесі литерін қайтаратын немесе егер файлдың EOF соңы табылса getchar функциясының бір литерін оқу:
int getchar ( void)
әдетте EOF = -1 мәніне тең.
int putchar (int) функциясы шығару үшін қолданылады: putchar (c) с литерін стандартты шығаруға (экран) жібереміз. putchar фукнкциясы нәтиже ретінде жіберілген литерді немесе қате болған жағдайда EOF-ты қайтарады.
Printf функциясымен орындалатын шығару, сондай-ақ стандартты шығу ағынына жіберіледі putchar және printf-ды қалауымыз бойынша кезектесіп шығаруға болады, бұдан шығару осы функциялар шақыратын жүйелілікпен қалыптасады.
3.Гүлді клумба дөңгелектің формасын береді. Радиусы белгілі болса, оның периметрі мен ауданын есепте.
#include<stdio.h>
void main()
{
float r; //радиус круга
float PI=3.14; //число пи
float s ;
printf("Введите два вещественных числа, r, \n");
scanf("%f ", &r);
printf("\n");
printf("Вы ввели радиус и высоту циллиндра=%f ", r);
printf("\n");
getchar();
s=PI*r*r;
printf("s=%f",s);
printf("\n");
printf("Для выхода нажмите клавишу ");
getchar();
}
Билет №27
1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
2.Енгізу-шығару мүмкіндіктері Си тілінің негізгі бөлігі емес. Нақтылы программалар біз сөз қылғандарға қарағанда, өзін қоршағандармен өте күрделі тәсілдермен өзара әрекеттеседі.
Библиотекалық енгізу-шығару функциясы ANSI стандартымен дәл анықталады, сондықтан Си-де қолдау болатын кез-келген қондырғымен байланысты. Осы функциялар енгізу-шығару мәтінінің қарапайым моделін іске асырады. Мәтіндік ағын жолдар тізбегінен тұрады; әр жол жаңа литер жолымен аяқталады.
Енгізудің қарапайым механизмі ағынның келесі литерін қайтаратын немесе егер файлдың EOF соңы табылса getchar функциясының бір литерін оқу:
int getchar ( void)
әдетте EOF = -1 мәніне тең.
int putchar (int) функциясы шығару үшін қолданылады: putchar (c) с литерін стандартты шығаруға (экран) жібереміз. putchar фукнкциясы нәтиже ретінде жіберілген литерді немесе қате болған жағдайда EOF-ты қайтарады.
Printf функциясымен орындалатын шығару, сондай-ақ стандартты шығу ағынына жіберіледі putchar және printf-ды қалауымыз бойынша кезектесіп шығаруға болады, бұдан шығару осы функциялар шақыратын жүйелілікпен қалыптасады.
3.
#include <stdio.h>
intmain()
{
for(inti=0,s=0;i<=100;i++)
s+=i;
s+=5;
printf("mani%d\n",s);
return 0;
}
Билет №28
1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
2.Файлдан оқу немесе файлға жазу үшін ол әрі қарай файлға қатынас жасау үшін қолданылған көрсеткішті қайтаратын, библиотекалық fopen функциясының көмегімен алдын-ала ашылуы керек.
Файлдың көрсеткіші деп аталатын бұл көрсеткіш, файл туралы ақпараттан (буфер адресі, буфердегі ағымдық литердің жағдайы, файл оқуға немесе жазуға ашық па, файлмен жұмыс істеуде қате бар ма және файлдың соңы кездестіме) тұратын құрылымға жіберіледі. <stdio.h>-тан алынған анықтамалар FILE деп аталатын құрылымның сипаттамасын қосатын болғандықтан, қолданушыға толығымен білу керек емес. Тек қана файл көрсеткішін анықтау үшін талап етілетін бұл келесі түрдегі декларацияны беру:
FILE * fp;
FILE * fopen(char*name, char* mode);
Файлдан оқу мен файлға жазудың бірнеше тәсілдері бар. Ең қарапайымы getc және putc функцияларын қолдану. int getc ( FILE*fp) функциясы с литерін *fp файылына жазады және қате болған жағдайда, жазылған литерді немесе EOF-ті қайтарады.
Файлдардың форматты енгізу-шығаруын scanf және printf функцияларында тұрғызуға болады. Олар scanf және printf-тің, олардың бірінші аргументі файлға көрсеткіш болып табылатын айырмашылығымен ұқсас
int fscanf( FILE*fp, char * format,…)
int fprintf( FILE*fp, char * format,…)
3.
Билет №29
1. Көрсеткіш - бұл айнымалы адресінен тұратын айнымалы. Көрсеткіштер Си-де кеңінен пайдаланылады, бір жағынан кейбір жағдайларда да оларсыз мүмкін емес, ал бір жағынан программалар олармен қысқа және тиімді құрылады. Белгілі тәртіпті көрсеткіштердің көмегімен сақтау кезінде түсініктілікке пен қарапайымдылыққа жетуге болады.
Келесі бірнеше жолдар * және & операторлары қалай қолданылатынын көрсетеді.
ip=&x; // көрсеткішке х айнымалысының адресі меншіктелген ip - х-ті көрсетеді
y=*ip; // y енді 2-ге емес, 1-ге тең
*ip=0; // х енді 0-ге тең
ip=z; // ip - z (бастапқы) массивінің 0 ші элементін көрсетеді.
ip = &z [5]; // ip - енді z массивтің 5 элементін көрсетеді.
Бұдан көрсеткіш айнымалысы декларацияның синтаксисі, бұл айнымалы кездесуі мүмкін болатын "синтаксис” өрнегіне бейімделеді. Көрсетілген принципті функцияны сипаттау қатынасында да қолданамыз. Мысалы, double *dp, atof(char*) жазбасы *dp және atof (s) өрнегі double типінен екендігін, ал atof функциясының аргументі char-дың көрсеткіші (нақты түрде, стрингті көрсету) екенін білдіреді.
Көрсеткішке берілген типтің объектісіне ғана жіберілуіне рұқсат етілген.
void-тың көрсеткіші кез-келген типті объектіге сілтенуі мүмкін, бірақ мұндай көрсеткішке сілтемені ашу операторын қолдануға болмайды.
Көрсеткіштердің өзі айнымалылар болғандықтан, мәтінде олар сілтемені ашу операторынсыз да кездесуі мүмкін.
Си-де функциялар өзінің аргументтері ретінде параметрлер мәнін қабылдайтын болғандықтан, тікелей мүмкіншілік шақырылатын функцияда айнымалыны өзгертуге болмайды.
Қажетті нәтижені алу үшін, шақырылатын программада өзгертілуі тиісті мәнге көрсеткіштерді беру қажет. Бұл жағдайда шақырылатын функция формальды параметрлердің көрсеткіштер ретінде сипатталуы қажет, бұдан параметрлердің мәніне қатынасу олар арқылы жанама түрде жүргізіледі. Формальды параметрлер шақырылатын функцияда оның программасын шақыратын объектіге қатынасуды жүзеге асыратын көрсеткіштер және осы объектілерді өзгертуге мүмкіндік береді.
Программада сұрыптауды екі реттелмеген элементтердің орнын ауыстыратын swap функциясы арқылы орындалатынын қарастырайық.
Егер swap функциясы келесі түрде анықталса:
void swap (int x, int y)
{ int temp;
temp=x; x=y; y=temp;
}
онда swap(a,b)-ны шақыру a мен b айнымалыларына ешқандай әсер етпейді, swap олардың мәндерінің көшірмесін ғана алады.Нәтижеге жету үшін алмастырулар, swap функциясының формальды параметрлері көрсеткіш ретінде сипатталуы керек, алфункцияны шақырудағы аргументтер , swap (&a, &b)-ның сәйкес параметрлерінің адрестерімен көрсетілуі тиіс..
void swap (int *px, int *py)
{int temp;
temp=*px; *px=*py; *py=temp;
}
2. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
3. у функциясының 0 < y < 3.2 шартын қанағаттандыратын барлық мәнінің қосындысын және көбейтіндісін табу керек.
#include <stdio.h>
void main()
{
Int I;
Float sum1;sum2;
Sum1=0;sum2=1;
For(i=0;i<3.2;i++)
Sumkos=sum1=I;
Sumkob=sum2*I;
Pritf(“%f%f”,sumkos;sumkob);
}
Билет №30
1.Құрылым бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атауға топтастырылған бір немесе бірнеше айнымалылыр (әр түрлі болуы мүмкін). Құрылымдар күрделі мәліметтерді (әсіресе үлкен программаларда) ұйымдастыруға көмектеседі және өзара байланысқан айнымалылар тобын жиынның жеке элементіндей емес, бір тұтас ретінде түсіндіреді.
Құрлымның кең таралған мысалы төлемдік ведомостардың жолдары. Ол ведомост қызметкерлердің толық аты, адресі, социалды сақтандыру карточкаларының нөмері, еңбек ақысы және т.б. мәліметтерден тұрады. Осы мінездемелердің кейбіреуінің өзі құрылым болуы мүмкін: мысалы, толық ат, сол сияқты адресі және еңбек ақының өзі бірнеше компоненттерден тұрады. Си үшін басқа әдеттегі, мысалы график аймағынан: нүкте координаттар жұбы, тікбұрыш нүктелер жұбы және т.б. болып табылады.
Құрылымдар көшірілуі мүмкін, олармен меншіктеу операциялары орындалуы мүмкін, оларды функцияға аргументтер ретінде беруге болады және ол функцияны олардың нәтижелері ретінде қайтаруға болады. Автоматты құрылым мен массивтер үшін сол сияқты инициализация рұқсат етіледі.
«Нүкте» құрлымының декларациясы келесі түрде болады:
structpoint
{ intx; \\ декларация тізімі фигуралы жақшада
inty;
};
point бұл құрылым тегі (аты) (tag ярлык, этикетка).
Тег берілген түрдегі құрлымның атын береді және әрі қарай фигуралы жақшамен аяқталған декларацияның қысқаша белгіленуі ретінде қызмет атқарады.
Құрылымда тізілген айнымалылар мүшелер деп аталады. Тегтер мен мүшелердің аттары программаның кәдімгі айнымалыларының аттармен сәйкес келуі мүмкін. Мүшелердің аттары әртүрлі құрлымдарда кездесуі мүмкін. .
Құрлым декларациясы бұл тип.
struct {…}x,y,z;
жазбасы құрлымдық типтің үш айнымалыларының сипаттамасын білдіреді.
Айнымалылар тізімінен тұрмайтын құрылым декларациясы жадыны резервке алмайды: ол тек шаблонды немесе құрылым үлгісін сипаттайды. Егер құрылымның тегі болмаса, онда осы тегтерді объектілерді анықтауда қолдануға болады. Мысалы, struct point pt; декларациясы struct point типті pt құрылымдық айнымалыны анықтайды.Автоматты құрылымдарды (auto жады класының құрлымы) сәйкес келетін типтегі құрылым түрінде нәтижені қайтаратын меншіктеумен немесе функцияға айналдырумен инициализациялауға болады.
Құрылымдарға орындалатын операциялар бұл оларды көшіру, меншіктеу, & операторының көмегімен аталатын адрес және олардың мүшелеріне қатысудың жүзеге асырылуы. Құрылымды функцияға аргумент ретінде беру және оларды нәтиже түрінде функциялардан қайтару. Сондай-ақ көшіру және меншіктеу операцияларына жатады. Құрылымдарды салыстыруға болмайды.
Құрылымдық объектілерді функцияға берудің үш тәсілі бар:
компоненттерді (мүшелерді) жеке беру;
барлық құрылымдарды түгелдей беру;
көрсеткішті құрылымға беру.
Егер функцияға, оны түгелдей көшіретін үлкен құрылым берілсе, көрсеткішті оған беру тиімдірек.
2. Көрсеткіш - бұл айнымалы адресінен тұратын айнымалы. Көрсеткіштер Си-де кеңінен пайдаланылады, бір жағынан кейбір жағдайларда да оларсыз мүмкін емес, ал бір жағынан программалар олармен қысқа және тиімді құрылады. Белгілі тәртіпті көрсеткіштердің көмегімен сақтау кезінде түсініктілікке пен қарапайымдылыққа жетуге болады.
Келесі бірнеше жолдар * және & операторлары қалай қолданылатынын көрсетеді.
ip=&x; // көрсеткішке х айнымалысының адресі меншіктелген ip - х-ті көрсетеді
y=*ip; // y енді 2-ге емес, 1-ге тең
*ip=0; // х енді 0-ге тең
ip=z; // ip - z (бастапқы) массивінің 0 ші элементін көрсетеді.
ip = &z [5]; // ip - енді z массивтің 5 элементін көрсетеді.
Бұдан көрсеткіш айнымалысы декларацияның синтаксисі, бұл айнымалы кездесуі мүмкін болатын "синтаксис” өрнегіне бейімделеді. Көрсетілген принципті функцияны сипаттау қатынасында да қолданамыз. Мысалы, double *dp, atof(char*) жазбасы *dp және atof (s) өрнегі double типінен екендігін, ал atof функциясының аргументі char-дың көрсеткіші (нақты түрде, стрингті көрсету) екенін білдіреді.
Көрсеткішке берілген типтің объектісіне ғана жіберілуіне рұқсат етілген.
void-тың көрсеткіші кез-келген типті объектіге сілтенуі мүмкін, бірақ мұндай көрсеткішке сілтемені ашу операторын қолдануға болмайды.
Көрсеткіштердің өзі айнымалылар болғандықтан, мәтінде олар сілтемені ашу операторынсыз да кездесуі мүмкін.
Си-де функциялар өзінің аргументтері ретінде параметрлер мәнін қабылдайтын болғандықтан, тікелей мүмкіншілік шақырылатын функцияда айнымалыны өзгертуге болмайды.
Қажетті нәтижені алу үшін, шақырылатын программада өзгертілуі тиісті мәнге көрсеткіштерді беру қажет. Бұл жағдайда шақырылатын функция формальды параметрлердің көрсеткіштер ретінде сипатталуы қажет, бұдан параметрлердің мәніне қатынасу олар арқылы жанама түрде жүргізіледі. Формальды параметрлер шақырылатын функцияда оның программасын шақыратын объектіге қатынасуды жүзеге асыратын көрсеткіштер және осы объектілерді өзгертуге мүмкіндік береді.
Программада сұрыптауды екі реттелмеген элементтердің орнын ауыстыратын swap функциясы арқылы орындалатынын қарастырайық.
Егер swap функциясы келесі түрде анықталса:
void swap (int x, int y)
{ int temp;
temp=x; x=y; y=temp;
}
онда swap(a,b)-ны шақыру a мен b айнымалыларына ешқандай әсер етпейді, swap олардың мәндерінің көшірмесін ғана алады.Нәтижеге жету үшін алмастырулар, swap функциясының формальды параметрлері көрсеткіш ретінде сипатталуы керек, алфункцияны шақырудағы аргументтер , swap (&a, &b)-ның сәйкес параметрлерінің адрестерімен көрсетілуі тиіс..
void swap (int *px, int *py)
{int temp;
temp=*px; *px=*py; *py=temp;
}
3.jok
Билет №31
1.Құрылым бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атауға топтастырылған бір немесе бірнеше айнымалылыр (әр түрлі болуы мүмкін). Құрылымдар күрделі мәліметтерді (әсіресе үлкен программаларда) ұйымдастыруға көмектеседі және өзара байланысқан айнымалылар тобын жиынның жеке элементіндей емес, бір тұтас ретінде түсіндіреді.
Құрлымның кең таралған мысалы төлемдік ведомостардың жолдары. Ол ведомост қызметкерлердің толық аты, адресі, социалды сақтандыру карточкаларының нөмері, еңбек ақысы және т.б. мәліметтерден тұрады. Осы мінездемелердің кейбіреуінің өзі құрылым болуы мүмкін: мысалы, толық ат, сол сияқты адресі және еңбек ақының өзі бірнеше компоненттерден тұрады. Си үшін басқа әдеттегі, мысалы график аймағынан: нүкте координаттар жұбы, тікбұрыш нүктелер жұбы және т.б. болып табылады.
Құрылымдар көшірілуі мүмкін, олармен меншіктеу операциялары орындалуы мүмкін, оларды функцияға аргументтер ретінде беруге болады және ол функцияны олардың нәтижелері ретінде қайтаруға болады. Автоматты құрылым мен массивтер үшін сол сияқты инициализация рұқсат етіледі.
«Нүкте» құрлымының декларациясы келесі түрде болады:
structpoint
{ intx; \\ декларация тізімі фигуралы жақшада
inty;
};
point бұл құрылым тегі (аты) (tag ярлык, этикетка).
Тег берілген түрдегі құрлымның атын береді және әрі қарай фигуралы жақшамен аяқталған декларацияның қысқаша белгіленуі ретінде қызмет атқарады.
Құрылымда тізілген айнымалылар мүшелер деп аталады. Тегтер мен мүшелердің аттары программаның кәдімгі айнымалыларының аттармен сәйкес келуі мүмкін. Мүшелердің аттары әртүрлі құрлымдарда кездесуі мүмкін. .
Құрлым декларациясы бұл тип.
struct {…}x,y,z;
жазбасы құрлымдық типтің үш айнымалыларының сипаттамасын білдіреді.
Айнымалылар тізімінен тұрмайтын құрылым декларациясы жадыны резервке алмайды: ол тек шаблонды немесе құрылым үлгісін сипаттайды. Егер құрылымның тегі болмаса, онда осы тегтерді объектілерді анықтауда қолдануға болады. Мысалы, struct point pt; декларациясы struct point типті pt құрылымдық айнымалыны анықтайды.Автоматты құрылымдарды (auto жады класының құрлымы) сәйкес келетін типтегі құрылым түрінде нәтижені қайтаратын меншіктеумен немесе функцияға айналдырумен инициализациялауға болады.
Құрылымдарға орындалатын операциялар бұл оларды көшіру, меншіктеу, & операторының көмегімен аталатын адрес және олардың мүшелеріне қатысудың жүзеге асырылуы. Құрылымды функцияға аргумент ретінде беру және оларды нәтиже түрінде функциялардан қайтару. Сондай-ақ көшіру және меншіктеу операцияларына жатады. Құрылымдарды салыстыруға болмайды.
Құрылымдық объектілерді функцияға берудің үш тәсілі бар:
компоненттерді (мүшелерді) жеке беру;
барлық құрылымдарды түгелдей беру;
көрсеткішті құрылымға беру.
Егер функцияға, оны түгелдей көшіретін үлкен құрылым берілсе, көрсеткішті оған беру тиімдірек.
2. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
3.Тізім бойынша студенттердің номерін енгіз. Оның фамилиясын шығар.
include<stdio.h>
void main()
{
int familia;
Puts (“\n;”Studentter tizimin engiz”);
printf("->");
scanf("%i",&familia);
{
case 1: printf("Kurakova G");break;
case 2 : printf("Amzeeva J"); break;
case 3 : printf("Abilkakova A"); break;
case 4 : printf("Otikeeva K"); break;
case 5 : printf("KOjageldi A"); break;
default: printf (“Studentter familiasin wigaru”)
}
getch();
}
Билет №32
1. Көрсеткіш - бұл айнымалы адресінен тұратын айнымалы. Көрсеткіштер Си-де кеңінен пайдаланылады, бір жағынан кейбір жағдайларда да оларсыз мүмкін емес, ал бір жағынан программалар олармен қысқа және тиімді құрылады. Белгілі тәртіпті көрсеткіштердің көмегімен сақтау кезінде түсініктілікке пен қарапайымдылыққа жетуге болады.
Келесі бірнеше жолдар * және & операторлары қалай қолданылатынын көрсетеді.
ip=&x; // көрсеткішке х айнымалысының адресі меншіктелген ip - х-ті көрсетеді
y=*ip; // y енді 2-ге емес, 1-ге тең
*ip=0; // х енді 0-ге тең
ip=z; // ip - z (бастапқы) массивінің 0 ші элементін көрсетеді.
ip = &z [5]; // ip - енді z массивтің 5 элементін көрсетеді.
Бұдан көрсеткіш айнымалысы декларацияның синтаксисі, бұл айнымалы кездесуі мүмкін болатын "синтаксис” өрнегіне бейімделеді. Көрсетілген принципті функцияны сипаттау қатынасында да қолданамыз. Мысалы, double *dp, atof(char*) жазбасы *dp және atof (s) өрнегі double типінен екендігін, ал atof функциясының аргументі char-дың көрсеткіші (нақты түрде, стрингті көрсету) екенін білдіреді.
Көрсеткішке берілген типтің объектісіне ғана жіберілуіне рұқсат етілген.
void-тың көрсеткіші кез-келген типті объектіге сілтенуі мүмкін, бірақ мұндай көрсеткішке сілтемені ашу операторын қолдануға болмайды.
Көрсеткіштердің өзі айнымалылар болғандықтан, мәтінде олар сілтемені ашу операторынсыз да кездесуі мүмкін.
Си-де функциялар өзінің аргументтері ретінде параметрлер мәнін қабылдайтын болғандықтан, тікелей мүмкіншілік шақырылатын функцияда айнымалыны өзгертуге болмайды.
Қажетті нәтижені алу үшін, шақырылатын программада өзгертілуі тиісті мәнге көрсеткіштерді беру қажет. Бұл жағдайда шақырылатын функция формальды параметрлердің көрсеткіштер ретінде сипатталуы қажет, бұдан параметрлердің мәніне қатынасу олар арқылы жанама түрде жүргізіледі. Формальды параметрлер шақырылатын функцияда оның программасын шақыратын объектіге қатынасуды жүзеге асыратын көрсеткіштер және осы объектілерді өзгертуге мүмкіндік береді.
Программада сұрыптауды екі реттелмеген элементтердің орнын ауыстыратын swap функциясы арқылы орындалатынын қарастырайық.
Егер swap функциясы келесі түрде анықталса:
void swap (int x, int y)
{ int temp;
temp=x; x=y; y=temp;
}
онда swap(a,b)-ны шақыру a мен b айнымалыларына ешқандай әсер етпейді, swap олардың мәндерінің көшірмесін ғана алады.Нәтижеге жету үшін алмастырулар, swap функциясының формальды параметрлері көрсеткіш ретінде сипатталуы керек, алфункцияны шақырудағы аргументтер , swap (&a, &b)-ның сәйкес параметрлерінің адрестерімен көрсетілуі тиіс..
void swap (int *px, int *py)
{int temp;
temp=*px; *px=*py; *py=temp;
}
2. if және case операторларымен жұмыс.
If
Тармақталу процестері бар алгоритмдерді ұйымдастыру үшін шартты операторлар пайдаланылады. Тармақталу белгілі бір шарттың орындалуы немесе орындалмауына тәуелді атқарылады. Кейде бір тармақ ешбір амал орындалмай да қала береді.
If шартты операторы. If (егер) операторы программадағы іс-әрекеттердің орындалу реттілігін өзгертетін мүмкіндіктің ең кең тараған тәсілі болып табылады.
If THEN ELSE немесе қысқартылған түрде IF THEN Мұндағы 1- және 2- операторлардың өздері қарапайым немесе құрама оператор болуы мүмкін.
Case
Тармақталу операторында белгілі бір шарттың орындалуы немесе орындалмауына байланысты алгоритмнің 1- немесе 2- операторы орындалады, көбінесе мүмкін болған жағдайда, екеуі емес одан да көп болады, яғни процесс көп тармақты болады.
Таңдау операторы (case) бірнеше операторлардың ішінен таңдау жолымен көп тарамды тармақталуды ұйымдастырады.
CASE таңдау операторы көп тармақты алгоритмдерді барынша қарапайым және көрнекі түрде жазуға мүмкіндік береді. Оның құрамында селектор (selector таңдау) деп аталатын өрнек және параметрлер тізімі болуы тиіс, әрбір параметрге сәйкес таңдау тұрақтылары болуы қажет.
Таңдау командасы былай орындалады: алдымен селектор-өрнек мәні есептеледі де, ол тұрақтылармен салыстырылады. Егер өрнектің мәні 1-тұрақтыға тең болса, онда 1-оператор орындалады, ал өрнектін мәні 2-тұрақтыға тең болса, онда 2-оператор, 3-тұрақтыға тең болса, онда 3-оператор т.б. тізімдегі тек бір ғана оператор орындалады да, таңдау командасы осымен аяқталады.
сase of
: ;
: ;
еlse ;
еnd.
3. Трамвай номерін енгіз. Оның соңғы аялдамасын шығар
#include<stdio.h>
#include<conio.h>
void main()
{intaialdama; // Трамвайномері
puts (“\n “Трамвай нөмерін енгіз”);
printf(“−>“);
scanf(“%t”,&aialdama);
{
case 4 puts(“Tole bi-Auezova”); break;
Case 1 puts (“Tashkentski-avrora”); break;
case 2 put (“Abaia-Jarokova”); break;
defaull(“Трамвайдың соңғы аялдамасын шығару”);
}
getch(); }
Билет №33
1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
2. Көрсеткіш - бұл айнымалы адресінен тұратын айнымалы. Көрсеткіштер Си-де кеңінен пайдаланылады, бір жағынан кейбір жағдайларда да оларсыз мүмкін емес, ал бір жағынан программалар олармен қысқа және тиімді құрылады. Белгілі тәртіпті көрсеткіштердің көмегімен сақтау кезінде түсініктілікке пен қарапайымдылыққа жетуге болады.
Келесі бірнеше жолдар * және & операторлары қалай қолданылатынын көрсетеді.
ip=&x; // көрсеткішке х айнымалысының адресі меншіктелген ip - х-ті көрсетеді
y=*ip; // y енді 2-ге емес, 1-ге тең
*ip=0; // х енді 0-ге тең
ip=z; // ip - z (бастапқы) массивінің 0 ші элементін көрсетеді.
ip = &z [5]; // ip - енді z массивтің 5 элементін көрсетеді.
Бұдан көрсеткіш айнымалысы декларацияның синтаксисі, бұл айнымалы кездесуі мүмкін болатын "синтаксис” өрнегіне бейімделеді. Көрсетілген принципті функцияны сипаттау қатынасында да қолданамыз. Мысалы, double *dp, atof(char*) жазбасы *dp және atof (s) өрнегі double типінен екендігін, ал atof функциясының аргументі char-дың көрсеткіші (нақты түрде, стрингті көрсету) екенін білдіреді.
Көрсеткішке берілген типтің объектісіне ғана жіберілуіне рұқсат етілген.
void-тың көрсеткіші кез-келген типті объектіге сілтенуі мүмкін, бірақ мұндай көрсеткішке сілтемені ашу операторын қолдануға болмайды.
Көрсеткіштердің өзі айнымалылар болғандықтан, мәтінде олар сілтемені ашу операторынсыз да кездесуі мүмкін.
Си-де функциялар өзінің аргументтері ретінде параметрлер мәнін қабылдайтын болғандықтан, тікелей мүмкіншілік шақырылатын функцияда айнымалыны өзгертуге болмайды.
Қажетті нәтижені алу үшін, шақырылатын программада өзгертілуі тиісті мәнге көрсеткіштерді беру қажет. Бұл жағдайда шақырылатын функция формальды параметрлердің көрсеткіштер ретінде сипатталуы қажет, бұдан параметрлердің мәніне қатынасу олар арқылы жанама түрде жүргізіледі. Формальды параметрлер шақырылатын функцияда оның программасын шақыратын объектіге қатынасуды жүзеге асыратын көрсеткіштер және осы объектілерді өзгертуге мүмкіндік береді.
Программада сұрыптауды екі реттелмеген элементтердің орнын ауыстыратын swap функциясы арқылы орындалатынын қарастырайық.
Егер swap функциясы келесі түрде анықталса:
void swap (int x, int y)
{ int temp;
temp=x; x=y; y=temp;
}
онда swap(a,b)-ны шақыру a мен b айнымалыларына ешқандай әсер етпейді, swap олардың мәндерінің көшірмесін ғана алады.Нәтижеге жету үшін алмастырулар, swap функциясының формальды параметрлері көрсеткіш ретінде сипатталуы керек, алфункцияны шақырудағы аргументтер , swap (&a, &b)-ның сәйкес параметрлерінің адрестерімен көрсетілуі тиіс..
void swap (int *px, int *py)
{int temp;
temp=*px; *px=*py; *py=temp;
}
3. Қаланың телефонкодын енгіз. Қаланың атын шығар.
include<stdio.h>
voidmain()
{
inttramvai;
printf("Введите номер трамвая : ");
scanf("%i",&tramvai);
switch (tramvai %100 )
{
case 34 : printf("Сейфуллина Шевченко");break;
case 7 : printf("Абая Байтурсынова"); break;
case 119 : printf("Жарокова"); break;
case 126 : printf("Толе би"); break;
case 37 : printf("Вокзал -1"); break;
case 18 : printf("Атакент"); break;
case 63: printf("Алмагуль-2"); break;
case 30 :printf("Сейфуллина Гоголя"); break;
case 73: printf("Саяхат"); break;
default: printf("Введите номер трамвая");
}
printf("\nВведите ENTER");
getch();
}
Билет №34
1.Программалау теориясында кез келген күрделі программаны 3 түрлі құрылымнан құрастыруға болатыны дәлелденген, олар:
сызықтық, тармақты және циклдік құрылымдар. Осы 3-еуі құрылымдық программалаудың негізгі конструкциялары, яғни
құраушылары болып саналады.
Сызықтық құрылым бірінен кейін бірі орындалып тізбектеле орналасқан бірнеше операторлардан тұрады. Берілген текст (source code)-программалау тіліндегі программа тесті.
Объектілік код (object code)- машиналық тілдегі программа тесті,бір тексті компьютер орындай алмайды.
Компановшик (Linker)-объектілік модульдерден тұратын орындалатын модуль жасайтын программа. Бұл программа компиляцияланған программа тексті мен стандартты кітапхана функцияларынан тұратын программа жасайды.
Кітапхана (Lidrari)-компиляцияланған түрде сақталатын,алдын-ала анықталынған айнымалыларды мен тұрақтылары бар функциялар жиынтығы.
Компиляция уақыты(compiler time)-программаны компиляциялауға кеткен уақыт. Компиляция кезінде синтактін қателер анықталады
Билет №31
2.Құрылым бұл айнымалылармен жұмыс істеу ыңғайлы болу үшін бір атауға топтастырылған бір немесе бірнеше айнымалылыр (әр түрлі болуы мүмкін). Құрылымдар күрделі мәліметтерді (әсіресе үлкен программаларда) ұйымдастыруға көмектеседі және өзара байланысқан айнымалылар тобын жиынның жеке элементіндей емес, бір тұтас ретінде түсіндіреді.
Құрлымның кең таралған мысалы төлемдік ведомостардың жолдары. Ол ведомост қызметкерлердің толық аты, адресі, социалды сақтандыру карточкаларының нөмері, еңбек ақысы және т.б. мәліметтерден тұрады. Осы мінездемелердің кейбіреуінің өзі құрылым болуы мүмкін: мысалы, толық ат, сол сияқты адресі және еңбек ақының өзі бірнеше компоненттерден тұрады. Си үшін басқа әдеттегі, мысалы график аймағынан: нүкте координаттар жұбы, тікбұрыш нүктелер жұбы және т.б. болып табылады.
Құрылымдар көшірілуі мүмкін, олармен меншіктеу операциялары орындалуы мүмкін, оларды функцияға аргументтер ретінде беруге болады және ол функцияны олардың нәтижелері ретінде қайтаруға болады. Автоматты құрылым мен массивтер үшін сол сияқты инициализация рұқсат етіледі.
Егер функцияның формалды парамерлерінің тізімі көп нүктемен аяқталса, оны шықырған кезде осы жерде тағы бірнеше параметр көрсетуге болатының білдіреді. Бұл параметрлер үшін типтердің сәйкестңгңн тексеру орындалмады, char және short типтері int ретінде,ал float типі doubleретінде беріледі. мысал ретінде printf функциясын келтіруге болады, оның прототипі келесі түрде береледі:
Int printf (const char*,…);
Жоғарыдағы мысал функцияны шақыру кезңнде кем бір char* типті парамерт болуын және басқа параметрлердің болуы немесе болмауы мүмкін екендігін көрсетеді.
Printf (“бастапқы мәліметтерді енгізініз”); //бір параметр
Printf(“қосынды; &5.2f теңге “ , sum); //екі парамер
Printf(“&d &d &d”,a ,b, c, d); //бес параметр
Функция ішіндегі міндетті емес параметрлерге қол жеткізу үшін stdarg.h> тақырыптық файлында орналасқан va_start, va_arg және va_end кітапхана макростары қолданылады.
3. Қаланың телефонкодын енгіз. Қаланың атын шығар.
include<stdio.h>
voidmain()
{
inttramvai;
printf("Введите номер трамвая : ");
scanf("%i",&tramvai);
switch (tramvai %100 )
{
case 34 : printf("Сейфуллина Шевченко");break;
case 7 : printf("Абая Байтурсынова"); break;
case 119 : printf("Жарокова"); break;
case 126 : printf("Толе би"); break;
case 37 : printf("Вокзал -1"); break;
case 18 : printf("Атакент"); break;
case 63: printf("Алмагуль-2"); break;
case 30 :printf("Сейфуллина Гоголя"); break;
case 73: printf("Саяхат"); break;
default: printf("Введите номер трамвая");
}
printf("\nВведите ENTER");
getch();
}