Си тіліндегі өрнектер және меншіктеу операторы



Қазақстан Республикасының Білім және Ғылым министрлігі
Батыс Қазақстан инженерлік-технологиялық университеті

КУРСТЫҚ ЖҰМЫС
Тақырыбы:
Си тіліндегі өрнектер және меншіктеу операторы

Орындаған:
Тексерген:

Орал, 2012ж.

Мазмұны

КIРIСПЕ ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ... 3
1 бөлім. Си программалау тіліне кіріспе
1.1. Си бағдарламау тілінің мүмкіндіктері мен
кемшіліктері ... ... ... ... ... ... ... ..5
1.2. Бағдарлама
құрылымы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... .8
1.3. Си тіліндегі негізгі
операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
..12
2 бөлім. Си тіліндегі өрнектер және меншіктеу операторы
2.1. Си тілінің операторлары. Меншіктеу операторы
... ... ... ... ... ... ... ... ... ... 14
2.2. Меншіктеу операторлары және шартты
өрнек ... ... ... ... ... ... ... .. ... ... ... ..17
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ..21
Пайдаланылған әдебиеттер
тізімі ... ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
..23
КIРIСПЕ
Си тiлi В тiлiнiң негiзiнде дамыды. Си тiлiн Bell Laboratories-те 1972
жылы Деннис Ритчи DEC PDP-11 компьютерiнде жасады. Си BCPL және В
тiлдерiнiң көптеген маңызды концепцияларын және мәлiмет типтерiн және басқа
да қасиеттерiн қолданды. Си тiлi UNIX операциялық жүйесiн өңдеудегi тiл
ретiнде кеңiнен танымал болды. Қазiргi таңда барлық операциялық жүйелер Си
және Си++ тiлдерiнде жазылған. Соңғы он жылдықта Си тiлi көптеген
компьютерлерде қолайлы болды.
Си++ Си тiлiнiң кеңейтiлген түрi. Оны 1980 жылдың басында Бъерн
Строустроп Bell Laboratories-сында өңдеп шығарған. Си++ тiлi Си тiлiнiң
бiрқатар қасиеттерiн реттеудi қамтамасыз етедi және ең маңыздысы объектi-
бағдарланған бағдарламалық мүмкiндiгiн қамтамасыз етедi. Бұл бағдарламамен
қамтамасыздандыру әлемiндегi революциялық идея болып табылады.
Басқада бағдарламалық тiлдер көптеген қажеттi эффект бере
алмағандықтан, Си++ алғашқыда ең жоғарғы деңгейдегi нақтылы оқиғалар
үлгiлерiн өңдеу мақсаты үшiн құрылған тiл болды.
Меншіктеу операторы, барлық тілде пайдаланылатын негізгі оператор.
Математикадағы қарапайым теңдеу тәрізді айнымалыларға сандық немесе
символдық мән беру бұл жағдайда меншіктеу операторы деп аталады. Ол
жазылған өрнектердің мәнін есептеп, оны айнымалыға меншіктеу үшін
қолданылады.
Ең жалпы операция меншіктеу болып табылады. Си тілінде меншіктеу
операторы V=A деп жазылады, мұндағы V - айнымалы, А - өрнек. Тағы да
тізбекті меншіктеуді қолдануға болады, келесі түрдегі мысалдағыдай:
sum=a=b.
Меншіктеу операторында оң жағындағы өрнек орындалғаннан кейінгі
соңғы нəтиже осы мəн тең болатын айнымалының типіне түрленеді. Бұндай
процесс типтің “жоғарылауына” немесе “төмендеуіне” əкеледі (екінші жағдайда
шама төмен үстемдіктегі мəліметтер типіне түрленуі мүмкін). Типтің
“жоғарылауы”, əдетте, жұмсақ өтеді, ал “төмендетуді” жадыдағы мəліметтерді
білу арқылы орындау қажет.
Курстық жұмыстың мақсаты: Си бағдарламалау тіліндегі өрнектер және
меншіктеу операторымен танысу. Си тіліндегі операторлар мен операциялар
туралы түсінік алу.
Курстық жұмыстың міндеттері: СС++ бағдарламалау тіліндегі операторлар
және СС++ тіліндегі өрнектер, сонымен қатар меншіктеу операторы туралы
толық мағлұмат беру. Си тілінің мүмкіндіктерімен таныстыру.
Курстық жұмыстың құрылымы: курстық жұмыс кіріспеден, екі бөлімнен және
қорытынды мен пайдаланылған әдебиеттерінен тұрады.
1 бөлім. Си программалау тіліне кіріспе
1.1. Си бағдарламау тілінің мүмкіндіктері мен кемшіліктері
Қазіргі кездегі программалау тілінің арасында ең көп тараған тілдердің
бірі Си универсалды программалау тілі. Бірақ оны системалық программаларда,
транслятор, операциялық системаларды жазуда қолдану жақсы жетістіктер
береді. Си программалау тілін 1972 жылы Bell laboratories фирмасының
қызметкері Денис Ритчи ойлап тапты. Тіл системалық программаларға арналған
деп саналғанымен оның мүмкіндігінің өте үлкен болғандықтан оны қолданады,
программаларды жазуға да пайдалануға болады.
Деннис Ритчи жазған Си тілінің таралу себебі: салыстырмалы түрде
төмен деңгейлі тіл, сондықтан алгоритм жұмысының әрбір бөлімін бақылау
мүмкіндігі бар және жоғары деңгейлі тілдер принцптері енгізілгендіктен,
нақты бір компьютердің архитиктурасы ерекшелітерінен тәуелсіздігін
қамтамасыз ету мүмкін болды.
Си тілінде жазылған программаның архитиктуралары әр түрлі
компьютерлердің бірінен бірін ауыстыруға бір операциялық системаның екінші
операторлық системаға ауыстыруға жеңіл. Сонымен қатар Си тіліндегі
программалардың орындалу жылдамдығы ассемблер тіліндегі программалардан кем
емес. Си тілінің компиляторы қазіргі кездегі барлық операциялық жүйеде
жұмыс істей береді. Unix, MSDOS, WINDOWS.Барлық объектілі бағытталған
программалау тілдерінің ішінде ең кең таралған С++ тілі. Осы бағытта соңғы
пайда болған Java тілінің С++ тілімен салыстырылғанда келесі кемшіліктері
бар: көрсеткіштер, шаблондар, бірнеше қайтара мұрагерлік Java тілінде
қарастырылмаған. Барлық синтаксис жағынан бұл тілдер ұқсас.
Жоғарғы деңгейлі тілдерден Си тілінің ерекшелігі:
- операторлар түрі өзгеше;
- көрсеткіштер жиі қолданылады;
- басқа тілдерге қарағанда синтаксикалық ережелері аз, нәтижесінде
компилятор тиімді жұмыс жасау үшін 256 Кб оперативті жады
жеткілікті;
- қызметші сөздерге қарағанда операторлар мен олардың комбинациялары
көп;
- алғашқыда Си тілінде 27 қызметші сөз ғана болған. Кейін ANSI Си
тіліне және Microsoft C тіліне қызметші сөз қосылды, жалпы саны
шамамен 50;
- Көп программалау тілдерінде бар функциялар Си тілінде жоқ;
- Си тілінде қосалқы енгізу шығару функциялары, математикалық
функциялары және жолдармен жұмыс жасау функциялары жоқ, бірақ сол
функциялардан және басқа функциялардан тұратын жеке кітапханалардан
алу мүмкіндігі қарастырылған;
- мәліметтер типін бақылау жеңіл, яғни программаның бір жерінде
айнымалыны символ түрінде , екінші бір жерінде осы символдың ASCII
коды ретінде қарастыруға болады;
- Си тілінде қазіргі тілдері секілді барлық басқарушы конструкциялары
бар(For, if else, ... );
- Cи тілінде модулдік программалауға болады, яғни программаның
әртүрлі бөлігін жеке копиляциялауға болады;
- Ассемблер тілінде жазылған ішкі программаларды шақыруға болады;
- көрсеткіштер яғни жады аймақтарынан берілген адрес бойынша қарау
программаны орындау жылдамдығын арттырады. Көрсеткіштер көп тілде
қолданылады, ал көрсеткіштерге арифметикалық амалдар тек Си тілінде
қолданылады.
- Си тілінде барлық массивтер бір өлшемді, бірақ Си тілінде бір
өлшемді массивтерден тұратын конструкциялар бар, яғни көп өлшемді
массивтер құрылады;
- тек қажетті кітапханалар шақырылатын болғандықтан жады тиімді
қолданылады;
- басқа тілдердегідей қосалқы функциялар;
- көптеге мамандандырылған функциялар кітапханаларының жинытығы бар.
Кемшілігі: Си тілінде мәліметтер типі қатаң қадағаланбайды, сондықтан
Си тілінде тәжірибелі программист байқағанмен жаңа үйренуші байқамайтын
айнымалы мәндеріне өзгерістер болуы мүмкін.
Мысалы, бір өрнекте (=) меншіктеу операторы бірнеше рет қолданылуы
мүмкін. Сондықтан нәтижесінің типі түсініксіз және қиын анықталады. Бірақ
оны қолдану арқылы тілдің қуаты арттырылған.
С++ тілі Си тілінің толықтырылған, яғни объектілі бағытталған
программалау(ОБП) құралдарымен толықтырылған жиыны деуге болады.
Си және С++ тілдерінің айырмашылығы:
-құрылымдар мен класстар аттары мәләметтер типтерінің аттары болып
табылады. С- де класс түсінігі жоқ.
1.2. Бағдарлама құрылымы
Кез келген Си программасы бір немесе бірнеше “функциялардан”, яғни
ол жиналатын негізгі модульдерден тұрады.Си тіліндегі программаның
қарапайым мысалын келтіреміз.
#include stdio.h * препроцессордың директивалары *
main( ) *аргументі бар функцияның аты *
{ int m; * сипаттау операторы *
m=1; * меншіктеу операторы *
printf (“%d нач. знач. \n “ , m); } * шығару функцияның шақыру
операторы*
Препроцессордың командалық қатарлары (директивалар)
Си препроцессорі программаның алғашқы мəтінін соңғысы компилятордың
кірісіне түспес бұрын си тіліне өңдейді. Препроцессор бүкіл
макрошақыруларды кеңейтеді жəне бүкіл сыртқы файлдарды қояды.
Препроцессор командасын белгілеуге # символы қолданылады.
Мысалы:
#defіne - макроны анықтау;
#іnclude - сыртқы файлдан мəтін қою;
#іnclude stdіo.h - stdіo.h (стандартты кірісшығыс) файлдарынан
мəтін қою үшін.
(қойылатын файлдар кітапханаға қосылған функциясымен интерфейстерді
суреттеуден
тұрады).
math.h - математикалық функция.
Сонымен, программа бір немесе бірнеше функциялардан тұрады, тіпті
олардың біреуі міндетті түрде maіn() болып аталуы керек. Функцияларды
суреттеу тақырыбынан жəне денесінен тұрады. Тақырып өз кезегінде #іnclude
жəне т.б. түрдегі препроцессор директивалардан жəне функция атынан тұрады.
Функция атының өте жақсы белгісі ретінде дөңгелек жақшалар қызмет атқарады,
тіпті аргумент, жалпы айтқанда, болмауы мүмкін. Функция денесі жүйелі
жақшаға алынған жəне əрқайсысы “;” символымен аяқталатын операторлар
жиынтығынан береді. Си тілінде бірнеше негізгі мəліметтер типтерін қолдану
негізделген. Си тілі стандартында əр түрлі мəліметтер типтеріне нұсқайтын
жеті кілтті сөздер қолданылады. Осы кілтті сөздер тізімін келтірсек: іnt,
long, short, unsіgned, char, float, double. Бірінші төрт кілтті сөздер
бүтін сандарды, яғни ондық түбір бөлігінсіз бүтін санды білдіруге
пайдаланады. Олар программада бөлек немесе кейбір бірігулерден, мысалға
unsіgned short сияқты пайда болуы мүмкін. Char сөзі əріптерге жəне кейбір
өзге символдарға, жəне де #, $, % жəне & сияқтыларға көрсету үшін арналған.
Соңғы екі кілттік сөздер ондық нүктелі сандарды ұсынуға қолданылады.
Іnt, short, long типтері. Бұл типтердің мəліметтері “таңбалы сан”,
яғни мұндай типті айнымалылар алатын мəні тек қана оң, теріс сандар жəне
нөл саны бола алады. Бір бит таңбасы жоқ санның таңбасын көрсету үшін
пайдаланылады. Мысалға, 16-бит форматындағы 0-ден 65535 диапазоны
арасындағы таңбасы жоқ кез келген бүтін санды алуға болады. Дəл солай-ақ 16-
биттік сөзді -32768-ден 32767 диапазонындағы таңбасы бар бүтін санды
елестетуге қолдануға болады. Көңіл аударсақ, диапазондар ұзындығы қос
жағдайларда бірдей. Мəліметтерді суреттеу кезінде тек қана одан кейін
айнымалылар аттарының тізімі болуы керек типті енгізу қажет. Суреттеу
мысалын келтірейік:
Іnt m1, m2; Short k1, k2, k3; Long l1, l2, l3;
Кілтті сөздер тіркестерін, мысалға, long, іnt немесе short іnt
сияқтыларда пайдалану long жəне short кілтті сөздерінің ұзынырақ жазылуы.
Бүтін тұрақтылар. Си тілінің заңдылығы бойынша, ондық нүктесіз жəне
дəреже көрсеткішінсіз сан бүтін ретінде қаралады. Мысалы:
25, 239 - бүтін; 25.0, 25е2 - бүтін емес; long типті тұрақтылар мына
түрде жазылады: 225а.
Бүтін типті айнымалылар инициализациясы. Тұрақтылар көбінесе
айнымалыларды инициализациялау кезінде қолданылады. Бұл дегеніміз
айнымалыға кейбір мəнді өңдеу алдында меншіктеуді білдіреді. Мысалы: К2=0;
m2=1.
Айнымалыны суреттеу операторларына инициалдауға болады. Мысалы:
Іnt m2=15; Short k2, k3=0; Long l1=25, l2=30;
Unsіgned мəліметтер типі. Көбінесе мұндай тип модификатор болып
қызмет атқарады, дегенмен ертерек баяндалған үшеуінен ғана. Мына
варианттарды пайдаланылуы мүмкін: unsіgned іnt, unsіgned long. Таңбасы жоқ
бүтін айнымалылар қарапайым бүтін айнымалылар сияқты баяндалады жəне
инициалданады.
Unsіgned іnt kol; Unsіgned short s=2;
Char мəліметтер типі. Бұл тип 0-ден 255 диапазонындағы таңбасы жоқ
бүтін сандарды анықтайды. Көбінесе, мұндай бүтін бір байт жадыға
орналастырылады. Машинада санды символға жəне керісінше аударатын бір код
пайдаланылады. Көптеген компьютерлерде бұл код ASCІІ. Символдық айнымалыны
баяндау үшін char кілтті сөзі қолданылады. Мысалы:
Char s2; Char s2, s3; Char sk=k;
Си тілінің стандартында қабылданған тəртіп бойынша айнымалы мəні
жəне char типті тұрақты тек қана жалғыз символ болуы мүмкін.
Float жəне double мəліметтер типтері. Есептеу сипатындағы
программаларда жылжымалы нүктелі сан жиі қолданылады. Си тілінде жəне де
мəліметтер float типімен баяндалады.
Жылжымалы нүктесі бар айнымалылар бүтін типті айнымалылар сияқты
сипатталады жəне инициалданады. Мысалы:
Float s1, s2; Double s; Float pe=7.52e-7;
Жылжымалы нүктелі константалар.
Жылжымалы нүктелі константаларды жазудың жалпы түрі мынадай:
-1.15Е+4; 2.52Е-3. Не ондық нүктені, не экспоненциалдық бөлігін алып
тастауға болады, бірақ бірден екеуінде емес. Жəне де бөлшек бөлігін немесе
бүтін бөлігін жазбауға болады, бірақ екеуін бірдей емес. Дұрыс жазылған
константаларды көрсетейік:
3.14159; .5; 4Е12; 100.; .7Е-4.
Жылжымалы нүктелі константаны өңдеу процесінде екі еселенген
дəлдікті форматта қарастырылады. Мысалға, float типті PR айнымалысы
PR=4.5*2.0 операторы орындалу нəтижесінде өзінің мəнін алады деп болжайық.
Бұл жағдайда константа жадыда double типті мəлімет болып жазылады, яғни
оған 64 бит орын бөлінеді. Көбейту екі еселенген дəлдікпен есептеледі жəне
сосын float типіне байланысты мөлшерге дейін нəтижені қысқарту жүреді.
Осының барлығы сіздің есептеулеріңізді максималды дəлдікті қамтамасыз
етеді.
Си тілінде sіzeof деген құрылған операция бар, ол объектінің байт
бойынша мөлшерін береді. Мысалы:
Prіntf(“double мəліметтер типі %d байт. \n”, sіzeof(double));
Символдық қатарлар. Символдық қатар - бұл бір немесе бірнеше
символдардан тұратын тізбек. Си тілінде қатарды бейнелейтін арнайы тип жоқ.
қатарларды char типті массив элементтері деп қарастыруға болады.
қатарлардағы символдарды жадыдағы көрші ұяшықтарда орналасқан деп
қарастыруға болады - əр ұяшықта бір символдан. Массивтің соңғы элементі \0
болып табылады.
1.3. Си тіліндегі негізгі операциялар
Ең жалпы операция меншіктеу болып табылады. Си тілінде меншіктеу
операторы V=A деп жазылады, мұндағы V - айнымалы, А - өрнек. Тағы да
тізбекті меншіктеуді қолдануға болады, келесі түрдегі мысалдағыдай:
sum=a=b.
Меншіктеу оңнан солға қарай жүреді, яғни b a-ға меншіктеледі, жəне
осы sum-ға 10 меншіктеледі де, үш айнымалы да бірдей мəн қабылдайды (яғни
бастапқы b айнымалысының мəніне).
Си тілі қарапайым арифметикалық операциялар жиынтығын қолдайды: * -
көбейту, - бөлу, модуль бойынша бөлу - %, + - қосу, - - азайту.
Модуль бойынша бөлу бүтін сандық арифметикада қолданылады. Оның
нəтижесі бүтін сандарды бөлген кездегі қалдық болып саналады.
Мысалы: 20%3=2 + жəне - операцияларының үстемдігі *, жəне %
операцияларының үстемдігінен төмендеу, жəне өз кезегінде олардың үстемдігі
унарлық минус үстемдігінен төмен. Мысал қарастырайық:
Maіn()

nt m1, m2;
m1=m2=-(15+3)*5+(11+9*(8+3))-266%16 ;
(* m1=m2=10; (операция оңнан солға дейін орындалады *)
prіntf ("m1=%d\n", m1);
prіntf ("%d\n", m23); }
Арттыру жəне азайту операциялары: ++ жəне - -. Бұл операциялар кез
келген операторға 1-ді қосуға немесе азайтуға мүмкіндік береді. Көрсетілген
операциялардың екі формасын ажыратады, постфикстік жəне префикстік. Олар өз
арасында тек қай кезде арттыру немесе азайту болатынына байланысты
ажыратылады. Арттыру жəне азайту операциялары өрнектің ортасындада
орындалуы мүмкін, жəне де осы операциялар өрнек есептелгеннен кейін де,
есептелмей тұрып та орындалуы мүмкін.
Азайту жəне арттыру операциялары жоғарғы үстемдікке ие, тек домалақ
жақшалардың үстемдігі жоғарырақ.
Типтерді түрлендіру.
Егер өрнекте əр түрлі типті операндтар қолданылса, онда олар қандай
да бір жалпы типке түрленеді. Компилятор автоматты түрде типтерді
түрлендіруде ережелер жиынтығын қолданады. Типтерді түрлендірудегі негізгі
ережелерді келтірейік:
1. Егер операция екі əр түрлі типтер мəліметтері бойынша орындалса,
онда екі шамада “жоғарғы” типіне түрленеді. Бұл процесс типтің “жоғарылауы”
деп аталады.
2. “Жоғары” типтен “төменгі” типке дейінгі реттелген типтер тізбегі
мына түрде болады:
double, float, long, іnt, short жəне char. Unsіgned кілтті сөзі
қолданылса, сол тип сəйкесінше рангы көтеріледі.
3. Меншіктеу операторында оң жағындағы өрнек орындалғаннан кейінгі
соңғы нəтиже ... жалғасы

Сіз бұл жұмысты біздің қосымшамыз арқылы толығымен тегін көре аласыз.
Ұқсас жұмыстар
Меншіктеу операторы, барлық тілде пайдаланылатын негізгі оператор
Операциялар
Си тілінің мәліметтер типі
Pascal және Си тілінде бағдарламалау
Динамикалық массивтер
С тілінің операторлары және операциялары
Си және Паскаль тілдері
Алгоритм, программа ұғымдары
Программа жұмысын басқару операторлары
С++ тілінің базалық жабдықтары. Препроцессор директивалары
Пәндер