- •5В070500- Математикалық және компьютерлік модельдеу
- •V алғашқы тексеру мерзімі 2013 жыл тексеру мерзімділігі 1 жыл
- •Оқу пәнінің жұмыс бағдарламасы
- •Тексеру мерзімділігі 1 жыл
- •Пәнді оқып үйрену нәтижесінде студенттің меңгеруге тиісті негізгі түсініктері, білімдері, біліктіліктері және дағдылары:
- •Бақылаушы-өлшемдік материалдар мысалы
- •Келісу парағы оқу пәнінің жұмыс бағдарламасы
- •Оқыту бойынша әдістемелік нұсқау
- •Дәрістер
- •Тапсырмалар:
- •Графикалық режимнің функциялары.
- •Void arc(int X, inty, int бұрышбасы, int бұрыш соңы, int радиус);
- •Боялған фигуралар салу процедуралары.
- •Бақылау сұрақтары
- •Пактикалық сабақтар
- •Лаборотория
- •Есеп мазмұны
- •Есеп мазмұны
- •Вариант .
- •Тапсырмалар
- •Есеп мазмұны
- •Есеп мазмұны
- •Есеп мазмұны
- •Вариант .
- •17. Вариант .
- •Есеп мазмұны
- •Тапсырма варианттары
- •Есеп мазмұны
- •Есеп мазмұны
- •Есеп мазмұны
- •Бақылау-өлшемдік материалдары үлгілері
- •Қосымша әдебиеттер
- •Келісу парағы пәннің оқу-әдістемелік кешені
Тапсырмалар:
Символдар жолы берілген. «а» әріпінен басталатын сөздерді
тауып, «а» әріпінен басталатын ең үлкен сөзді баспаға шығару
программасын құр.
Символдар жолы берілген. Жолды түрлендір: барлық леп
белгісін нүктеге ауыстыр.
Символдар жолы берілген. Бірінші және соңғы символдары
өзара сәйкес келетін сөздің санын анықта.
Символдар жолы берілген. «а» әріпінен басталатын ең қысқа
сөзді тауып және оны жолдағы бірінші сөзбен алмастыр.
Символдар жолы берілген. Әріптен басқа барлық символдарды жойып және барлық кіші әріптерді үлкен әріптермен алмастыр.
Cтруктаралар және біріктірулер. Си тiлiндегi структура ұғымы Паскальдағы жазба ұғымына
ұқсас. Б±л структуралық текті әр түрлі тектерден тұратын элементтің анықталған жиыны. Структура тегі – ақпараттық ж‰йелерді және мәліметтер қоймасын өңдеуде қолданылады.
Мысал: Студенттерге стипендия төлеу жұмысын төмендегідей етіп ұйымдастыруға болады.
Фамилия Курс Группа Стипендия
Мұндағы, структураның элементтері: фамилия…стипендия өріс (поле) деп аталады. Әрбір өріске сәйкес атау және тек беріледі.
1. Структуралық тектің сипаттау форматы мынадай:
struct аты типі
{элементтерді анықтаңыз};
struct sutdent {char fam[30];
int kurs;
char grup[3];
float stip;}
Студент - структуралық тегінің аты. Оны басқа кейбір айнымалыға бекітіп беруге болады.
struct student stud1 stud2;
stud1 , stud2- student текті айнымалылар. Структуралық айнымалыны сипатаудың басқа да н±сќалары бар. Тектің атын белгілеп алмай-ақ айнымалыларды бірден сиппаттауға болады.
stud1 ; stud2; *pst;
Бұл мысалда stud1 ; stud2 айнымалыларын басқа *pst деген көрсеткіш сипатталған. Өрістегі элементтерді структураның аты және элементін көрсету арқылы оқуға болады:
stud1.fam;
stud2.stip;
Структураның элементтерінің мәнін пернетаќтадан енгізуге болады, меншіктеу операторы арқылы енгізуге болады немесе инициализация арқылы анықталады.
Сипаттау инициализациясы
student stud1={“Кротов”,3,”Д32”,350};
Программа көрсеткіші анықталған болсын дейік.
student *pst,stud1.
Енді мына меншіктеу операторы орындалғаннан соң, Pst=&stud1- структуралық айнымалы stud1-ң әрбір элементін 3 тәсілмен анықтауға болады.
fam өрісі үшін:
stud1.fam немесе (*pst) fam немесе pst®fam.
® структураның элементіне жету операциясыныњ белгісі. Структура өрісінің өзінің структуралық тегі болуы мүмкін. Структурада массивті қолдануға болады.
Мысал: 100 студент туралы информация мына массивте student stud[100] сақталуы мүмкін. Онда бірінші студент туралы хабар stud[1].fam – массивінің бірінші элементінің фамилиясы. 25-ші студенттің фамилиясын сипаттайыќ.
student stud[25].fam.
/*Мысал 1*/
N студенттер туралы информация бар ең үлкен стипендия алатын студенттің фамилиясын анықтау қажет.
# include<iostream.h>
# include<conio.h>
void main ()
{const N=30;int i; float maxs;
struct student{ char fam[15];
int kurs;
char grup[3];
float stip; };
student stud[n];
clrscr();
for(i=0;i<N;i++)
{ printf(“%d-й студент”,i);
printf(“\n Фамилия:”);scanf(“%s”,&stud[i].fam);
printf(“\n Курс:”);scanf(“%s”,&stud[i].kurs);
printf(“\nГруппа :”);scanf(“%s”,&stud[i].grup);
printf(“\nСтипендия :”);scanf(“%s”,&stud[i].stip);
}
maxs=0;
for(i=0;i<N;i++)
if(stud[i].stip>maxs) maxs=stud[i].stip;
printf(“\nЖоѓары стипендия алатын студент %f ”,maxs);
for(i=0;i<N;i++)
if(stud[i].stip==maxs)
printf(“\n%s”, stud[i].fam);}
/*Мысал 2*/
Аттестация туралы мәлімет берілген. Студенттің фамилиясы, тобы, 5 пәннің аты және әрбір пән бойынша алынған балл саны. Осы пәндер бойынша аттаестациядан өтпеген студенттердің фамилиясын баспаға шығар.
Фамилия |
Тобы |
Матеем. |
Ағыл.т |
Физика |
Прог.алг |
ТОЭЦ |
Жалелов.Е |
10 гр. |
5 |
5 |
5 |
5 |
5 |
Ахметова.Б |
10 гр. |
5 |
5 |
5 |
5 |
5 |
Ешпанов.Б |
10 гр |
4 |
4 |
4 |
4 |
4 |
Жумагалиев.Б |
10 гр. |
4 |
4 |
4 |
4 |
4 |
Имашев.Р |
10 гр. |
3 |
3 |
3 |
3 |
3 |
#include<stdio.h>
#include<conio.h>
main( )
{ const N=5; int i;
struct student {char fam[15];
char grup[7];
int matem;
int english;
int fizika;
int prog;
int toec; };
student stud[N];
clrscr( );
for(i=0; i<N; i++)
{printf(“%d-ші студент”, i);
printf(“\n Фамилия:”); scanf(“%s”,& stud[i].fam);
printf(“тобы:”); scanf(“%s”,& stud[i].gpup);
scanf(“%d”,& stud[i].matem);
scanf(“%d”,& stud[i].english);
scanf(“%d”,& stud[i].fizika);
scanf(“%d”,& stud[i].prog);
scanf(“%d”,& stud[i].toec);
for(i=0; i<N; i++)
if(stud[i].matem==2|| stud[i].english==2|| stud[i].fizika==2|| stud[i].prog==2|| stud[i].toec==2)
printf(“\n %s”, stud[i].fam);
}
Студент туралы мәлімет келесі таблицада сақтаулы: фамилиясы, аты, бойы, салмағы.
Студенттің орташа бойын, ең ұзын және ең қысқа бойлы студентті табу.
Фамилия |
Аты |
Бойы |
Салмағы |
Дәрібаева |
Алия |
165 |
53 |
Мамбеталина |
Сандуғаш |
170 |
55 |
Ибрагимова |
Гаухар |
160 |
49 |
Қазыбаева |
Айжан |
158 |
45 |
Барсаев |
Ертай |
175 |
73 |
Ұзын-m
Қысқа-k
Орташа бойы-s
#include<stdio.h>
#include<conio.h>
main( )
{ const N=5; int i, s, m, k;
struct student {char fam[15];
char name[7];
int rost;
int ves;}
student stud[N];
clrscr( );
for(i=0; i<N; i++)
{printf(“%d-ші студент”, i);
printf(“\n Фамилия:”); scanf(“%s”,& stud[i].fam);
printf(“Аты:”); scanf(“%s”,& stud[i].name);
scanf(“%d”,& stud[i].rost);
scanf(“%d”,& stud[i].ves); }
s=0;
for(i=0; i<N; i++)
s=(s+ stud[i].rost)/5;
printf(“s=%d\n”,s);
m=0;
for(i=0; i<N; i++)
if(stud[i].rost>m) m= stud[i].rost;
printf(“\n Ењ ±зын бойлы студент %d метр”,m);
k= stud[i].rost;
for(i=0; i<N; i++)
if(stud[i].rost<k) k= stud[i].rost;
printf(“\n Ењ ќысќа бойлы студент %d метр”,k);
}
Жауабы:ең ұзын бойлы студент-175 см.
Ең қысқа бойлы студент-158 см.
Тапсырмалар:
Автомобильдер туралы мәлімет берілген: автомобиль иесінің Ф.А.Ж., бағасы, маркасы, және автомбиль номері. Автомобиль бағасының өсу реті бойынша автомобильдер туралы мәліметті баспаға шығару қажет.
Фирма қызметкерлері туралы мәлімет берілген: қызметкердің Ф.А.Ж., туған жылы, адресі, телефон номері. Жасы қызметкерлердің жасының орташа жасынан аспайтын қызметкерлер туралы мәліметті баспаға шығар.
Экспортқа шығарылатын тауарлар туралы мәлімет берілген:
елдің аты, импортқа шығарылатын тауар, тауардың аты және
бөлшектеп әкелінетін партияның көлемі. Берілген тауардың қай
елге экспортқа шығарылатындығын және оның жалпы көлемін
тап.
Дәріс 12. Функция.
Негізгі кілттік сөздер: Функция аты ,фактілік параметр тізімі,формальдық параметрлер.
Енді Си тілінде ішкі программамен жұмыс істеуді қарастырамыз.Си тілінде Паскальдан айырмашылығы подпрограмма функция бар. Си-да ішкі программаларды хабарлау келісілмеген.Себебі функция негізгі программалық бірлік болып табылады яғни ең кіші орынан программалық модуль болып табылады.Кез-келген программада негізгі функция main-ды қосады.Егер программада басқа да функциялар орындалатын болса,онда олар ішкі программа ролін атқарады:
Мыс: АВС санның ең үлкенін табу программасынқұрайық.Оны шығару үшін екі санның үлкенін табатын алгоритмін құрайық.
Max(a,b,c)=max(a,max(b,c)).
#include<iostreame>
//көмекші алгоритм
int MAX(int x;int y);
{if (>y) return x;
else return y;
}
//негізгі функция
void main()
{int a,b,c;
cout<<”a,b,c-ға мәндер енгізу”,cin>>a,b,c;
d=MAX(MAX(a,b),c);
cout<<”\n н сан =”<< d;
}
функцияны анықтау форматы:
типі,функцияның аты(параметр спецификатор)
{ функция денесі}
типі –функцияның нәтижесінің шығарған типі.
Функция аты –идентификатор, программисттің өзі береді.
Негізгі функция үшін main-параметр спецификатор. Функцияның формальдық параметрдің типтері көрсетілген тізімі.
Функция денесі-құрама оператор немесе блок. Блоктың белгісі болып программа объектің (айнымалылар, массивтер) сипатының болуы.
Блок {блок} орындалады.
Си да мынандай ереже бар: функция денесі басқа функциясының сипаттарын қамтамасыз ете алмайды.
Кез-келген функциядан басқа функцияға араласуға болады. Бірақ олар шақырылған функция үшін сыртқы функция болып қалады. Функциядан оны шақырған нүктеге қайта орналу return арқылы орындалады. Ол return <өрнек>. 1-ші жағдайда функция өзінің нәтижесі ретінде ешқандай мән қайтармайды. Ал 2-ші жағдайда функция нәтижесі өрнек болып табылады.
Функцияны шақыру формулалары:
Функция аты (фактілік параметр тізімі)
Си ішінде бұл өрнек формальдық және факторлық параметрлер арасында сәйкестік болу керек.
х,у – формальдық параметрлер.
а,в,с – фактілік параметрлер.
Функция. Ішкі программаға мысал.
Мынадай есеп шығарайық: әрбір нүктенің координаттары белгілі төртбұрыштың ауданын табайық. Төртбұрыштың ауданы 2 үшбұрыштың ауданының қосындысына тең. Әрбір үшбұрыштың ауданын Герон формуласы бойынша есепке болады. Ол үшін қабырғаның ұзындығын табу қажет. 1-ші және 2-ші төбенің арасындағы қабырға 2 2
L
12= (х1-х2) + (у1-у2) формуламен есептерді осы
сияқты басқа қабырғаларды да есептейміз.
Оны көмекші алгоритм ретінде қолданамыз.
# include<iostream.h>
# include<math.h>
# include<conio.h>
tupedef double D; // double типінің атын өзгерту.
D line (D,D,D,D); // line функциясының прототипі.
D Geron (D,D,D,D,D,D); // Герон функциясының прототипі.
// негізгі функция.
void main ( )
{D x1,y2,x1,y2,x3,y3,x4,y4,S1234;
clrscr ();
cout <<”x1=”; cin>>x1; cout <<”y1=”; cin>>y1;
cout <<”x2=”; cin>>x2; cout <<”y2=”; cin>>y2;
cout <<”x3=”; cin>>x3; cout <<”y3=”; cin>>y3;
cout <<”x4=”; cin>>x4; cout <<”y4=”; cin>>y4;
S1234=Geron(x1,y1,x2,y2,x3,y3,)+Geron (x1,y1,x2,y2,x3,y3,x4,y4);
cout<<”төртбұрыш ауданы =” ;<< S 1234}
//line функциясын анықтау.
D line (Da,Db,De,Dd);
{return sgrt ((a-c)*(a-c)+(b-c)+(b-d)*(b-d);}
//Geron функциясын анықтау.
D Geron (Da1,Db2,Db1,Db2,Dc1,Dc2);
{Dp,ab,bc,ca;
ab=line (a1,a2,b1,b2); bc=line (b1,b2,c1,c2);
ca=line (c1,c2,a1,a2);
p=(ab+bc+ca)/2;
return sgrt (p*(p-ab)*(p-bc)*(p-ca));
}
Бұл программада 3 стандарттық библиотекадан функциялар пайдаланылады.
Conio.h-экранға символдық режимде шығаруды, басқаруды ұйымдастырады. Бұл программаға тағы да бір элемент tupedef double D қосылды.
Tupedef-спецификатор . Типтерге синоним белгісі double деген ұзын сөздің орнына Dдеген әріп жазу. Тағы да бір жаңалық Geron функциясында line функциясы шақырылады.
Дәріс 13-14. Көрсеткіштер. С++ ортасында файлдармен жұмыс жасау алгоритмдері.
Негізгі кілттік сөздер: Көрсеткіш, көрсеткіш аты,fopen (), оқу үшін ашу, жазу үшін құру, қосымша жазбалар қосу үшін ашу, оқу және жазу үшін ашу, int fseek, stdio.h, Seek_sek, Seek_cur, Seek_end..
Көрсеткіштер. Көрсеткіш - программа объектісі сақталатын жады өрсінің объектісі .
Мысал: Программада 3 типті айнымалылар сипатталсын дейік. int a =5; char c = ‘a’; float r=1.2E8;
Бұл шамалар компилятор жадында былайша орналасқан болсын:
Жады |
FFC0 |
FFC1 |
FFC2 |
FFC3 |
FFC4… |
FFC6 |
Айнымалы |
A |
C |
R |
|
|
|
Мәндер |
5 |
G |
1.2E8 |
|
|
|
& - операциясы адресті береді.Бұл операцияны айнымалы атына қолдану сол айнымалының жадыдағы адресін береді, жоғарыдағы мысалдағы айнымалылар үшін &a=FFC0;&c=FFC1;
Көрсеткіштерді сипаттау. Адрестерді сипаттау үшін тегі “көрсеткіш болатын” айнымалылар қолданылады. Мұндай айнымалыларды сипаттау форматы мынадай: тек*айнымалы аты
Мысал:
int *pti;
float *ptf;
char *ptc;
Осындай сипаттамалардан кейін pti айнымалысы бүтін типті шаманы көрсететін мән қабылдайды т.с.с.
Көрсеткіштердегі объект адресінің мәндерінің тегі де айнымалыныњ тегіне сәйкес болу керек. pti=&a,ptc&=c т.с.
Нәтижесінде көрсеткіштер мынадай мәнге ие болады:
1. pti=FFC0 2.ptc=FFC1 3.ptf1=FFC2.
Басқа тектер сияқты көрсеткіш мәндері оларды сипаттау кезінде анықталуы мүмкін.
int a=5; int *pti=&a;
char c='G'; char ptc=&c;
float f=1.2E8; float pts=&r;
<stdio.h> тақырып файылында анықталған т±раќты көрсеткіш NULL аты бар, оның мәнін көрсеткішке меншіктеуге болады: ptf=NULL , бұл өрнек ptf көрсеткішті жадының 0-дік байтын көрсетеді деп ойлауға болады, сонымен ќатар 0-дік көрсеткішті көрсететін тиянақты адрестің жоқтығын көрсетеді. Жоғарыдағы сипаттамадан соң а мен *pti,с мен ptc, r мен ptf тең.
Мысал: х=a+2 немесе x=*pti+2 мына операциялар орындалғаннан кейін экранға cout<<pti<<a-55 санын шығарады.
Көрсеткіштерге қолданылатын операциялар
Көрсеткіштердің мәндерін өзгертетін өрнектер мен операторларды жазғанда есте сақталатын басты ереже бар:
көрсеткіш мәнінің өлшем бірлігі оған сәйкес тиектіњ µлшемі болып табылады.
Мысал: *pti=*pti+1 немесе *pti++. Көрсеткіш pti мәнін 2-ге өзгертеді. Сондықтан ол FFC2 мәнін қабылдайды. Басқа тип көрсеткіштері де сол сияқты *pti++- көрсеткіш мәнін 1-ге, *pti++ көрсеткіш мєнін 4-ке арттырады .
Көрсеткіштерді функция параметрлерін тасымалдау үшін қолдануға болады. Си тілінде тек қана бір жақты тасымалдау, функцияның формальдық параметрлеріне тасу бар. Қайтарылатын мәнді функцияның өзі алып жүреді. Басќаша айтќанда, функция орындалу барысында бас программада айнымалының мәндері өзгермейді, бірақ бұл ережені бұзуға болады, егер функция параметрі ретінде көрсеткіштерді алсақ. Біз қарастырған мысалда функция 8WAP( ) 2 айнымалысы шаманың мәндерін алмастырады.
Void swap (int a, int*b)
{ int c;
c=*a; a=b; *b=c;
}
Егер бас программада мынадай үзінді бар болса:
int x=1; y=2;
swap (&x,&y);
print (“x=%d y=%d”, xy) , онда экранға x=2 y=1 деп шығады.
Көрсеткіштік массивтер. Айталыќ, int x[10] болып массив хабарламасы болсын. Бұл жағдайда х компьютер жадындағы массивтің 0-ші элементтің көрсеткіштері болады.
x==&x[0] бұдан шығатын қорытынды массив элементіне жету үшін, оның индексі арқылы ғана емес көрсеткішті қолдануға болады.
x[5] *[x+5]
Көрсеткіштің өз адына дербес қосу ережесі бар. Си тілінде [] таңбасы массив адресін элемент индексімен қосуды білдіреді.
X[0]==-[x+0]
Дискідегі файлмен жұмыс жасау потокқа көрсеткішті хабарлаудан басталады. Мұндай хабарлаудың форматы мынадай болады:
FILE *көрсеткіш аты
Мысал: FILE*fp;
Файл сөзі структуралық тектің стандарттық аты. Ол <stdio.h> тақырып файлында хабарлануы болады, FILE структурасында потоктың ағымдағы орнының буфердегі көрсеткіші жєне көрсеткіш аќпараты болады. Келесі қадам потокты ашу болып табылады.. Ол стандартты функция fopen() арқылы ашылады.
Бұл функция поток көрсеткішіне дәл мән береді және оның мәні алдын-ала хабарланѓан көрсеткішке меншіктеледі.
Көрсеткіш аты=fopen (файл аты, ашу режимі).
Fopen функциясының параметрі символдық массивтің көрсеткіштері немесе т±раќтылар болуы мүмкін.
Fp=fopen (“star.dat,” ”r”)
star.dat- ағымдағы каталогтағы файылдың аты. “r” pежим параметрі - бұл файлдың оқу үшін ашылғанын көрсетеді.
Потокты ашу параметрі мен режимдері
Параметрлер:
R - оқу үшін ашу.
W - жазу үшін құру.
A - қосымша жазбалар қосу үшін ашу.
R+ - оқу және жазу үшін ашу.
W+ - оқу және жазу үшін құру.
а+ -қосу үшін ашу немесе оқу және қосу үшін құру.
Поток – текстік немесе екілік жүйедегі, алмасу режимі үшін ашылуы мүмкін.
Текстік файл - символдар тізбегі болып табылады. Ол арнайы код арќылы жазу қатарына бµлінеді. (код13) каретканы жылжыту және (код10) қатарды келесі жолға көшіреді. Егер файл текстік режимде ашылған болса, онда бұл файлдан оқығанда "каретканы жылжыту, келесі жолға көшіру" комбинациялары \n-жолға көшу символына түрленеді. Файлға жазу кезінде керісінше түрлендіру ж‰ргізіледі..
Екілік жүйедегі файлмен жұмыс істегенде ешқандай түрлендірулер болмайды. Аќпарат үздіксіз тасымалданады. Егер екілік жүйедегі файлды көрсету керек болса, онда жоғарғы параметрге в әрпі қосылады: (r+b, a+b, w+b,). Кейбір компиляторларда текстік режим t әрпімен белгіленеді, яѓни, a+t, rt деп жазылады.. Егер потокты ашуда қателескен болсаќ, fopen ( ) функциясы NULL мәнін қабылдайды. Бұл константа мәні <stdio.h> файлында анықталады. Қате - ашылатын файлдың дискіде жоқ болуына байланысты немесе динамикалық жадыда орын болмауына байланысты шыѓуы м‰мкін. Сондықтан, былай ашқан дұрыс:
FILE *fp;
If (fp=fopen(“test.dat”,”r”)==NULL)
{puts(“файлды аша алмаймын\n”);}
return;
}
Қате шыққан жағдайда программа бұрын ашылған барлық файлдарды жауып барып, тоқтатылады. Потокты (файлды) жабуды fclose() функциясы орындайды.
int fclose(FILE*fpfr)
fpfr- жабылатын потоктағы көрсеткіштің форматының аты. Егер операцияны жабу дұрыс орындалатын болса, функция – NULL-ді қабылдайды.
Символдарды жазу және оқу. Символдарды потокқа жазу puts() функциясы арқылы орындалады.
int puts(int ch, FILE *fpfr)
Егер оператор дұрыс орындалмаған болса, онда жазылған символдар қайтарылады. Егер қате орындалатын болса, онда eof т±раќтысы қайталанады.
Символдарды потоктан оқу үшін gets() функциясы қолданылады.
int gets(FILE*fpfr);
Функция - файлдан оқыған символдардыњ мєнін қайтарады. Егер файлдыњ соњына жеткен болсаќ, онда eof мәні қайтарылады.
/*Мысал 1*/
Пернетаќтадан енгізілген символдар тізбегін файлға жазу программасын құрайық. Енгізу соңы *теру болады.
/*символдарды файлға жазу*/
#include<stdio.h>
void main()
{FILE*fp;
char c;
{ if ((fp=fopen(“test.dat”,”w”))==NULL)
{puts(“файлды аша алмаймын !\n”); return;}
puts(“символдарды енгіз.Енгізу соңы_*");
while ((c=getchar())!=’*’);
puts(c,fp);fclose(fp);}
Бүтін санды файлға жазу және оқу. Бүтін санды файлға жазу putw() фунциясы арќылы орындалады.
int putw(int, FILE*fpfr);
Б‰тін санды файлдан оќу ‰шін getw() функциясы ќолданылады.
int getw(FILE *fpfr);
Екі жағдайда да операция дұрыс орындалған болса, онда санның мәні қайтарылады. Басқаша жағдайда, eof т±раќтысының мәні қайтарылады.
/*Мысал 2*/
Пернетаќтадан енгізілген бүтін сандар тізбегін файлға жазу және одан кейін тізбектерді файлдан оқу жєне экранѓа шыѓару программасын құрайық. Енгізу соңының белгісі 9999 болсын.
# include<stdio.h>
# include<conio.h>
void main ()
{FILE *fp;
int x;
clrscr();
/*потокты жазу үшін ашу*/
if((fp=fopen(“test.dat”,”w”))==NULL)
{puts(”файлды ашу қате !”);return;}
puts(“Сандарды енгізу.Енгізу соңы - 9999”);
scanf(“%d”,&x);
while(x!=9999)
{putw(x,fp);scanf(“%d”,&x);}
fclose(fp);/*потокты жабу*/
/*Потокты оќу ‰шін ашу*/
if((fp=fopen(“test.dat”,”r”))==NULL)
{ puts(”файлды ашу қате !”);return;}
while ((x=getw(fp)!=eof)
printf(“\n%d”,x);
fclose(fp);
}
Бұл программада поток w+ режимінде ашылады. Программада потоктың көрсеткішін белгілі бір позицияѓа ќою функциясы ќолданылѓан.
Форматы:
int fseek (потокќа_кµрсеткішті_ќою, жылжыту, санау_ басы)
Санау басы stdio.h файлымен аныќталѓан т±раќтылардыњ бірі арќылы беріледі.
Seek_sek (мєні 0-ге тењ) - файлдыњ басы
Seek_cur (мєні 1-ге тењ) - аѓымдаѓы позиция
Seek_end (мєні 2-ге тењ) - файлдыњ соњы.
Жылжыту берілген санау басына ќатысты кµрсеткішті ќою байтыныњ санын аныќтайды. Жылжыту оњ сан да, теріс сан да болуы мүмкін. Екі параметрдіњ де типі long болады. .
Тапсырмалар:
1. Пернетаќтадан 10 бүтін санды енгізіп, файл құрастыру керек. Файлдың аты - сандар және файлдағы сандардың қосындысын тап.
2. Кездейсоқ сандар датчигінің көмегімен алынған бүтін
сандардан файл құру. Сандар 0-99 диапазонында жату керек және осы файлды қолданып, ең үлкен және ең кіші санды шығаруѓа арналған программа құр.
3. f символдық файлы берілген. f файлында компонент саны екіден артық емес. Файлдың алғашқы екі символы цифр болатындығын анықта. Егер ондай цифр бар болса, онда осы екі цифрдан құралған сан жұп болатындығын айқында.
Дәріс 15. Графика.
Негізгі кілттік сөздер: Модульдік функциялар,процедуралар, Conio.h , grapics.h, графикалық режимнің функциялары.
Теориялық мәлімет: С++ тілінде көптеген бір топқа біріккен, әр түрлі іс әрекетке арналған функциялар мен процедуралар – модульдер (кітапханалар) қолданады. Мыс: Crt - экранды басқару модульі. Chaph- графикалық процедуралар мен фукцияларды басқару модульі. System- ресурстарды басқару модульі. DOS-операциялық жүйені басқару модульі..
Модульдік функциялар мен процедураларды қолдану. Модульдік процедураларды дайын тұрған процедура ретінде қарастыруға болады. Программада модульдік процедураларды қолдану үшін, қолданатын процедура қай модульге жататынын, процедура атын және параметр санын, типін білу қажет. Модульдік проседураларды қолдану үшін программаға қажетті модульді қосу керек. Бұл Uses инcтрукциясы арқылы орындалады.
Модульдерді қосу инструкциясы:
Uses модуль1 , модуль2, …, модуль k;
мұндағы, Uses- қызметші сөз, модуль і - модуль аттары.
ТР тілінде сегіз стандартты модульдер бар. Олар: SYSTEM, DOS, CRT, PRINTER, GRAPH, OVERLAY,TURBO3, GRAPH3.
Conio.h
Conio.h функциялар кітапханасында экранға шығару кезінде пайдалы функциялар мен процедуралардан тұрады. Мысалы: экранды тазарту программасы clrscr(); процедурасы crt модулінен.
#include <conio.h>
void main() {
Cirscr();
Couit<<” Жалғастыру үшін < ENTER> пернесін басыңыз”;
}
Көптеген модульдік процедуралардың параметрлері бар. Параметрлер процедураларға мәндер беру үшін қолданылады.
Мысалы, void goto xy(int x, int y);
модульге кіретін процедура көмегімен экранға шығаратын символдар түсін, фон түсін, тексті экранның кез келген жерінде шығаруға болады. TextColor және TextBackGround процедуралары арқылы символдар түсін, текст түсін, фон түсін беруге болады.
Графика. C++ тілі алфавитті‐цифрлық информациялармен қатар, графикалық мәліметті де экранға шығару мүмкіндігі бар. Мысалы, схемелар, чертеждар. Күрделі графикалық бейнелер жай элементтер көмегімен құралады: доға, түзу сызық, шеңбер, төртбұрыш, нүктелер.
Графикалық режимді инициализациялау және аяқтау
#include <grapics.h>
#include <conio.h>
#difine Pathtodriver “c:\TC\bgi\\”;
Void main() {
Int grDriver=detect; // драйвер
Int grMode; // графикалық режим
Int errcode; // код ошибки
Initgraph (&grdriver, &grmode, pathtodriver);
ErrCode=graphresult();
If(errcode!=grOk) //инициялизация қатесі
{cout<<” Kate ”<<errorcode;
puts(“Программаны аяқтау <Enter > үшін басыңыз.”);
}getch();
exit(1); } }
