Лекция. Модульдік программалау концепциясы 3 страница



Қатыс операциялары:

Тендікті тексеру ( = = ) Тең еместікті тексеру ( ! = ) Кіші ( < )

Кіші не Тең ( <= )

Үлкен ( > )

үлкен не Тең ( >= )

Ескерту. Теңдікті тексеру және баска операциялар шартты тексеруге арналған iғ операторында пайдаланылады. (== және = операциялары бірдей емес).

Логикалык операциялар - және, немесе, жоқ шарттары түрінде жазылады. Жазылу түрлері:

&& - және (and), | | - немесе (or), ! - терістеу (not).

Мысалдар:

iғ (k>50 && j = = 24)

iғ(k<=2 || k>5)

Қатыс және логикалық операциялардың нәтижелері әдеттегідей екеу ақ: ақиқат (true) не жалған (ғalse). Нәтиже ақиқат болса, мәні=1 деп, жалған болса, мәні=0 деп белгіленеді.

Ескерту. Логикалық операциялар да iғ, ғ or сияқты баскарушы операторларда пайдаланылады. Тағы бір ескеретін жайт: келесіде Си тілі деп жазылса, Си және C++ тілдері деп түсіну керек. Егер ол тек Си тіліне қатысты болса, арнайы ескертіледі.

Берілген екі айнымалының мәндері түрлі болғанда ғана мэні шын болатын болғызбайтын және (XOR) логикалық операциясы Си тіліне енгізілмеген.

 

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

Меншіктеу операторы өрнек мәнін айнымалыға меншіктеу операциясының соңына ; таңбасын қоюдан тұрады. Меншіктеу операциясы әдеттегідей тендік (=) таңбасымен белгіленеді. Айнымалы Ivalue (адрестік шама) деп аталады. Мысалы, y=3*x+5; операторындағы y айнымалысы — Ivalue .

Си тілінде қосарлы меншіктеу операциясы да бар. Мысалы, y = x = a*b+5; операторында алдымен a*b+5 өрнегінің мәні x айнымалысына меншіктеледі, ал ол y айнымалысына меншіктеледі.

Си тіліне қосымша меншіктеу операциялары да енгізілген:

+=, -=, *= және %=

Олар - айнымалы мәніне +, -, * не % операциясы қосылған өрнекті бастапқы Айнымалыға меншіктеу операциялары. Мұндай операцияларды пайдалану тәсілі төменде көрсетілген. Бірдей операциялар:

m += 10 және m=m+10

m -= 10 және m=m-10

m *= 10 және m=m*10

m %=10 және m=m%10

Мұндағы m +=10 командасы m айнымалысының мәнін 10-ға өсіруді білдіреді, ал m = m +10 командасы оң жактағы m-нің мәнін орнына койып, және оған 10-ды қосып, нәтижені m айнымалысына меншіктеуді білдіреді. Олардың ерекшеліктері жоқ, тек бірінші түрде жазылған команда екінші түрде жазылған командадан тезірек орындалады.

Биттік операциялар

Процедуралық тілдерде жад ұяшықтары мен байттар бойынша жұмыс істеу мүмкін екені белгілі. Си тілінде тек байттық ұяшықтармен емес, олардың биттік разрядтарын өзгерту операциялары да бар:

<<, >>, &, I, ^ және ~ .

Разрядттық операциялар бүтін типті шамалардың биттік шамаларын өңдеуге аналған:

<< - солға жылжыту операциясы.

Жазылу түрі:

мән << биттер саны

Мұндағы <мән> берілген санның екілік жүйеде жазылуы. Мысалы, х=11012 (=1310) санын 3 битке солға жылжыту керек болсын:

int x = 11012

int y = x << 3

Бүтін типті x саны 2 байттық ұяшыққа жазылады:

0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1

 

Оның мәнін солға 3 разрядқа жылжыту операциясының нәтижесі:

0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1

 

Яғни, x өзгермей өз күйінде қалады: x=11012, x мәнінің екілік кодының оң жағына үш нөл қосылып қоятын у-тің мәні: у=11010002 (оның ондық мәні: y=104,0).

>> - оңға жылжыту операциясы: мән >> биттер саны

Операция нәтижесінде берілген екілік мәннің сол жағына операцияда көрсетілген биттер санындай 0-дер енгізіліп қойылады (сан кішірейеді).

Мысалы: int x = 110002 ; (= 2420) int y = x » 3

үшін нәтиже: y = 112 (= 310) .

Ескерту. x >> 3 операциясы x мәнін 810 - ге бөлумен, x << 3 операциясы x мәнін 810-ге көбейтумен бірдей, себебі: 10002=810.

>> операциясының нәтижесінде қалдық алынып тасталады.

& - биттік және (AND) операциясы. Ол екі екілік мәндердің сәйкес 1-лік биттерінің орнына 1 қойып шығады, қалған разрядтарды 0-мен алмастырады. Мысалы, a & b бүтін саны үшін ол төменде көрсетілген:

a= 100101102
b = 000100102
a & b = 000100102

 

I - биттік немесе (OR) операциясы. Ол екі екілік мәндердің сәйкес разрядтық биттерінің біреуі не екеуі де 1-ге тең болса, 1-мен алмастырады:

Мысалы :

a = 100101102

b = 000100102

a & b = 100101102

~ - биттік жоқ (NOT) операциясы. Ол санның 1-лік разрядын 0-мен, 0‑дік разрядын 1-мен алмастырып шығады.

Мысал:

х = 000000112
~х=111111002

C++ тілінде биттік XOR (болғызбайтын және)операциясы да бар. Операция л символымен белгіленеді. Ол да екі бүтін сан арқылы жаңа сан алады. Орындалу түрі: екі санның тек бірінің сәйкес разряды 1-ге тең болса, ол 1-мен алмастырылады, ал сәйкес бірдей 1-лік және 0-дік разрядтар 0 - мен алмастырылады.

Мысал:

a = 100101102
b = 010101002
a^b = 110000102

Разрядтық операциялардың ақиқаттық кестелері төменде көрсетілген (1.5-1.8 кестелер).

1.5-кесте

Бірінші бит Және Екінші бит Нәтиже
1 & 1 1
0 & 1 0
1 & 0 0
0 & 0 0

 

1.6-кесте

Бірінші бит НЕМЕСЕ Екінші бит Нәтиже
1 | 1 1
0 | 1 1
1 | 0 1
0 | 0 0

 

 

1.7-кесте

Терістеу Бит Нәтиже
~ 1 0
~ 0 1

1.8-кесте

Бірінші бит XOR Екінші бит Нәтиже
1 XOR 1 0
0 XOR 1 1
1 XOR 0 1
0 XOR 0 0

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

Программада биттік операцияларды ондық жүйеде берілген сандарәа пайдалануға да болады.

Мысал. x = 18 саны үшін yl= x >> 2 және y2= x << 2 операция нәтижелерін анықтау программасын құру керек.

# include <stdio.h>

# include <conio.h>

main()                                      (3)

{

int x, yl, y2; clrscr();

printf"x=?");

scanf("%d",&x);

yl=x>>2;

y2 = x« 2;

printf("yl=%d y2=%d", yl,y2);

getch (); return 0;

Нәтиже: yl=4       y2=72

Тапсырма . 1. Шыққан нәтижелердің дұрыстығын екілік санау жүйесіңде тексеру керек.

2. x=18 және y=24 үшін z1 = x&y, z2= x I y мәндерін анықтау программасын құрып, шыққан нәтижелердің орындалу дұрыстығын екілік жүйеде тексеру керек.

3. x=1210 санын терістеп, шыққан нәтижені екілік жүйеге түрлендіру керек.

 

?! шарт операциясы

?! шарт операциясы - үш операндтан тұратын жалғыз операция. Оның жазылу синтаксисі:

< ө рнек 1 > ? <өрнек 2> : <өрнек 3>

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

Сонымен, операцияны орындау кезінде соңғы екі өрнектің бірінің ғана мәні нәтижеленеді.

Мысалы, max=(x>y) ? x : y өрнегі үшін x>y болса, max айнымалысына х-тің мәні, ал x<y болса, y-тің мәні меншіктеледі.

Программа :

# include<stdio.h>

# include <conio.h>

main()                          (4)

{

floatmax, x, y; clrscr ();

printf ("x, y=?");

scanf("%ғ%ғ', &x, &y);

max = (x>y) ? x : y;

printf ("max=%f', max);

getch (); return 0;

}

Нәтиже: x,y=? 13.2 5.7 

max=13.200000

Ескерту. Жоғарғы тақырыптарда Си және C++ тілдерінде түрлі операцияларды пайдалануға болатыны көрсетілді. Математикалық операциялардың орындалу басымдылығы белгілі, ал басқа кейбір операциялардың басымдылық реті мынадай:

1. () — функцияны шақыру,

2. ++, - -,

3. << , >> ,

4. Логикалық операциялар,

5. Жай меншіктеу: = , + -, - = және т.б.

 


3-лекция. Құрылымдық программалау концепциясы.

       Жоспар:

                   1. Құрылымдық программалау түсінігі.

                   2. Процедуралық декомпозиция принципі.

                   3. Қадамдық детализациялау әдісі.

 

ХХ ғасырдың 60-70 жж. пайда болған құрылымдық көзқарас (бағыт) бағдарламалық жабдықты құрудың барлық кезеңдерінің орындалуын қамти отырып, ұсынылған технологиялық тәсілдер жиынтығын анықтайды. Құрылымдық бағыттың негізінде күрделі жүйелерді кейіннен кішігірім көмекші бағдарламалар түрінде пайдалану мақсатында декомпозициялау(бөліктерге бөлу) жатады. Декомпозицияның басқа да принциптері пайда болғандықтан (объектілі, логикалық, т.б.) аталған тәсіл процедуралық декомпозиция атауын алды.

Құрылымдық көзқарас есепті қарапайым құрылымды ішкі есептер иерархиясы түрінде сипаттауды талап етті. Енді жобалау «жоғарыдан-төменге» принципі бойынша орындала бастады және жалпы идеяны орындай отырып, көмекші бағдарламалардың интерфейстерін дамыта бастады. Сонымен бір мезгілде алгоритмдердің құрылымдарына шектеулер енгізілді, оларды сипаттаудың формальді модельдері ұсынылды, сондай-ақ алгоритмдерді жобалаудың арнайы әдісі – қадамдық детализациялау әдісі ендірілді.

Құрылымдық бағдарламалау принциптері процедуралық бағдарламалау тілдерінің негізін қалады. Әдетте олар басқарудың негізгі құрылымдық операторларынан құралады. Құрылымдық бағдарламалаумен бір мезгілде басқа да композицияларға негізделген көптеген тілдер дүниеге келді, бірақ олардың негізгі көпшілігі бәсекеге төтеп бере алмады.

Құралатын бағдарламалық жабдықтың күрделілігі мен өлшемдерінің өсуі құрылымдық мәліметтердің дамуын талап етті. Осының нәтижесі ретінде тілдерде пайдаланушы анықтайтын мәліметтер типі пайда болды. Онымен бір мезгілде сыртқы мәліметтермен жұмыс істеу барысында түрліше қателіктердің шығуын кеміту үшін ондай мәліметтермен байланысу мүмкіндіктерін шектеу әрекеттері күшейді. Нәтижесінде модульдік бағдарламалау деп аталатын бағыт пайда болды және қарқынды дами бастады.


лекция. Модульдік программалау концепциясы

  Жоспар:

                   1. Модульдік программалау түсінігі.

                   2. Модульдік программалау кезеңінің ерекшеліктері.

 

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

 


 

 

 

 


Модульдік бағдарламалау құрылымы

 

Модульдік бағдарламалауды қолдану БЖ-ты бірнеше бағдарламалаушының дайындауын әлдеқайда жеңілдетті. Енді олардың әрқайсысы басқаларына тәуелсіз өз модульдерін құра алды. Модульдер арасындағы байланыс аталған технологияны қолдану барысында арнайы интерфейс арқылы іске асырылды. Модульдерді басқа БЖ-да өзгеріссіз қолдануға, сөйтіп бағдарламалаушылардың еңбек өнімділігін арттыруға мүмкіндігі пайда болды. Мұндай технологияны Pascal, C++, Ada, Modula сияқты тілдер қолданады.

Құрылымдық көзқарас модульдік бағдарламалаумен бірге көлемі 100000 оператордан аспайтын әлдеқайда сенімді бағдарламалар алуға мүмкіндік берді. Модульдік бағдарламалаудың кемшілігі – көмекші бағдарламаны шақыру кезіндегі интерфейстік қателер тек қана бағдарламаның орындалуы барысында анықталады. Модульдер жеке компиляцияланғандықтан, мұндай қателерді бұрын анықтау мүмкін емес. Бағдарламаның көлемін арттырған кезде, әдетте модульаралық интерфейстердің күрделілігі де артады, сөйтіп, белгілі бір уақыттан бастап бағдарламаның жекелеген бөліктерінің өзара әсерлесуін қадағалап отыру іс-жүзінде мүмкін болмай қалады. Сондықтан, үлкен көлемді БЖ дайындау үшін объектілі көзқарасты пайдалану қолға алынды.


5-лекция. Объектіге бағытталған программалау концепциясы.

Жоспар:

1. Кластар және объектілер.

2. Инкапсуляция.

3. Модуль түсінігі.

4. Полиморфизм.

5. Мұрагерлік.

Си тілі бірте-бірте дамытылып, қазіргі кезде пайдаланылып келе жаткан, 1983 жылы дүние жүзі елдері басшылықка алған ANSI C нұсқасы да жарыққа шықты (ANSI - стандарттардың Америкалық ұлттық институты). ANSI C тілінің түрлі нұсқаларына енгізілген стандартты кітапханалар да бар. Тілдің кемшілігі де жоқ емес, ол жүйелік және қолданбалы программаларды дайындауға бейім, бірақ айнымалыларға рұқсат етілмеген қол жеткізу механизмін қамтамасыз етпейді және құрылатын класты басқа кластың ішкі класы (мұрагер) ретінде жариялау мүмкін емес. Мұндай объектілі - бағдарлы программалау (ОБП) тілдеріне енетін ерекшеліктерді ескеріп, Borland International Inc фирмасы C тілінің дамытылған жаңа Turbo C (Турбо Си) нұсқасын 1980 жылдардың басында жарыққа шығарды. Кейіннен Turbo C++ 2.0, Turbo C++ 3.0 және олардың кеңейтілген Borland C++ нұсқалары да пайда болды: Borland C++ 2.0, Borland C++ 3.0, Borland C++ 3.1, Borland C++ 4.0 және т.б.


Дата добавления: 2019-02-12; просмотров: 413; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!