Басылым №4 11. 09. 2016ж беттің І


Дәріс №5. Меншіктеу операторы. Енгізу – шығаруды ұйымдастыру



жүктеу 1,39 Mb.
бет3/5
Дата18.02.2020
өлшемі1,39 Mb.
#29331
1   2   3   4   5

Дәріс №5. Меншіктеу операторы. Енгізу – шығаруды ұйымдастыру


  • Меншіктеу операциясы

  • С тіліндегі енгізу-шығару құралдары

  • С++ тіліндегі енгізу-шығару құралдары

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

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


Меншіктеу операциясы.
Меншіктеу операциясынан сол жақ операндасына сәйкес тек модификацияланған мәндер қолданылады (l-мән), сонымен қатар мәндерін өзгертуге болатын кейбір аталған жады облыстарына ссылкалар қолданылуы мүмкін.

Меншіктеу операцияларын жіктей отырып меншіктеу операцияларынң қарапайым және күрделі операциялары бар екенін айта кетейік.

= - қарапайым меншіктеу: операнда өрнегінің мәнінін белгісін операнданың оң жақ бөлінен сол жақ бөлігіне меншіктейді. Мысалы: P=10.3-2*x

*= - көбейтуден кейінгі меншіктеу: сол жақ бөліктін операндасын меншіктейді. Мысалы: P*=2 өрнегі P=P*2 өрнегіне эквивалентті.

/= -бөлуден кейінгі меншіктеу: сол жақ бөліктегі операнданы меншіктеу. Мысалы:P/=2.2-d өрнегі P=P/(2.2-d) өрнегіне эквивалентті.

%= -модуль бойынша бөлуден кейінгі меншіктеу: сол жақ бөліктегі операнданы меншіктеу. Оның қалдық бөлігін бүтін санды бөлудегі мәнін операнда мәніне меншіктеу. Мысалы: N%=3 өрнегі N=N%3 өрнегіне эквивалентті.

+= - қосындыдан кейінгі меншіктеу: екі операндалар қосындысың мәндерін операнданың сол жақ бөлігіне меншіктеу. Мысал: A+=B өрнегі A=A+B өрнегіне эквивалентті.

-= - алу амалынан кейінгі меншіктеу: со жақ және оң жақ мәндерінің алымдарын операнданың сол жақ бөлігіне меншіктеу. Мысал: Х=4.3-z өрнегі X=X-(4.3-z) өрнегіне эквивалентті.

<<= - разрядтардың солға жылжуынан кейінгі меншіктеу: сол жақ бөліктегі поерандалардың бүтін санды мәніне разряд санына байланысты биттік бейнелеудің соға қарай жылжуынан алынған мәнді меншіктеу. Ол бүтін санды операнданың оң жақ бөлігіндегі мәнге тең болады. Мысалы: a<<=4 өрнегі a=a<<4 өрнегіне эквивалентті.

>>= - разрядтардың оңға жылжуынан кейінгі меншіктеу: сол жақ бөліктегі поерандалардың бүтін санды мәніне разряд санына байланысты биттік бейнелеудің оңға қарай жылжуынан алынған мәнді меншіктеу. Ол бүтін санды операнданың оң жақ бөлігіндегі мәнге тең болады. Мысалы: a>>=4 өрнегі a=a>>4 өрнегіне эквивалентті.

&= - поразрядты конъюкциядан кейінгі меншіктеу: сол жақ бөліктегі бүтін санды операнда мәніне поразрядты конъюкциядан және биттік бейнелеуіндегі бүтін санды операнданың оң жақ бөлігін меншіктеу. Мысалы: e&=44 өрнегі e=e&44 өрнегіне эквивалентті.

|= - поразрядты дизъюнкциядан (НЕМЕСЕ) кейінгі меншіктеу: сол жақ бөліктегі бүтін санды операнда мәніне поразрядты дизъюнкциядан және биттік бейнелеуіндегі бүтін санды операнданың оң жақ бөлігін меншіктеу. Мысалы:a|=b өрнегі a=a|b өрнегіне эквивалентті.

^= - ерекше поразрядты дизъюнкциядан кейінгі меншіктеу: сол жақ бөліктегі бүтін санды операндаға ерекше поразрядты операциясын екі операнда мәнінің биттік бейнелеуінен алынған мәнді меншіктеу. Мысалы: z^=x+y өрнегі z=z^(x+y) өрнегіне эквивалентті.

Меншіктеу операциясының екі түрлі жазылуы бар:



  1. Толық формасы:

айнымалы_аты =өрнек;

Алдымен өрнек есептеледі, содан кейін оның нәтижесі айнымалы_аты –на меншіктеледі. Мысалы: y=(x+2)/(3*x)-5;

Бір оператордың көмегімен бір мәнді бірнеше айнымалыға меншіктеуге болады, мысалы: x=y=z=0; /* x, y, z=0 */

немесе z=(x=y)*5; - алдымен x айнымалысына y айнымалысының мәні меншіктеледі, одан кейін x*5 өрнегі есептеледі, одан кейін нәтиже z айнымалысына меншіктеледі.



  1. Қысқа форма:

айнымалы_аты операция =өрнек;

мұнда операция – (+ , -, *, /, %) арфметикалық операцияларының біреуі;



Мысалы: x*=5; /* x=x*5; */

s+=7; /* s=s+7; */

y/=x+3; /* y=y/(x+3); */

Қысқа форма айнымалы осы оператордың толық формасының екі жағында да кездескен жағдайда қолданылады..

С тілінде айнымалының мәнін 1-ге азайту (--) және арттыру (++) операциялары бар. Операциялар префикстік (++i және --i) және постфикстік (i++ и i--) болуы мүмкін. Бұл операцияны өрнектерде қолданған кезде, егер операция префикстік болса, онда операция бірінші орындалады (i-дің мәні өзгертіледі), содан кейін барып қана өрнек есептеледі. постфикстік операцияны қолданған кезде операция өрнек есептелгеннен кейін ғана қолданылады.

Мысалы: b=7;

n=1;


1. c=b*++n; /* n=n+1; c=b*n; яғни c=14 */

2. c=b*n++; /* c=b*n; n=n+1; яғни c=7 */



С тіліндегі енгізу-шығару құралдары
С/С++ тілдерінде 20-дан астам мәліметтерді енгізу-шығару тәсілі бар. Енгізу-шығару стандартты кітапханалық функциялар файлдармен және әртүрлі құрылғылармен байланысқан мәліметтерді оқуға немесе жазуға мүмкіндік береді.

С тілінде файлдың қандай да бір алдын-ала анықталған структурасы жоқ. Кез-келген мәлімет байттар тізбегі түрінде қарастырылады. Жалпы енгізу-шығару функцияларын негізгі үш категорияға бөлуге болады:



  • Лектік(потоктық);

  • консолдық (консольные);

  • төмен деңгейлі (низкоуровневые)

Лектік функциялар: буферлік, форматталған, форматсыз енгізу-шығару мүмкіншілігін жүзеге асырады.

Буферлік лектердің мәліметтерді уақытша жазу-оқу барысында буферде сақтау мүмкіндігі бар. Дискке тікелей жазу уақыт алады, ал буферлік аймақты пайдалану процесті тездетеді.

Лектік функциялар мәліметтерді символдар легі түрінде қабылдайды. Лектік файлдар арқылы белгілі бір мөлшердегі және форматтағы символдар блогымен алмасуға болады.

Файлды ашқанда лектік функцияны пайдаланып файлмен FILE типтіструктура арасында байланыс орнатылады да программа сәйкесінше осы структураға сілтемені алады, ол лек көрсеткіші немесе лек деп аталады.


  • Сонымен қатар консоль немесе порт арқылы енгізу-шығару орындалады (мысалы, принтер порты арқылы). Бұл жағдайда сәйкес функциялары мәліметтерді байттап оқып-жазады.Консольмен жұмыс жасау қосымша мүмкіндіктер береді. Бұлар мынадайқосымша мүмкіндіктерді орындайды:

  • символдық клавиатурадан енгізілген кезеңін анықтау;

  • енгізілген символдар ЭХО режимін қосу-ажырату. Мысалы, символдың клавиатурадан енгізілген кезеңін анықтау, т.б.

  • Төмен деңгейлі категория функциялары тікелей жүйелік енгізу-шығару құралдарын пайдаланады, яғни төмен деңгейде файлға немесе периферийлік құрылғыларға жол ашады. Төменгі деңгейлі функциялар арқылы файл ашқанда оның дескрипторы – бүтін сан қайтарылады да, ол кейін файл идентификаторы ретінде қолданылады.

Ескерту: Лектік функция мен төмен деңгейлі функцияларды бір программада араластыру арқылы конфликт пайда болады.

Лектік функциялар.

стандарты кітапханасында лектік функциялар орналасқан Қосымшаны жүктегенде автоматты түрде 5 стандартты лек ашылады. Лектер:

  • енгізу (stdin);

  • қателер (stderr);

  • шығару (stdout);

  • баспаға шығару (stdprn);

  • сыртқы құрылғылар (stdoux).

Автоматты түрде қате енгізу, шығару стандартты легі консольмен, байланысады. Лекті көрсететін көрсеткіш аргументі болатын функцияларда жоғарыдағы көрсеткіштердің бірін таңдап көрсету керек. Stdin, stderr, stdout, stdprn, stdoux- тұрақтылар.

getс ( ), putc ( ) - функциялары

getc ( ) функциясы файлдық лектен 1 символды оқиды. Жалпы форматы: int getc ( );

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

Мысалы, клавиатурадан Enter басу арқылы ғана жекелеген символдар енгізілсін. putc ( ) - символды лекке жазады.

Мысалы, int ix;

Ix=getc (stdin);

putc (ix, stddut);

putc() функциясы қате жіберілгенде EOF қайтарады. putc, getc функциялары функция және макрос түрінде де анықталған. Макрос приоритеті жоғары. Оны өзгерту үшін, яғни макросты болдырмау үшін: # undef getc препроцессор директивасысы берілу керек.



Бүтін сандарды енгізу

Бүтін сандардың легін (буферлік) енгізіп-шығару үшін: getw ( ), putw ( ) функциялары getc ( ), putc ( ) функция секілді, тек бүтін сандарды оқиды және тек файлдардан (екілік режимде ашылған) оқиды.


С++ тіліне тәні енгізу-шығару құралдары
С++ тілінде С тіліндегі стандарт функциялар енгізу-шығаруға қолданылады. Сонымен қатар С++ тілінде т тақырыптық файлында анықталған енгізу-шығару құралдары бар. Лектік енгізу-шығару осы тақырыптық файлдағы кластар арқылы орындалады.

Мына операторлар: >> - енгізу және <<- шығару операторы - кез-келген типті мәліметтермен жұмыс жасауда қолданылады. С++-те де үш лектік класс қарастырылған:



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 << “бүтін сан” <

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

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

Бұл жолдарда С тілінде айнымалылар арнайы форматтар мен типтері анық көрсетілу арқылы орындалса, С++ тілінде << - операторы мәлімет типін және форматын таңдайды, ал >> - операторы қабылданатын мәннің адресін, форматын анықтайды.



  • << операторында endl манипуляторы тіркелуі мүмкін. Мысалы, cout << “бүтін сан = ” <<іа<

Манипулятор дегеніміз -лекке қатысты нақты әрекет орындайтын арнайы функция. Endl манипуляторы – жаңа жол символын қоюмен қатар лек буферін тазартады.

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

Мысал: #include

#define n 25

void main (void)

{

char span [n];



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

cin >>span;

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

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

Сабақ, Математикалық

Сондықтан жолды толық алу үшін мына әрекеттер ретін орындау қажет:

cin.get(span, n);

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

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

cin.get( ) функциясы шектеуші – символ кездескенге дейін немесе ‘\n’ литеріне дейін оқиды.

Мысалы:

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


С тілінде форматтап енгізу және шығару
Экранға мәліметтерді форматтап шығару. 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 шығады.

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

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

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

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

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


Клавиатурадан форматты түрде енгізу.

scanf()функциясын шақыру операторы келесі құрылымға ие:



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

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

scanf("%f",&a)

Мұндағы "%f" - формат жолы, &a – енізілетін мәндерге сәйкес аргументтер тізімі. Бұл оператор a айнымалысына сандық мәннің енгізілуін қамтамасыз етеді.

Клавиатурадан енгізілетін және scanf()функциясыменен қабылданатын символдық тізбекті кіріс ағымы деп атайды. Аргументтер тізімі – енгізілетін айнымалылар және әр айнымалының алдына & белгісі қойылады.

Формат жолы тырнақшаға алынады және спецификациялар тізімінен тұрады. Әр спецификация % белгісінен басталады, одан кейін *жолдың_ені, модификатор, спецификатор тұруы мүмкін. Соның ішінде спецификатор міндетті элемент болып табылады. *белгісі кіріс ағымында белгілі бір символдар санын жіберуге мүмкіндік береді.


С++-тегі форматтау функциялары мен флагтар
типті файлдағы лектік-объектілер жұмысы форматтау флагтарымен басқарылады:

Флагтар self( ) функциясы көмегімен орнатылады, unself( ) функциясы арқылы ажыратылады.

Мысалы: cout <
Флагтар

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

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

символдармен толықтырылады;

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

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

арасында қойылады;

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

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

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

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

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

0-дер тіркеледі;

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

үлкен әріппен шығады;

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

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

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

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

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

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

setfill( ), setprecision( ), setw( ) манипуляторлары ios класының параметрленген

мүшелері болып табылады, олармен жұмыс жасау үшін тақырыптық файлы қосылу керек.

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

Қазіргі операциялық жүйе клавиатура мен экранды файлдық құрылғы ретінде қарастырады.

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

DAT қолдануға нұсқау беріледі.

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

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

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

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

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


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

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

Канал дегеніміз - бір программадағы стандартты енгізу мен екінші программадағы стандартты шығару арасындағы тікелей байланыс. Мысал, procces1 | process2

Мұндағы process 1,2 екі программа.

Тік сызық ( | ) - каналмен байланыстыру таңбасы. Байланастыру жұмысы, яғни екі программаның енгізу-шығару жүйесінің әрекетін операциялық жүйе басқарады.
Дәріс №5.Өзін-өзі тексеру сұрақтары


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

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


Дәріс №6. Басқару инструкциялары мен конструкциялары


  1. if инструкциясы

  2. if/else инструкциясы

  3. Switch/case /case конструкциясы

  4. ? шартты операторы+

if инструкциясы
С/С++ тілінде 4 базалық таңдау инструкциялары бар: if, if/else, swith/case және “?” операторы. Оларды жеке –жеке қарастырудан алдын, шартты өрнектерді құрудың жалпы принциптерін айтып өтелік. Таңдау иструкциясы программаның белгілі бір блоктарын таңдап орындауға қолданылады.

Бұл блоктар бір не бірнеше қатардан тұруы м‰мкін. Бірінші жағдайда қатар фигуралық жақшаға алынбайды, ал екіншіде блок т‰гел алынады.

If инструкциясы команданы не командалар блогын шарттың ақиқат не жалған болуына байланысты орындалады.

Қарапайым көрінісі (синтаксисі).

If (шарт) өрнек;

Егер шарт тексерудің нәтижесі ақиқат (true) болса, онда өрнек орындалады, одан соң келесі қатарлар орындалып кете береді.

Ал, егер шарт нәтижесі false мәнін (жалған) берсе, өрнек орындалмай, тастап кетіледі.

Мысал:


Мына бір программаның бөлігінде а айнымалының мәні 72-ден ‰лкен не тең болған сайын экранға “Добрый день” сөзі шығады.

If (a>=72)

printf (“Добрый день!”)

If инструкциясы бір емес бірнеше командаларды қамтитын болса, синтаксисі мынадай болады:

If(шарт) {

өрнек 1;


өрнек2;

...........

өрнек n;

}

Мысал:



# include

int main ()

{

int otl, hor, udov;



float cred;

printf (“/n өте жақсы деген баға алған пәндердің санын ендіреміз:”);

scanf (“%d”,&otl)

printf (“/n жақсы деген баға алған пәндердің санын ендіреміз:”);

scanf (“%d”,&hor);

printf(“/n қанағаттанарлы деген баға алған пәндердің санын ендіреміз:”);

scanf (“%d”, &udov);

cred=(otl*5+hov*4+udov*3)/ (float)(otl+hov+udov);

printf (“/n сіздің орташа балыңыз : %5,2 f/n”, cred);

if (cred>=4.5)

{

printf (“/n құтықттаймыз!/n”);



print(“/n Cіз конкурстан өттіңіз”);

}

return (0);



}
Бұл жерде if құтықттау сөздерін шығару не шығармауды басқарып тұр , яғни cred айнымалысының мәні 4,5- ке тең, не ‰лкен келесі қатарлар орындалады.
if/else инструкциясы 2

If/else инструкциясы шарттқа байланысты 2 өрнектің бірін таңдап орындауға м‰мкіндік береді.


Синтаксисі:

If (шарт)

өрнек1:

else


өрнек2:

Егер шарт тексеру мәні true болса, онда өрнек1 орындалады , кері жағдайда өрнек2

Мысалы:

If (ckeupressed==up)



iu_pixel_coovd++

else iu_pixel_coovd—

Келтірілген программа бөлігінде ckeypressed айнымалысының мәніне қарай тышқан көрсеткішінің горизонтал координатасы жоғарылайды (артады) не кемиді( төмендейді. (ckeyressed айнымалысы басылған клавиштің кодын меншіктейді)

Егер if және else-нің операторлық бөлімі бір емес бірнеше өрнектерден тұрса, онда оларды фигуралық жақшаға алу керек.

Мысал:

# include



int main()

{

char c;



int many, i, more;

more=1;


while (move==1)

{

printf(“ Tatop атауын ендіріңіз)



if (scanf (“% c”, & c)!= EOF)

{

while (c!=’/n’)



scant(“% c”, &c)

printf ( қанша заказ берілді?)

scanf (“% d”, &many);

scanf (“% c” , &c);

for (i=1; i<=many; i++)

printf (“*”);

printf (“/n”);

{

else



more=0;

{

return(0);



}
Бұл программа пайдаланушыға товар атауын ендіруді ұсынады. Егер файл соңы деген белгі берілмесе (ctrl+c клавиштері басылмаса), онда товар атауын әріптеп оқып, қатар соңын білдіретін символды(Enter клавиші басылғанша) кездестіргенше жалғастыра береді.

Келесі қатарға “қанша заказ берілді” сөзі шығады. Бұдан соң заказ берілген товарлар бірлігін ендіру қажет. Мұнан кейін ендірілген санға сәйкес, for циклі экранға жұлдызшалар қатарын шығарады.

Егер файл соңы деген белгі (ctrl+c клавишін басу) берілген болса , онда if –тің шартынан кейінгі қатарлар орындалмастан else денесі орындалады, яғни more-нің мәні 0-ге ауыстырылады. Демек цикл енді қайталанбай, программа аяқталады.
Switch/case /case конструкциясы

Бір айнымалыны бірнеше мәндермен тең не тең еместігін тексеруге тура келетін жағдайлар жиі кездеседі. Б±ны if/else/if конструкциясының көмегімен не осыған ±қсас конструкция switch/case көмегімен орындай аламыз. Оның синтаксисі мынадай.


switch (б‰тін санды өрнек)

case константа 1

өрнек 1

break;


case константа2

өрнек2


break;

.

.



.

case константаn

өрнекn

break;


detault
Үнсіз келісім бойынша әрекет break инструкцияның барлық тармақтарда (default тан бөлек) қайталанатынын байқаймыз. Егер өрнек1 ден кейінгі break-ты алып тастасақ, онда өрнек1 орындалғанан соң, switch конструкциясы ж±мысын аяқтаудың орнына, жалғасып өрнек2 де орындалады. Демек break тармақтардың бірі орындалған соң басқаларын орындамай, тастап кетуді атқарады.

Мысалы: Төмендегі фрагментті switch/cаse конструкциясын пайдаланып қайта жазамыз.


if (more= =smu)

f=5;


else if (more= = smd )

f=-5;


else if (more= = lmu)

f=10;


else f=-10;

switch (more )

{

case smu: f=5; break;



case smd: f=-5; break;

case lmu: f=10; break;

default: f=-10;

}

Бұл жерде more айнымалысының мәні біртіндеп case бұтақтарындағы smu, smd, lmu константаларымен (тұрақтыларының) салыстырылып тура келсе, f-ке сәйкес мәні меншіктеледі. Бадан соң break инструкциясы басқаруды } жабылған жақшадан кейінгі қатарға береді. Егер ешқайсысынада сәйкес келмесе, онда default инструкциясы орындалады. Default б±тағының болуы міндетті емес екендігін ескерте кетелік. Default блоктың соңғы қатары болғандықтан, одан кейін break инструкциясын жазудың қажеті жоқ.


Мысал:

іnt main()

{

char c= ‘a’;



int ivowel=0, iconst=0;

switch(c)

{

case ‘a’:



case ’A’:

case ‘e’:

case ’E’:

case ’i’;

case ‘I’:

case ’o’;

case ’O’:

case ’u’:

case ’U’: ivowel ++;break;

default: iconst++;

}

refurn(0);



}
Егер с айнымалысы aғылшын тілінің кез келген дауысты дыбысының ASCII кодына тең болса, (‘a’-әрпінің ASCII коды) онда ivowel айнымалысының мәні бірге артады, кері жағдайда iconst бірге артады.
? шартты операторы
? операторы қарапайым бір қатарлы шартты өрнектер қ±руға м‰мкіндік береді. Синтаксисі:

шарт ? өрнек бір : өрнек екі;

? операторы тернарлы деп аталады, өйткені ол тек 3 операнданы ғана керек етеді.

Мысал:


if (fr>=0.0)

fr=fr;
Мұны ? шартты операторының көмегімен бір қатарға жазуға болады:

fr=(fr>=0.0) ? fr : -fr;
Дәріс №6.Өзін-өзі тексеру сұрақтары немесе тестер

{Өзін-өзі тексеру сұрақтар тізімі немесе тесттер}




    1. Инчтрукция дегеніміз не?

    2. Конструкция дегеніміз не?


жүктеу 1,39 Mb.

Достарыңызбен бөлісу:
1   2   3   4   5




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау