Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Көлік техникасының қолданбалы программалар негі...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.25 Mб
Скачать

Istream - енгізу құралдары;

ostueam - шығару құралдары;

Iostream - енгізу-шығару құралдары.

Осы үш класта да <<, >> операторлары қолдынылады. С тіліндегі stdin, stdout, stderr стандартты лектеріне сәйкес С++тілінде cin, cout, cerr, clog - объект- лектері қарастырылған. Cin istream класының объектісі istream енгізу легімен, ал osream класының объектісі cout шығару легімен байланысты. Cerr - ostream класының объектісі - қателер легі, ал clog ostream класының объектісі - буферленген қателер легіне сәйкес.

Мысалы:

Шығару: С-де: printf (“ бүтін сан = %d, нақты = %f, ia, fb);

Си++-те: cout << “бүтін сан” <<ia <<n, нақты = “ <<fb;

Енгізу: Си-де scanf (“%d %f”, &ia, &fb);

Си++-те: cin >>ia >> fb; 45

Бұл жолдарда С тілінде айнымалылар арнайы форматтар мен типтері анық көрсетілу арқылы орындалса, С++ тілінде << - операторы мәлімет типін және форматын таңдайды, ал >> - операторы қабылданатын мәннің адресін, форматын анықтайды. ● << операторында endl манипуляторы тіркелуі мүмкін. Мысалы, cout << “бүтін сан = ” <<іа<<endl;

Манипулятор дегеніміз -лекке қатысты нақты әрекет орындайтын арнайы функция.

endl манипуляторы – жаңа жол символын қоюмен қатар лек буферін тазартады. Ал, flush манипуляторы - ( \ n) жаңа жол литерін шығармайды. >>-операторы жолды оқығанда пробель, ТАВ белгісі, ‘\n’ литері кездескен бойдан оқу әрекетін аяқтайды, ал осы таңбалар арқылы сипатталып кездескен жолды толық оқу үшін cin объектісінің get( ) функциясын қолданған дұрыс.

Мысал: #include <iostream.h>

#define n 25

void main (void)

{

char span [n];

cout << “пән аты - ?”;

cin >>span;

cout << “\n сабақ, “ <<span;

Орындағанда: Пән аты - ? Математикалық анализ – түрінде енгізілгенмен, нәтиже экранға толық шығарылмай былайша бейнеленеді: Сабақ, Математикалық Сондықтан жолды толық алу үшін мына әрекеттер ретін орындау қажет:

cin.get(span, n);

cout<< “\n Сабақ, “ <<span;

cin объектісінің get( ) функциясында аргументпен қатар, екі параметрден тәуелді анықталуы мүмкін, олар ‘\n’ литері және жолды құрайтын символдардың санына қатысты параметрлер. cin.get( ) функциясы шектеуші – символ кездескенге дейін немесе ‘\n’ литеріне дейін оқиды.

Мысалы:

cin.get (span, n, ‘*’); мұндағы ‘*’- шектеуші символ болып табылады.

3.3. С тілінде форматтап енгізу және шығару

Экранға мәліметтерді форматтап шығару. printf() функциясын шақыру

операторы келесі құрылымға ие:

printf(формат түріндегі жол, аргументтер_тізімі);

Форматты жол екі тырнақшамен шектелген (яғни, тексттік константа болып табылады) және өзінің құрамына кез-келген текстті, басқару символдарын және формат спецификаторларын қамти алады. Аргументтер тізімі келтірілмеуі мүмкін немесе мәндері экранға шығарылатын өрнектерден тұра алады. Мысалы, printf("\na="); операторы("a=")текстін және (\n) басқару символын қамтиды. Текст жазылған түрінде экранға шығарылады. Басқарушы символдар шығарылатын белгілердің экранда орналасуына әсер етеді. Басқарушы символдардың белгісі ретінде \ беріледі. Төменде олардың тізімі келтірілген:

\n – жаңа жолға көшіру;

\t – горизонталды табуляция;

\r – курсорды жаңа жолдың басына қайтару;

\a – қоңырау дыбысы;

\b – бір сивол кері қайтару (бір позиция);

\f – жаңа параққа көшу;

\v - вертикалды табуляция.

printf("\nүшбұрыш ауданы=%f",s); операторын қарастырайық. Аргументтер тізімі бір s айнымалысынан тұрады. Оның мәні экранға шығарылады. %f символдар жұбы шығарылатын s айнымалысының мән форматының спецификациясы болып табылады. % - формат белгісі, ал f әрпі шығарылатын санның нақты типті екенін көрсетеді. Формат спецификаторы шығарылатын өлшембірліктің сырт көрінісінің түрін анықтайды. Кейбір формат спецификаторларын келтірейік:

%c – символ;

%s – жол;

%d – бүтін ондық сан (типі int);

%u – белгісі жоқ бүтін ондық сан (типі unsigned);

%f – бекітілген нүкте түріндегі нақты сандар;

%e – қалқымалы нүкте түріндегі нақты сандар (мантиссамен, ретпен берілген)

Мысалы, келесі операторлардың орындалуынан кейін

float m, p;

int k;

m=84.3; k=-12; p=32.15;

printf("\nm=%f\tk=%d\tp=%e", m, k, p);

экранға мына жол шығады:

m=84.299999 k=-12 p=3.21500e+01

Формат спецификаторына сандық параметрлер қосыла алады: жолдың ені мен дәлдігі. Ені - өлшемге экранда берілетін позициялар саны, ал дәлдік – бөлшек бөлігіне берілетін позициялар саны (нүктеден кейін). Параметрлер % пен формат символының арасында жазылады және бір бірінен нүкте арқылы ажыратылады.

Мысалы,

printf("\nm=%5,2 ", m); нәтижесінде экранға m=84.30 шығады.

Көрсетілген жолдың еніне шығарылатын мән симай қалған жағдайда да, өлшем толық шығарылады. 47

Формат спецификаторларына келесі түрдегі модификаторлар да қосылуы мүмкін:

%ld – long int шығару;

%hu – short unsigned шығару;

%lf – long double шығару.

Клавиатурадан форматты түрде енгізу. scanf()функциясын шақыру

операторы келесі құрылымға ие:

scanf(формат түріндегі жол, аргументтер_тізімі);

Бұл функция клавиатурадан енгізілген символдардың оқылуын қамтамасыз етеді. scanf()функциясында формат жолы мен аргументтер тізімі міндетті түрде болуы қажет. Келесі операторды қарастырайық:

scanf("%f",&a);

Мұндағы "%f" - формат жолы, &a – енізілетін мәндерге сәйкес аргументтер тізімі. Бұл оператор a айнымалысына сандық мәннің енгізілуін қамтамасыз етеді. Клавиатурадан енгізілетін және scanf()функциясыменен қабылданатын символдық тізбекті кіріс ағымы деп атайды. Аргументтер тізімі – енгізілетін айнымалылар және әр айнымалының алдына & белгісі қойылады. Формат жолы тырнақшаға алынады және спецификациялар тізімінен тұрады. Әр спецификация % белгісінен басталады, одан кейін *жолдың_ені модификатор спецификатор тұруы мүмкін. Соның ішінде спецификатор міндетті элемент болып табылады. * белгісі кіріс ағымында белгілі бір символдар санын жіберуге мүмкіндік береді.

3.4. С++-тегі форматтау функциялары мен флагтар

<iostream.h> типті файлдағы лектік-объектілер жұмысы форматтау флагтарымен басқарылады: Флагтар self( ) функциясы көмегімен орнатылады, unself( ) функциясы арқылы ажыратылады.

Мысалы: cout <<oct<<ia; cout.self(ios::left);

Флагтар

 skipws - енгізу барысында пробел литерлері алынып тасталады;

 left - шығарылатын мәндер әрічтің сол жақ шетімен тегістеледі, толықтырғыш символдармен толықтырылады;

 right - шығарылатын мәндер өрістің оң жақ шетінен тегістеледі;

 internal - бұл символдар таңба символдар мен сан және санау жүйесі префиксі арасында қойылады;

dec - бүтін сан 10-дық санау жүйесінде шығады;

oct - бүтін сан 8-дік санау жүйесінде шығады;

nex - бүтін сан 16-лық санау жүйесінде шығады;

 show base - бүтін санды шығарғанда санау жүйесінің префиксі шығарылады;

 show point - бөлшек санды шығарғанда ондық нүктесі қойылады және соңындағы 0-дер тіркеледі;

 uppercase - 16-лық санау жүйесіндегі А, ..., F және Е експоненциалдық символы үлкен әріппен шығады; 48

 showpas - оң сандары шығарғанда + таңбасы қойылады;

 scientific - бөлшек сан експоненциалдық түрде жпзылады;

 presicion( ) – функциясы scientific немесе fixed флагы орнатылып тұрғанда, үтірл санның бейнелену дәлдігін анықтайды;

 set precision( )- де сол секілді. Автоматты түрде – 6-ға тең. Бұл функция аргументсіз шақырылғанда ағымды дәлдік мәнін анықтайды.

 width( ) - функциясы шығару өрісінің енінің ең кіші мәнін анықтайды.

 setw( ) - функциясы да сол секілді. Аргументсіз функция ағымды мәнді қайтарады.

 setfill( ), setprecision( ), setw( ) манипуляторлары ios класының параметрленген мүшелері болып табылады, олармен жұмыс жасау үшін <iomanip.h> тақырыптық файлы қосылу керек.

Енгізу-шығару бағытын адрестеу

Қазіргі операциялық жүйе клавиатура мен экранды файлдық құрылғы ретінде қарастырады. Клавиатура мәліметтерді оқып немесе экранға шығару программасының бағытын адрестеу үшін жүйеге клавиатураның орнына нақты файлды, мысалы DAN. DAT қолдануға нұсқау беріледі.

Мысалы, орындалатын файл аты – PRIMER.

Нұсқау: 1) primer < dan.dat - файлдан оқу

2) primer > res.dat - файлға шығару.

Бірге: 3) primer < dan.dat > res.dat.

Стандартты потоктар мен нақты файл арасында немесе периферийлік құрылғылар арасында байланыс ұйымдастырудың 2 тәсілі бар:

- бағытын адрестеу;

- каналдар құру.

Канал дегеніміз - бір программадағы стандартты енгізу мен екінші программадағы стандартты шығару арасындағы тікелей байланыс. Мысал, procces1 | process2 Мұндағы process 1,2 екі программа. тік сызық ( | ) - каналмен байланыстыру таңбасы. Байланастыру жұмысы, яғни екі программаның енгізу-шығару жүйесінің әрекетін операциялық жүйе басқарады.

Бақылау сұрақтары:

1. Лек дегеніміз не?

2. Енгізу-шығару мүмкіндіктерінің өзге тілдерден ерекшелігі қандай?

3. Енгізу-шығару барысындағы басқару таңбаларының қойылу реттері

қандай?

4. Эскейп-тізбек деген не?

Әдебиеттер:[1-2], [4-7], [9].

Дәріс №4. ОПЕРАТОРЛАР

Дәріс мақсаты: С/с++ тілдерінің негізгі операторларымен таныстыру. Олардың жазылу форматы мен негізгі машиналық бағытталған деңгейдегі қызметін түсіндіру.

Кілттік сөздер: оператор, бинарлық оператор, биттік оператор, амалдар приоритеті, инкрементті және декрементті оператор, типті түрлендіру, унарлық оператор, оңға және солға жылжу операторлары.

Жоспары:

4.1. Арифметикалық операторлар.

4.2. Инкрементті және декрементті операторлар.

4.3. Қатынас және логикалық операторлар.

4.4. Биттік операторлар.

4.5. Меншіктеу операторлары және шартты өрнек.

4.6. Амалдар приоритеттерінің кестесі.

4.7. Типтерді түрлендіру.

4.1. Арифметикалық операторлар

Бинарлық арифметикалық операторлар «+-қосу», «- -алу», «* -көбейту», «/ - бөлу», «%-проценттік бөлу» операторлары болып табылады. Операндтарға атауына сәйкес амалдарды қолдану қажеттігін білдіреді. Ал, x % y өрнегі х-ті y-ке бөлгендегі қалдықты береді. Егер қалдықсыз бөлінсе нөлге тең. Және бұл проценттік бөлу операторы float, double типті операндтарға қолданылмайды. + және - операторларының приоритеттері бірдей, олар *, / және % операторларының приоритеттерінен кіші. Бір приоритеттік деңгейдегі арифметикалық операторлар солдан оңға қарай орындалады.