Файл қосу

Программалау тілдері



|ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ                              |
|СЕМЕЙ ҚАЛАСЫНЫҢ ШӘКӘРІМ АТЫНДАҒЫ МЕМЛЕКЕТТІК УНИВЕРСИТЕТІ                        |
|3 деңгейлі СМК құжаты      |ПОӘК                |ПОӘК 042-39.1.104/03-2014       |
|«Программалау тілдері және |№1 басылым          |                                |
|технологиялары»    пәнін   |18.09.2014ж         |                                |
|оқыту-әдістемелік кешені   |                    |                                |









                 «Программалау тілдері және технологиялары»
                       пәнінің оқу-әдістемелік кешені

                5В060200 – «Информатика» мамандығына арналған



                         оқу-әдістемелік материалдар



















                                    Семей
                                    2014



                                   Мазмұны


1. Дәріс сабақтары

2. Машықтану сабақтары
3. Зертханалық сабақтар
4. Студенттің өздік жұмысы



Дәріс сабақтары


1 апта

Тақырып 1. Персоналды компьтердің программалық құралдары.
Тақырып 2. Программалау методологиясы
Дәріс жоспары
1. ПК-дің программалық қамсыздандыруы (ПҚ)туралы ұғым.ПҚ түрлері.
2.  Программалау  түрлері.Программалау  ілдерінің  дәрежелері.   Трансляция.
   Трансляторлар.
3. Программалау тілдерінің кезеңдері.
4. Программалау жүйелері.
5. Программаларды өңдеу сатылары.
6. Алгоритмдік программалау.
7. Құрылымдық программалау.
Дәрістің қысқаша конспектісі
1. Программалық қамсыздандыру
Программа —  бұл  компьютерді  басқаруға  қажетті   командалардың  логикалық
реттелген тізбегі(онымен нақты операцияны орындауға арналған)
ПҚ- компьютерге арналған  программалар жиыны.
Программалық қамсыздандыруды орындайтын функцияларына сәйкес 3 топқа  бөлуге
болады:
1.  жүйелі (базалық) ПҚ
1. қолданбалы ПҚ
2. құрылғылар ПҚ

                    2.  Программалау тілдері. Трансляторы
Программалау тілдері– бұл  компьютердің  көмегімен  есепті  шешу  алгоритмін
сипаттауға  арналған құрылған жасанды тіл.
Барлық программалау тілдерін  төмен және жоғары дәрежелік программалау  тілі
деп бөлуге болады.
Төмен дәрежелі программалау тілі аппаратураның анықталған  түріне  арналған.
Программаны  құру   микропроцессордың  архитектурасын   және    компьютердің
құрылғыларын жақсы білуді  талап етеді.  Бұндай  тілдегі  программа   машина
тілінде жазылған қарапайым командалардан тұрады. (Мысалы, Ассемблер тілі)
Жоғары   дәрежелі  программалау  адамға  жақын   анықталған  жүйе  көмегімен
компьютерге команда  беруге  мүмкіндік  береді.  (Мысалы,  Бейсик,  Паскаль,
Фортран, Си)

                                Трансляторлар
Жоғары дәрежелі программалау тілінде жазылған программа  мәтіні  компьютерге
түсінікті емес, сондықтан оны машина тіліне аудару керек.
 Программаны жоғары дәрежелі программалау  тілінен  машиналық   код   тіліне
ауыстыру трансляция   деп  аталады.  Бұл  аударулар  арнайы  программалармен
–трансляторлармен   жүзеге асады.
Трансляторлар компиляторлар және и интерпретаторларға  бөлінеді.
Компилятор  барлық программаны  машина тіліне аударады  ,  содан  кейін  оны
орындайды..
Интерпретатор  командалық  ауыстыру  орындайды  және   шығатын   программаны
орындайды.


                    3. Программалау тілдерінің кезеңдері
Программалау тілдерін бес кезеңге  бөледі.  Бірінші  кезеңге  50-  жылдардың
басында  компьютер алғаш пайда болғанда пайда болған тілдер жатады. Ол  «бір
инструкция-бір  жол» принципі бойынша  құрылған  ассемблердің  бірінші  тілі
болып табылады.  Екінші  кезеңнің  өрлеуі   50-жылдардың  соңы  мен  —   60-
жылдардың басында болды.  Онда  айнымалы  ұғымы  пайда  болған  ,  символдық
ассемблер құрылған. Ол программалау  тілінің  бірінші  толық  дәрежелі  тілі
болды.Программалау тілінің  үшінші кезеңі  60- жылдарды  қатиды.  Бұл  кезде
кез келген облыстағы есептерді шешетін жоғары  дәрежелі  әмбебап  тіл  пайда
болды. 70-жылдардың басынан  бүгінге  дейін  программалау  тілінің  төртінші
кезеңі.
Бұл тілдер үлкен көлемді  проектілерді жүзеге асыруға арналған. Олар  әдетте
арнайыланған  қолдану обылысына бағытталған,  онда  әмбебап  тілдерді  емес,
пәндік  облыстың  нақты  ұғымдарын   операциялайтын   мәселеге   бағытталған
тілдерді қолдану арқылы жақсы жетістіктерге жетуге  болады.   Бесінші  кезең
тілдерінің  пайда   болуы   90-жылдардың   ортасында.Оларға   программалауды
білмей,өңдеудің   визуалды   құралдары   көмегімен    құрылған    қолданбалы
программаларды автоматты құру жүйесі жатады. Бұл тілдерге қолданылған  басты
идея  әмбебап  программалау  тілдерінде  нәтижелі  мәтінді  автоматты  түрде
түрлендіру мүмкіндігі(оны артынан компиляциялау қажет).

                           4. Программалау жүйесі
                            Программа құру құралы
Жалпы  жағдайда  программалаудың  таңдалған  тілінде  программа  құру  үшін,
келесі компоненттер болу керек:
1.  Мәтіндік  редактор.  Программаның   мәтіні   ағылшын   сөздерінен   және
стандартты символдардан тұратын кілттік сөздер  арқылы  жазылғандықтан,  бұл
мәтінді  нәтижесінде  негізгі  мәтін   алатындай   кез   келген   редакторда
түрлендіруге болады. Жақсысы программалаудың нақты тіліне  бағытталған  және
мәтінді  енгізу  прцесінде  кілттік  сөздер  мен  идентификаторларды   түрлі
түстер мен және қаріптермен ерекшелейтін арнайыланған редакторды қолдану.
2. Программы-компилятор арқылы негізгі мәтін машина кодына  ауысады.  Әдетте
компилятор аралық
объектілі кодты береді (екілік файл, стандартты кеңейтілімі.OBJ).
3. Үлкен пограмманың негізгі мәтіні  бірнеше  модульдерден  тұрады(  негізгі
мәтін файлдарынан), сондықтан барлық мәтіндерді бір файлда сақтау  ыңғайсыз.
Әр модуль жекеленген файлға обьектілі код арұылы   компиляцияланады.  Оларды
кейінірек бір бүтінге біріктіру қажет .
Сонымен қатар, оларға әртүрлі стандартты функцияларды жүзеге  асыратын  ішкі
программаның машиналық кодын қосу керек (мысалы, математикалық  функцияларды
есептейтін sin немесе ln функциялары).   Ондай  функциялар  компиляторлармен
бірге жүретін библеотекаларда  саталады(стандартты  кеңейтілімі.LIB  болатын
файлдарда ).
Обьектілі код обьектілі модульдер мен   стандартты  функциялардың  машиналық
кодын  библеотекадан тауып, байланыстыратын  арнайы  программамен  өңделеді—
байланыстар  редакторімен  немесе  жинақтаушымен,  және    шығысында   жұмыс
істеуге жарамды қосымша — орындаушы код құрады.
4. Орындаушы код— бұл  осы программа арналып  құрылған   операциялық  жүйесі
орнатылған  кез  келген  копьютерде  орындауға  жіберуге  болатын  аяқталған
программа. Ереже бойынша соңғы программаның кеңейтілімі .ЕХЕ.
Программалаудың интеграцияланған жүйелері
Сонымен, программаны құру үшін:
 • мәтіндік редактор;
 • компилятор;
 • байланыстар редакторы;
 • функциялар библиотекасы
қажет.
               5. Компьютерде есепті шешудің негізгі сатылары.
1. Есептің математикалық қойылымы:
а) не берілген–негізгі берілгендерді есептеу;
б) не алу қажет– нәтижені есептеу;
в) негізгі берілгендердің мүмкіндігінің шарты.
2. Математикалық модельді құру  –  нәтиже  алу  үшін  қажеттілердің  барлығы
ережелер мен заңдар.
3. Шешу әдісі– қолда бар математикалық  моделдерді оптималды қолдану.
4.  Есептің  алгоритмизациясы–   математикалық   сипаттау   негізінде   шешу
алгоритмін құру.
 5. Программалау–  компьютерде  алгоритмді  орындау  мүмкіндігін  қамтамасыз
ететін программа құру.
6. Программаны және негізгі берілгендерді ЭЕМ– ға енгізу.
 7. Программаны  тестілеу  және  жөндеу.  Бұл  этапта  алгоритмді  ЭЕМ–  нің
көмегімен орындау орындалады, іздеу және қатенің болмауы.
 8. Жөнделген программаны орындау және нәтижені талқылау.
                   6. Алгоритмдік (модульдік) программалау
Алгоритм — бұл есепті әрекет ету кезегін уақыт бойынша  соңғыға   бөлу  жолы
арқылы шешу әдісінің формальді сипатталуы.
Алгоритмдік программалаудың негізгі  идеясы—   программаны  әр  қайсысы  бір
немесе бірнеше әрекетті орындайтын  модульдердің  жүйелілігі  бойынша  бөлу.
Модульге қойылатын басты талап— оның орындалуы  әрқашан  бірінші  командадан
басталып,   соңғы   командадан   аяқталатындай   болуы   керек.    Таңдалған
программалау тіліндегі алгоритм  берілгендерді  сипаттау,  мәндерді  есептеу
және программаның  орыдалуының  кезектілігін  басқару   командасы  көмегімен
жазылады.
                         7. Құрылымдық программалау

Ішкі программалар
Өлшемі  бойынша  орташа  қосымшаларды  құрғанда  (бірнеше  мың  негізгі  код
жолдары) негізгі  мәтіннен  шешу  алгоритмі  көрінетін,  программа  құрылымы
шешетін   есептің   құрылымына   әсер   ететін    құрылымдық    программалау
қолданылады.Ол үшін программаны   тек  үш  қарапайым  оператордың  көмегімен
ғана емес, алгоритмнің нақта құрылымын бейнелейтін құралдар көмегімен   құру
керек.  Осы мақсатта программалауда ішкі программа  ұғымы  енгізілген.  Ішкі
программа—  қажеттіәрекеттерді  орындайтын   және   негізгі   кодтың   басқа
бөліктеріне  тәуелсіз  операторлар  терілімі.  Программа  әрқайсысы  негізгі
тапсырма  қарастырған  әрекеттердің  біреуін   орындайтын   көптеген    ішкі
программаларға  бөлінеді(50  —ге  дейінгі   оператордан   тұратын   —   ішкі
программаның мақсатын жылдам түсінуге  арналған).  Осы  ішкі  программаларды
комбинациялау  арқылы  қарапайым  операторлардан   емес,    аяқталған   блок
кодтарынан тұратын, анықталғн мәнді жүктемеден тұратын қорытынды  алгоритмді
құруға болады, сонымен қатар  ондай  блоктарға  атымен  байланысуға  болады.
Сонымен,  ішкі  программалар—   бұл  программистер  анықтаған  тілдің   жаңа
операторлары немесе операциялары . Ішкі  программаларды  қолдану  мүмкіндігі
программалау тілін процедуралық тілдерге жатқызады.

Өзін –өзі тексеру сұрақтары
1. Программа деген не?
2. ПК –дің  ПҚ –ы деген не?
3. ПҚ –дың қандай түрлері бар?
4. Программалау тілі деген не?
5.  "Төменгі  дәрежелі  программалау  тілі  "  және   "   жоғарғы   дәрежелі
   программалау тілі " терминдеріне түсінік беріңдер.
6. Трансляция, трансляторлар деген не?
7. Компиляторлар мен интерпретаторлар арасындағы айырмашылық қандай?
8. Программалаудың кезеңдері қандай?
9. Программалау  жүйесі деген не?
10. Программаны өңдеудің сатылары?
11. Алгоритмдік программалу деген не?
12. Құрылымдық программалау деген не?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


2 апта


Тақырып 3. Программалау технологиясы негіздері
Дәріс жоспары
1. ПҚ –ды проектілеу әдістері. Программаны проектілеу.
2. Обьектіге бағытталған программалау ұғымы.
3. Программалау қызмет түрі ретінде.
4. Программалаудың экономикалық аспектісі.
5. ПҚ – ды өңдеу периоды.
6. Сапаны бақылау.

Дәрістің қысқаша конспектісі
                         1.ПҚ – ды проектілеу әдісі
Ішкі программаның бар болуы проектілеуді жүргізуге және қосымшаны  жоғарыдан
төменге  қарай  өңдеуге  мүмкіндік  береді.  Алдымен  ең  көлемді  есептерді
шешетін(мысалы, берілгендер инициализациясы, негізгі бөлім  және   аяқталуы)
бірнеше ішкі программа ерекшеленеді,  содан соң, сол  модулдердің  әрқайсысы
төменгі  дәрежеде  бөлшектелінеді,   өз   кезегінде   басқа   кішкене   ішкі
программаларға бөлінеді және  барлық тапсырма жүзеге асқанша  солай  болады.
Ішкі программаның негізгі сипаттамасы—  ол  оны  қайта  тексеру  мүмкіндігі.
Программалаудың интеграцияланған жүйелерімен  бірге  жиі  қолданылатын  ішкі
программаларды құруға  арналған  өзгелердің  жұмысын  қолдану  арқылы  еңбек
өнімділігін  жоғарылату   үшін   стандартты   ішкі   программалардың   үлкен
библеотекалары қойылады.

                    2. Объектіге бағытталған программалау
Обьект ұғымы
Құрылымдық  және  оқиғалық  программалық  дамудың  идеясы   программистердің
еңбегінің  өнімділігін  арттырды  және   жолдарда   (бірнеше   айларда)  жүз
мыңдаған жолдардан тұратын   қосымша  құруға  мүмкіндік   береді.  Бірақ  та
мұндай үлкен  көлем   адам  мүмкіндігінің  шегіне  жетті,  және  программаны
өңдеудің жаңа технологиялары қажет болды.
80- жылдардың басында программалауда обьект ұғымына негізделген  жаңа  бағыт
пайда болды. Әлемді қоршаған  нақты  обьектілер  үш  базалық  сипаттамаладан
тұрады: олар әр түрлі әдістермен  қасиеттерін  өзгете  алатын  және  қоршағн
әлемде, сонымен қатар обьектінің ішінде болып жатқан оқиғаларға әсер  ететін
 қасиеттер жиынынан тұрады. Нақ осы түрде  программалау  тілінде   қасиеттер
жиыны(осы обьектіге сәйкес берілгендер  құрылымы),   оларды  өңдеу  әдістері
(қасиеттерді өзгерту  ішкі программасын) және оқиғалар сияқты сияқты  обьект
ұғымы жүзеге асқан.

                     3. Программалау қызмет түрі ретінде
Бірінші компьтерлердің   пайда  болуы  программалауды  ғалым  ретінде  қайта
жандандырды.Ақпаратты   өңдеудің,   программаның    дұрыстығын   дәлелдеудің
құрылғылары,  код  оптимизациясы,  тиімді   компиляторды   құру,   формальді
тестілеу және т.б  бірінші математикалық  теориялар  құрылды.  Содан  кейін,
үшінші кезеңнің әмбебап программалау тілінің пайда болуымен, бұл  аспектілер
 аса өзекті емес болып қалды  , негізгі  мәтіндерді  автоматты  генерациялау
облысына  негізделген  зерттеулер  жүргізу  және  компилятодың   тиімділігін
жоғарылату.Программалау өнерге айналды — арнайы білімдері  жоқ  миллиондаған
адамдар өздерінің  қолданбалы  есептерін  шешу  үшін  компьютерді  қолданану
мүмкіндігіне  жетті, ол олардан   дұрыс  жұмыс  істейтін  программаны  талап
етпеді . Программалау  өнері  бүгінгі  таңда  білікті  өңдеушілер  үшін  де,
қызығушылар үшін де жекелеген шеберлік болып табылады.
Сонымен  қатар,  мемлекет  тарапынан  да  ,  жеке   ұйымдар   тарапынан   да
кәсіпорынды автоматтандыруды  күрделендіруге,  сенімді  операциялық  ортаға,
глобальді телекоммуникационды басқару комплексіне   деген  сұраныс  көбейген
сайын   ,    программалық   қамсыздандыруды   өңдеу   процесінің   қойылымын
программалауды кәсіпке айландырған лекке айландыру қажеттілігі туындады.

                  4. Программалаудың экономикалық аспектісі
Бірінші компьютерлер пайда болғанда, олардың бір минут жұмыс  істеуінің  өзі
қымбат тұрды, ал тек өте оңай есептер  ғана  шешілді,   сондықтан  программа
құрудағы еңбек оның аз ғана бөлігін алды.   ПК  пайда  болуымен  және  үлкен
программалық  жүйелерге  сұраныс  көбейісімен  барлық  шығын   программистің
жұмысына төленді. Осындай проектілердің  көбі  сәтсіз  аяқталды,  ал  оларға
кететін шығындар өте көп болғандықтан,  бүгінгі  таңда  сапалы  программалық
қамсыздандыруды уақытында және   бюджет  рамкасында  құру  өте  қажет  болып
табылады. Кәсіпорынның  программалық  қамсыздандыру  метадологиясын   тиімді
құру үшін барлық дамыған елдердің программистері жұмыс атқаруда.

                5. Программалық қамсыздандыруды өңдеу периоды
ПҚ-дың классикалық периодын қарастырайық.
   1.  Проектіге  қойылатын  талаптар   қалыптасып,   талданады.   Проектіге
      қойылатын   талаптың   қате   болуы    артық   жұмыс   істеуге    әкеп
      соғатындықтан,бұл саты өте маңызды  болып  табылады.  Ал  күрделілікті
      дұрыс бағаламау уақыт пен  құралдардың  артық  шығынына  әкеп  соғады.
      Бүгінгі  таңда  талапты  даярлау  сатысында  кеткен  қатеден   көлемді
      проектілердің 60% -ы сәтсіздікпен аяқталады.  Әр  түрлі  әдіс  бойынша
      қойылатын талаптардың негізінен  проектінің  көлемі  және  оның  еңбек
      сиғыштығы,  болашақта  кететін  еңбек  шығындары  және   оның   бағасы
      анықталады. Проектіге қойылатын талап  жұмыс  барысында  өзгеруі  және
      нақтылануы мүмкін болғандықтан, ал талаптың орындалуын қадағалау керек
      болғандықтан, талаптарды басқару үшін арнай  прграммалар  қолданылады.
      Әдетте тапсырыс беруші өзіне не қажет екенін  түсіндіре  алмайды,   ал
      жүйелік талдаудағы  мамандардың  тапсырмасы—  талаптарды  түрлендіруге
      жарамды түрде білдіруге көмек көрсету. Содан  кейін  талаптар  ПҚ-  ды
      өңдеу контрактісіне жазылады. Ары қарай өнімге  қойылған   кез  келген
      талапты бұзу(тапсырыс берушінің  жағынан  да,  орындаушы  жағынан  да)
      контракті бұзу болып саналады. Бұл этапағы жұмыстың көлемінің шамасы —
      барлық проектінің 5% —н құрайды.
   2. Автоматизация обьектісін проект алды тексеруі басталады.  СASE- құралы
      көмегімен   оның  жұмысының  формальді  моделі,  деректер   базасының,
      обьектілер және ақпарат ағымының  моделі құрылады. Бұл этапта тапсырма
      құрылатын пәндік  облыспен  жақсы  таныс  тапсырыстың  мамандары  және
      сарапшылары жұмысқа тартылады.  Бұл этапағы жұмыстың көлемінің  шамасы
      — барлық проектінің 10% —н құрайды.
   3.  Формальді  модель  негізінде   программистер  үшін  нақты  техникалық
      тапсырма,  жекеленген модулдердің спецификациясы  , деректер базасының
      кестесі, басқа жетекші құжат  құрылады.  Жұмыстың нақты жұмыс  жоспары
      дайындалады, онда барлық жолдар, нақты орындаушылар  және  орындалатын
      жұмыс көлемі( апта  бойынша,  ай  бойынша)  көрсетіледі.  Бұл  этапағы
      жұмыстың көлемінің шамасы — барлық проектінің 10% —н құрайды.
   4. ПҚ –ның  өңдеу методологиясы таңдалады және өңдеу басталады  (кодтау).
       Өңдеу процесінде қажет:
         • Талаптың жүзеге асуының дұрыстығын білу үшін, тапсырыс берушімен
           үздіксіз кері байланыста болу;
         • Жоспар  бойынша  жұмыстың  жүруін  үздіксіз  бақылау   және  бас
           тартулар болған жағдайда шұғыл шаралар қабылдау;
            Бұл этапағы жұмыстың көлемінің шамасы —  барлық  проектінің  10%
—н құрайды.

   5.    Программа аяқталған  соң(жұмыс  істеуге  дайын  альфа-версия  )  ол
      қатенің  барын   тексеретін   және    табылған   қатені   пограммистке
      хабарлайтын орындаушы компанияның тестеріне түседі.  Талданады,  дебес
      жағдайда  ,  критикалық  немесе  дұрыс   емес   мәндерді   енгізгенде,
      ақпараттың жоқтығынан, аппаратураның жаңылуынан,  стрессті  режимдерде
      және  т.б  жағдайларда  программа   жұмысының   беріктігін   талдайды.
      Анықталған уақытта (апта, ай) пайда болған қате саны  эксперементальді
      таңдалған   дәрежеге  дейін  т  төмендеген   кезде(балама   проектілер
      негізінде),  тапсырыс  берушіде   бета-тестілеу   басталады.    Бұндай
      тесілеуге қызеткерлердің максималды саны жұмылдырылады, және программа
      жұмыс режимінде  бөліктей  функционалдана  бастайды.      Бұл  этапағы
      жұмыстың көлемінің шамасы — барлық проектінің 10% —н құрайды.
   6.   Тапсырыс  берушіні   өнім   сапасы   қанағаттандырған   кезде,   оны
      ендіру—эксплуатацияға жіберуге дайындық басталады.  Егер  қосымша  көп
      қолданушылық болса, көп жағдайда желіні түрлендіру және баптау  керек,
      сервер орнату, қосымша программаларды жүктеу  керек  болады.  Көптеген
      қызметкерлер  бірігіп   құрған  және   әртүрлі  фирмалардан  сатылынып
      алынған     (құралған     автоматтау      деп      аталатын)      ескі
      программалардан(мысалы, бухгалтерлік есепке алу, еңбек ақыны  есептеу,
      қызметкерлермен жұмыс)  жаңа интеграцияланған жүйеге көшу кезінде  өте
      көп мәселелер туындайды, өте қажетті ақпараттарды: барлық бухгалтерлік
      және финанстық есеп берулерді,  сақтаудағы   құралдар  туралы  ақпарат
      және т.б. салыстыра тексеру,  енгізу,  тасымалдау  керек  болады.  Бұл
      саты ең еңбекті көп қажет етеді және барлық проектімен жұмыс уақытының
      90% -на дейінін алуы мүмкін .
   7. Жаңа жүйе жұмысқа дайын болғаннан кейін, тапсырыс  беруші  компанияның
      жұмысшыларына осы жүйемен жұмыс істеуді үйрету керек, себебі ол туралы
      кітап жазылмаған және нақты кәсіпорынға ендірілген бұл  жүйенің  жұмыс
      спецификациясымен байланысты кемшіліктері көп. Оқытуға  кететін  еңбек
      шығыны барлық проектке кететін еңбек шығынының   — 5%  — ын  құрайды.
   8. Тапсырыс беруші қабылдау актісіне қол  қойған  соң,  проект  аяқталған
      болып есептеледі, бірақ,   орындаушымен  байланыс  жоғалмайды.  Әдетте
      бастапқы  уақытта  жүйемен  жұмыс   кезінде    қолданушыларда   онымен
      байланысты біраз сұрақтар  туындайды.  Жөндеуге  керек  қателерден  де
      қашып құтылу  мүмкін  емес.  Сонымен  қатар,  орындаушы  жүйенің  жаңа
      версияларын да шығара алады және ескі  жүйені  жаңарту  керек  болады.
      Жүйеге қызмет көрсетуге тапсыс  берушімен  бірлесу   деп  аталады.  Ол
      анықталған кепілдік уақытына дейін тегін.(мысалы, бір жыл)
Құру циклындағы программалау мен жөндеудің (тестілеудің)  нақты  көлемі  көп
емес. Ол барлығы жалпы көлемнің 10-20% - ын құрайды.

                              6. Сапаны бақылау
Проект үлкен болған сайын, қате де көп  болады.Сонымен  қатар,  сатыны   көп
созуға болмайды— мерзім  бұзылады,   тұтынушылардың  реніші  туындайды  және
нарыққа  эксплуатация  кезінде  жөнделетін,  қатесі  көп   "   шикі"    жүйе
жіберіледі .
  Сенімді  ПҚ-дың  қазіргі  технологиялары    құрылатын   өнімді    тестілеу
сатысында ғана емес, оны құрудың  барлық  этаптарсатыларында  —   талаптарды
талдаудан бастап ендіру  сапасын  үздіксіз  тексеруден  өткізуді  қамтамасыз
етеді.

ПҚ сапасының стандарттары
Компания ПҚ –ды  өңдеудің өте  тиімді  процесін  ұйымдастыра  алады,  бірақ,
тапсырыс  берушінің  сенбеуі  де  мүмкін.   Берілген  комания   программалық
өнімдерді уақтылы және  жоғары  сапада  орындайды  деген  ,  ISO  9000  сапа
стандарты  бойынша  компаниялардың   халықаралық   серификат   жүйесі   бар.
Сертификация процессі өте күрделі және бірнеше жылдық даярлық жұмысын  қажет
етеді.
АҚШ – тағы Карнеги-Меллона   университетінде  бірнеше  жыл  бұрын  ПҚ  өңдеу
процесінің   5   "жетілдіру"   дәрежесінің   бірі   бойынша    компанияларды
сертифификаттайтын, СММ (Capability Maturity  Model  for  Software),  арнайы
методологиясы  өңделген.  АҚШ  –  тың   қорғаныс  Министрлігінің   20-жылдық
зерттеулеріне сәйкес  үлкен ақпаратты проектілерді құрудағы  сәтсіздіктердің
көбі ПҚ-ларды құру процесіндегі менеджерлердің процесті басқара алмауы.
Ортақ критерийлер негізінде компания  жұмысының  сапалылығын  растайтын  ISO
9000  стандартына  қарағанда,   СММ  методологиясы  өңдеу  процесін   сапалы
басқаруға бағытталған және онда ПҚ-ды құрудың барлық  сатыларын  ұйымдастыру
әдістерінің  нұсқаушылары мен ұсыныстарының жиыны бар.

Өзін – өзі тексеру сұрақтары
1. Құрылымдық программалау деген не?

2. Программалаудың экономикалық аспектілері қандай?
3. ПҚ – ны өңдеу периодының қандай сатылары бар?
4. Программаның сапасын тексеру сатысында не болады?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984



3 апта

Тақырып 4. Си тілінің жалпы сипаттамасы. Си программалау жүйесіне кіріспе
Дәріс жоспары:
1. Алфавит, идентификаторлар, қызметтік сөздер.
2. Айнымалылар мен тұрақтылар.
3. Берілгендер типтері.
4. Си тіліндегі программаның құрылымы.
5. Си программалау жүйесі.

Дәрістің қысқаша конспектісі
                1. Алфавит, идентификаторлар,қызметтік сөздер
Алфавит.  Си тілінің  алфавитіне  келесілер кіреді:
 • Латын алфавитінің жазулық және жолдық әріптері  (A,B,...,Z, a, b,..., z)
 • Сандар: 0,1,2,3,4,5,6,7,8,9
 • Арнайы белгілер: " , { } | [ ] () + -• /  % \ ;'.:?<=>_!&* # ~ ^
 • Лексемдерді бір бірінен бөлуге арналған бейнеленетін  символдар  (мысалы,
   пробел, табуляция, жаңа жолға көшу).
Комментарилерде, жолдарда және символдық тұрақтыларда басқадай  литерлер  де
қолданылады (мыслы, орыс әріптері).
Комментарий сол жағынан /* белгісімен , оң жағынан  */ белгісімен  шектелген
 ,  белгілердің (символдардың)  кезектілігі ретінде құрылады. Мысалы:
/* Бұл  комментарий */
Си стандартты тілінде коментрийді бірінің үстіне  бірін жазуға тиым  салады,
яғни мынадай жазу
/* мәтін -1 /* мәтін-2 */ мәтін-3 */
" мәтін-3"  коментарийге есептелмейді.
Си тілінде лексемнің алты класы бар: еркін  таңдалынатын  және  қолданылатын
идентификаторлар,  қызметтік  (кілттік)  сөздер,  тұрақтылар,жолдар  (жолдық
тұрақтылар),  операциялар  (операция   белгілері),   бөлгіштер   (пунктуация
белгілері).
Идентификатор. Әріптердің кезектілігі, сандар және  сызық  символдары   "_",
әріптен немесе  сызу  символынан,  Си  тілінің  идентификаторы.Жазулық  және
жолдық әріптер арасында айырмашылық  бар.  Идентификаторлардың  ұзындығы  әр
түрлі, бірақ, компилятор  идентификатордың басынан бастап,  31-го  символдан
артық оқымайды. Кейбір компиляторларда бұл  шектеулер  одан  да  қатаң,  кез
келген идентификатордың тек  бастапқы     8  символы  ғана  оқылады.  Бұндай
жағдайда  NUMBER_OF_ROOM және NUMBER_OF_TEST идентификаторлары   программада
айырылмайтындай болады.
Қызметтік  (кілттік)  сөздер.  Программист  таңдай  алатын  ерікті  сөздерге
жатпайтын,  тілде  тіркелген  идентификаторларттік   қызметтік  сөздер   деп
аталады. Қызметтік  сөздер  берілгендердің  типін,  жады  кластарын,  типтің
квалификаторын,  модификаторды,   псевдоайнымалыларды   және   операторларды
анықтайды.
                         2. Айнымалылар, тұрақтылар
Программа  берілгендерді  өңдеуге  арналған.  Берілгендер  айнымалылар  және
тұрақтылар болып екіге бөлінеді.
Тұрақтылар  –  программаны  өңдеу  процесінде  өзінің   мәнін   өзгертпейтін
берілгендер.
Айнымалылар  –  программаны  өңдеу  процесінде   өзінің   мәнін   өзгертетін
берілгендер.
Тұрақтылар
Бүтін тұрақтылар. Тілдің синтаксисі бүтін  константаларды  анықтады:  ондық,
он алтылық және сегіздік.
1. Бүтін ондық  нөлден  басталмайтын  ондық  сандардың  кезектілігі  ретінде
   жазылады: 44, 684, 0, 1024
2. Нөлден басталатын және  7  ден  үлкен  емес  ,ондық  сандардан  тұрмайтын
   сандардың кезектілігі сегіздік тұрақты  ретінде  қабылданады:  016  –  14
   ондық бүтін санының сегіздік санау  жүйесіндегі мәні.
3.  Алдында  0х  немесе  0Х  символдары  жазылған   он   алтылық   сандардың
   кезектілігі (0, 1,..., 9 ,А, В, С, D, Е,  F),   он  алтылық  тұрақты  деп
   есептеледі:
 • 0х16 – 22 ондық бүтін санының  он алтылық санау  жүйесіндегі мәні;
 • 0XFF – 255 ондық бүтін санының  он алтылық санау  жүйесіндегі мәні.
Нақты тұрақтылар. Нақты  (бүтін  емес)  сандарды  жариялау  үшін,  ЭЕМ–  нің
жадысында жылжымал нүкте түрінде  көрсетілетін  тұрақтылар  қолданылады.  Әр
бір нақты тұрақты келесі бөліктерден тұрады:
 • Бүтін бөлігі (ондық бүтін тұрақты);
 • Ондық нұкте;
 • Бөлшек бөлігі (ондық бүтін тұрақты);
 • "е" немесе "Е" көрсеткіш белгісі;
 • Ондық дәреже көрсеткіші ( таңбасы бар болуы мүмкін ондық бүтін тұрақты).
Жылжымалы  нүктелі тұрқтыны жазу кезінде бүтін немесе  бөлшек  бөлігі  түсуі
мүмкін(бірақ, бір уақытта емес);  ондық  нүкте  немесе  дәреже  көсеткішімен
экспонента символы(бірақ, бір уақытта емес); Жылжымалы  нүктемен  тұрақтының
мысалы: 44., 3.14159, 44е0, 3.14159E1, 0.0
Символдық тұрақтылар. Ішкі жеке кодтары бар  жекеленген  белгілерді  бейелеу
үшін символдық тұрақтылар қолданылады.  Әр символдық тұрақты– бұл  символмен
бейнеленген және опострофпен шектелген лексема. Мысалы: 'А', 'а', 'В',  '8',
'0', '+', ';' және т.б.
Жолдық тұрақтылар.  Жолдар  формальді  түрде  Си  тілнің  тұрақтылары  болып
табылмайды   (стандарттқа   сай),   тек   оның   лексемаларының   жекеленген
типтері.Олар  үшін  әдебиеттерде  тағы  бір   "жолдық    литералдар"   атауы
қолданылады.  Жолдық   тұрақтылар   екі   тырнақшаға   алынған   (апострофқа
емес)символдардың кезектілігі ретінде анықталады: "Жолдың үлгісі "
Жол символдарының ішінде эскейп-кезектілік болады,  яғни  ,   бейнеленбейтін
символдарына және олардың ішкі кодтарымен  берліленген  символдарына  сәйкес
белгілердің  сәйкестігі  .   Бұндай   жағдайда   да,   жекеленген   симводық
тұрақтыларды жариялағандағы сияқты, оладың бейнеленуі  кері  қисық  сызықтан
басталады:  '\': "\n Мәтін \n дисплейдің 3-ші жолында \n орналасады "
ЭЕМ –нің  жадысында жолдық тұрақтыларды жариялау келесі ережелерге
сүйенеді. Барлық жолдық символдар қатар орналасады және  әр символ (сонымен
қатар эскейп-кезектілікпен жарияланған)  1 байт  орын алады.  Жолдық
тұрақтыны жазудың соңына компилятор  '\0' символын орналастырады.
Сөйтіп, жолдың мәнін жариялау үшін  ЭЕМ –  нің  жадысында  бөлінген  байттар
саны 1-ге тең және бұл жол тұрақтысын жазудағы  симводардан көп.
 Айнымалылар
Си  тілінің  негізгі  ұғымының   бірі  жадының  аталған  аумағы   обьектісі.
Обьектінің дербес жағдайы  - айнымалы. Айнымалының ерекшелігі  оның  әртүрлі
мән  атымен  байланыс  мүмкіндігі.  Айнымалының  мәнін  оған   сәйкес   жады
аумағында берген кезде  осы   мәннің  коды  орналастырылады  .   Айнымалының
мәніне рұқсат алу оның атын қамтамассыз ету, ал оның жады  аумағына   рұқсат
алу оның адресі бойынша ғана мүмкін. Айнымалы ұғымын "атауы-  мәні"  түрінде
интерпретациялауға болады.

                             3. Берілгендер типі
Берілгендер  типі–   рұқсат   етілген   операциялардың   анықталған   жиынын
біріктіретін өлшемдер жиыны.
Берілгендердің негізгі типтері
|Берілгендер типі |Өлшем, бит     |Міндердің диапазоны                |
|unsigned char    |8              |0... 255                           |
|char             |8              |-128... 127                        |
|enum             |16             |-32768... 32767                    |
|unsigned int     |16             |0... 65535                         |
|short int (short)|16             |-32768 ... 32767                   |
|unsigned short   |16             |0.... 65535                        |
|int              |16             |-32768... 32767                    |
|unsigned long    |32             |0... 4294967295                    |
|long             |32             |-2147483648... 2147483647          |
|float            |32             |3.4Е-38... 3.4Е+38                 |
|double           |64             |1.7Е-308 .:.1.7Е+308               |
|long double      |80             |3.4E-4932 ...1.1Е+4932             |


Әр бүтін сандық тип не таңбалы  signed  немесе  таңбасыз  unsigned   ретінде
анықталуы мүмкін (үнсіздік бойынша signed).
Екі тип арасындағы айырмашылық –ішкі  жариялаудың  үлкен  бит  интерпретация
ережесінде.  signed  спецификаторы  ішкі  жариялаудың  үлкен  биті   таңбалы
ретінде қабылдануын  талап етеді; unsigned ішкі жариялаудың үлкен  биті  бұл
жағдайда таңбассыз  болып  есептелетін  жарияланатын  сандық  мәннің  кодына
кіретінін анықтайды. Үнсіздік  бойынша,  префикс  ретінде  unsigned  кілттік
сөзінің  болмауынан,  кез  келген  бүтін  тип   таңбалы   болып   есептеледі
(signed).  Сөйтіп,  signed  префиксін  char,  short,  int,  long   қызметтік
сөздерімен    бірге    қолдану    артық.    "Таңбалылықтың"    белгілеулерін
(спецификациясын) жекелеп қолдану рұқсат  етілген.   Сонымен  қатар,  signed
signed int-ке эквивалентті; unsigned unsigned int-ке эквивалентті.
Айнымалыны с ипаттау. Әр айнымалы программада қолданылуы алдында  сипатталуы
керек, яғни, айнымалы үшін  жады  бөлінуі  керек.  Айнымалы  үшін  бөлінетін
жады  аумағы   және   құрамының    интерпретациясы   айнымалыны   сипаттауда
көрсеілген типіне байланысты.
Айнымалыны сипаттаудың қарапайым түрі:
тип айнымалының _атының _тізімі;
мұндағы  айнымалының  аты  –  бұл  тізімде  үтірмен  бөлінетін,  программист
таңдаған идентификаторлар; тип – типтердің біреуі.
            4. Қарапайым программаның құрылымы мен компоненттері
Препроцессор
Препроцессор  –  программа   мәтінін   оның   компиляциясына   түрлендіретін
транслятордың арнайы компоненті.
Препроцессорлы  өңдеудің  ережесін  программист   препроцессор   дерективасы
көмегімен  анықтайды.   Препроцессордың  әр   дерективасы   '#'   символынан
басталады.   Программаның  әр  жолында  тек  бір  ғана   деректива   болады.
Препроцессор   программаның   мәтінін   түрлендіру    әрекетін    анықтайтын
дерективаны іздеп программаның негізгі мәтінін "сканерлейді".
Программаның мәтіні
 Си тіліндегі әр программа препроцессорлық дерективалардың,  сипаттамалардың
және  глобальді  обьектілерінің  кезектілігі.  Препроцессорлық  дерективалар
программа  мәтінін  оның  компеляциясына   дейін   түрлендіруді   басқарады.
Анықтамалар функциялар мен обьектілерді  енгізеді.   Объектілер  программада
берілгендерді өңдеуді жариялауда қажет. Функциялар программаның  потенциялды
мүмкін  әрекеттерін  анықтайды.  Сипаттау   программаның   басқа   бөлігінде
(мысалы, оның мәтінінен төменде немесе басқа файлда)  анықталған  обьектілер
мен функциялардың аты мен қасиетін компиляторға ескертеді.
 Си тіліндегі программа бір немесе бірнеше мәтіндік файл түрінде  рәсімделуі
керек. Мәтіндік файл жолдарға бөлінген.
Программа құрылымы. Программа мәтінінде препроцессорлы  өңдеуден  кейін  бір
де бір препроцессорлы деректива  қалмайды.Енді  программа  сипаттамалар  мен
функциялар жиынынан тұрады. Бұл функциялардың арсында  әрқашан  фиксирленген
main функциясы болуы  керек.   Осы  функция  онсыз  программа  орындалмайтын
программаның негізгі функциясы болып табылады. Бұл  негізгі  функцияның  аты
барлық программа үшін бірдей (әрқашан  main  )  және  өз  бетінше  таңдалына
алмайды. Сөйтіп, программаның негізгі мәтіні қарапайым  жағдайда  (программа
бір ған функциядан тұрған жағдайда ) келесідей:
Препроцессор директивасы
main( )
{
Обьектілерді _ сипаттау;
Орындалатын _операторлар;
}

Препроцессордың дерективалары тек программаның  басында  ғана  орналаспайды.
Олар  қажеттілік  жағдайында  программа  мәтінінің  кез   келген   бөлігінде
орналаса  алады.  Бірақ,  жұмыс  істеуге   арналған   тақырыптық   файлдарды
программаның мәтінінің басында орлаластыру ұсынылады.
#include <...> дерективасы  программаның  мәтініне  компилятордың  стандатты
библеотекасымен  бірге  берілетін   "тақырыптық  файлы  "  каталогынан  файл
мәтінін қосуға арналған.
Си  тілінің  стандартымен  анықталған  әр   библеотекалық   функция   сәйкес
библеотекалық функция прототипін сипаттаудан плюс бір  тақырыптық  фйлдардың
ішіндегі типтер, айнымалылар, макросипаттамалар, тұрақтылар   сипаттамасынан
тұрады.  Стандартты библеотекалар  үшін  тақырыптық  файлдар  тізімі  тілдің
стандартымен анықталған. Программада
                       #include <тақырыптық_файл_аты >
препроцессорлы   дерективасын   қолдану   программаға   сәйкес    стандартты
библеотекасын қоспайды.Препроцессорлық  өңдеу  программаның  негізгі  мәтіні
дәрежесінде  орындалады.   #include    дерективасы   программаның   мәтініне
нұсқалған тақырыптық файлдан сипаттауды қоюға  мүмкіндік  береді.Программаға
библеотекалық функциялар  кодын  қосу  байланыстарды  редактрлеу  сатысында,
компиляциядан кейін, яғни,  программаның  машиналық  коды  алынғаннан  кейін
орындалады (компановка сатысы)  .Стандартты  библеотекалардың  библеотекалық
функцияларын  сипаттаудан  тұратын,   файлдарда   қолданылатын   "тақырыптық
файл" (header file) термині кездейсоқ емес. Ол  бұл  файлдарды  программаның
басында іске қосуды, яғни, сәйкес библеотекаларға  ертерек  байланысуды  жөн
көреді.
Программаның  әр  функциясының  атының  алдында  функция  қайтаратын  мәннің
типін  (нәтиже типін) көрсету керек.  Егер функция ештеме  қайтармаса,  онда
void типі көсетіледі.  main()   функциясы   операциондық  жүйе  командасымен
орындалуға  жіберілетін  программаның  функциясы   болып  табылады.   main()
функциясымен   қайтарылатын   мән   операциондық   жүйеге   беріледі.   Егер
программист  операциондық  жүйе  оның   програмасының   орындалу   нәтижесін
талдайды деп санамаса, онда қайтарылатын мін жоқ деп көрсетуі  керек,   яғни
void типті. Егер нәтиже  типі  жоқ  болса,  онда  үнсіздік  бойынша     main
функциясы int типті бүтін санды қайтарады.
Си тіліндегі әр функция  (сонымен  бірге  main  )   параметрлер  терілімінен
тұрады. Бұл жиын бос болуы да мүмкін, ондай жағдайда жақш  ішіндегі  функция
атынан кейін void қызметтік сөзі жазылады немесе жақша бос  қалады.Қарапайым
функциялардан қарағанда  main() негізгі функциясы параметрлермен де  оларсыз
да  жазыла  алады.  main()  функциясының  параметрі  берілгендерді  орындалу
ортасынан  құралдардан  өтіп,  енгізу-    шығару   стандартты   функциясынан
орындалу программасына беруді ұйымдастырады. Функцияның денесі  –  фигуралық
жақшаларға алынған, сипаттамалар, анықтамалар және орындалатын   операторлар
кезектілігінен тұратын  блог. Әр анықтама, сипаттама және  әр  оператор  ';'
символымен аяқталады.
Анықтамалар   программада   берілгендерді   өңдеуді    жариялауға    қажетті
обьектілерді енгізеді. Бұндай обьектінің мысалы  ретінде  атаулы  тұрақтылар
және түрлі типтегі айнымалылар.Анықтамалар компиляторға  программаның  басқа
бөлімінде анықталған  функциялар мен обьектілердің аты мен  сипаттамаларының
қасиетін  ескертеді.  Операторлар  программаның  әр   орындалу   қадамындағы
әрекетін анықтайды..
                5. Turbo С 2.0 программалау жүйесінің құрамы
Қазіргі  заманғы  операциялық  жүйелерде  программалау  жүйесінің   құрамына
интегралданған орта  кіреді.Ондай  орта  программа  өңдеуге  қажетті  барлық
құралдардан тұрады .Ортадан шықпай осы орта құрылған программалау  тіліндегі
программаны  құруға,   редактрлеуге,   компиляциялауға,орындауға,   жөндеуге
болады. Turbo  С  2.0  программалау  жүйесінде  компоненттер  әдетте  келесі
каталогтарда орналасқан:
 • LIB – Си тілінің обьекті  модульдерінің  стандартты  библеотекаларынан  ,
   математикалық  функциялардың  обьекті  модульдерінің   библеотекаларынан,
   графика функцияларынан және т.б тұрады;
 • INCLUDE – Си программалау жүйесінің тақырыптық файлы;
 • EXAMPLES –  SOURCE   каталогының  ішінен  функцияның  негізгі  мәтінінен,
   (SOURCE ішкі каталогы), негізінде математикалық және тестілеуге  арналған
   программалардан (TEST ішкі каталогы) тұрады;
 • НЕГІЗГІ КАТАЛОГ (Turbo  С  программалау  жүйесі  орнатылған  )  –  келесі
   программалар мен файлдардан тұрады:
 – ТС.ЕХЕ ~ интегралданған ортаның орындалатын программасы;
 – ТСС.ЕХЕ – командалық жол жұмысы үшін Lattice С Compiler компиляторы;
 – СРР.ЕХЕ – Си тілінің препроцессоры;
 – THELP.COM - Turbo С 2.0  және  Си  интегралданған  жүйесінің   резидентті
   анықтамасы.Анықтама   фондық   режимде   жұмыс   істеу   үшін   thelp.com
   командасымен іске қосылады , яғни, дисплейде жіберілгеннен кейін ешқандай
   ақпарат шықпайды. Анықтамамен жұмысқа көшу сандық пернетақтадан  5  санын
   басқаннан кейін орындалады және ол  жеке  терезеде   жүреді.  Анықтамадан
   шығу  батырмасын басқаннан кейін орындалады.
Turbo С 2.0 интеграцияланған ортасына  өту  tc.exe  (немесе   tc)  командасы
арқылы болады.
Өзін – өзі  тексеру сұрақтары
1. Си тілінің алфавитіне қандай символдар кіреді?
2. Идентификатор деген не? Идентификторды рәсімдеу ережелері қандай?
3. Тұрақтылар деген не?
4. Айнымалылар деген не?
5. Си тіліндегі стандартты типтер қандай?
6.  Препроцессордың   дерективалары   деген   не?   Препроцессордың   қандай
   дерективалары бар?
7. Си тіліндегі программалардың құрылымы қандай?
8. Си программалау жүйесінің файлдарының құрамы қандай?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984



4 апта


Тақырып 5.  Меншіктеу операторы. Енгізу – шығаруды ұйымдастыру.
Дәріс жоспары
1. Берілгендерге қолданылатын операциялар.
2. Өрнектер.
3. Меншіктеу.
4. Типтерді келтіру. Типтерді түрлендіру ережелері.
5. Берілгендерді шығару функциялары.
6. Берілгендерді енгізу функциялары.

Дәрістің қысқаша конспектісі
                  1.Берілгендерге қолданылатын операциялар
"Берілгендерге   қолданылатын   операциялар"   сөйлемі    обьектінің    және
операциялар амалдарын  қолдануының  бар  екенін  білдіреді.  Бір  обьектімен
жүргізілетін операция унарлы деп, ал екі  обьектімен  жұмыс  –  бинарлы  деп
аталады.
Негізгі унарлы операциялар
|-   |унарлы минус,  арифметикалық операнда белгісін өзгертеді                        |
|+   |унарлы плюс, симметрия үшін унарлы минуспен енгізілген                          |
|!   |ЕМЕС – операнданың мәнін  логиклық жоққа шығару                                 |
|++  |Бірге үлкейту (инкремент немесе автоүлкейту); екі формасы бар:                  |
|    |префиксті операция – операнданың мәнін қолданғанға дейін 1 ге ұлғайту.          |
|    |постфиксті операция - операнданың мәнін қолданғаннан  кейін 1 ге ұлғайту.       |
|    |Операцияның операндасы ретінде тұрақты мен өрнек болмауы керек                  |
|--  |Бірге кеміту (декремент немесе автокеміту) – унарлы операция, операндасы ретінде|
|    |тұрақты мен өрнек болмауы керек:                                                |
|    |префиксті операция – операнданың мәнін қолданғанға дейін 1 ге ұлғайту.          |
|    |постфиксті операция - операнданың мәнін қолданғаннан  кейін 1 ге ұлғайту.       |


Негізгі бинарлы операциялар
|+   |Бинарлы плюс – операндаларды қосу.                                              |
|-   |Бинарлы минус -  операндаларды азайту.                                          |
|*   |Операндаларды көбейту.                                                          |
|/   |Операндларды бөлу.                                                              |
|%   |Бүтінсанды операндаларды бөлуден қалған қалдық (модулі бойынша бөлу).           |


Қатыс операциялары (салыстырулар)
|<                     |Кіші                        |
|>                     |үлкен                       |
|<=                    |Кіші немесе тең             |
|>=                    |Үлкен немесе тең            |
|= =                   |Тең                         |
|!=                    |Тең емес                    |


Операциялар операндалары арифметикалық типті немесе  нұсқаушы  болуы  керек.
Нәтиже бүтін санды: 0 (жалған) немесе 1 (ақиқат).
Меншіктеу операциялары
|=   |Жай меншіктеу: өрнек мәнін меншіктеу –оң жақтағы операндаға сол жақтағы         |
|    |операнданы меншітеу.Мысал: Р= 10 3-2*х;                                         |
|*=  |Көбейтуден кейінгі меншіктеу сол жақтағы операнданы оң жақтағы операндаға       |
|    |көбейткен  мәнді сол жақтағы операндаға   меншіктеу. Р *= 2 эквивалентті Р = Р *|
|    |2;                                                                              |
|/=  |Бөлуден кейінгі меншіктеу: сол жақтағы операнданы оң жақтағы операндаға бөлген  |
|    |мәнді сол жақтағы операндаға   меншіктеу. Р /= 2.2 - d эквивалентті P=P/(2.2-d);|
|%=  |Модуль бойынша бөлуді меншіктеу: сол жақтағы операнданы оң жақтағы операндаға   |
|    |бүтін санды бөлген кездегі қалдық мәнді сол жақтағы операндаға   меншіктеу. N %=|
|    |3 эквивалентті N = N % 3;                                                       |
|+=  |Қосудан кейінгі меншіктеу: сол жақтағы операнданы оң жақтағы операндаға қосқан  |
|    |мәнді сол жақтағы операндаға   А += В эквивалентті А = А +В;                    |
|-=  |Азайтудан кейінгі меншіктеу: сол жақтағы операндадан оң жақтағы операнданы      |
|    |азайтқан мәнді сол жақтағы операндаға   меншіктеу. Х -= 4.3 - Z эквивалентті Х =|
|    |Х - (4.3 - Z);                                                                  |


Барлық құрама операциялар үшін меншіктеу формасы Е1 ор= Е2  эквивалентті  Е1
= El op (E2), мұндағы ор – операцияның белгіленуі.
                2. Өрнек және арифметикалық типтерді келтіру
Әр өрнек бір немесе  бірнеше  операндалардан,  операциялар  символынан  және
көбінесе  жақша  ретінде  берілетін    шектеушілерден   тұрды.  Кез   келген
өрнектің      тағайындалуы      -       қандай      да      бір       мәннің
формирциялануы.Формирацияланатын  мәндердің  типіне  сәйкес  өрнектің   типі
анықталады.  Егер  өрнек  мәні  бүтін  немесе  нақты  сандар   болса,   онда
арифметикалық өрнек туралы йтылады. Арифметикалық өрнектерде келесі  амалдар
қолданылады: +, -, *, /, %
Көрсетілген   операциялар   үшін   операндалар   ретінде   тұрақтылар    мен
ариметикалық типтегі айнымалылар, сонымен  қатар  жақшаға  алынған  өрнектер
қызмет атқарады.
Қатынастар  мен  логикалық  өрнектер.  Қатынас  қатынас   белгілері   арқылы
байланысқан арифметикалық өрнектердің жұптарынан тұрады.
Си тілінің логикалық типі жоқ болғандықтан, қатынастың мәні нөлге  тең  емес
(әдетте 1 ), егер ол ақиқат болса және 0 тең,  егер  жалған  болса.  Сөйтіп,
6<=44  қатынасы  1 ге тең.
>, >=, <, <= операцияларында бір ранг.Теңестіру және теңдік  операциялары  =
= және != бірдей бірақ,  басқа  қатынас  операцияларына  қарағанда   біршама
төмен  рангілі.  Ал   арифметикалық   операциялар   қатынас   операцияларына
қарағанда  біршама жоғары  рангілі.
Си тілінің логикалық операциялры:
|!             |Жоққа шғару,яғна логикалық ЕМЕС                                       |
|&&            |конъюнкция, яғни, логикалық ЖӘНЕ                                      |
|||            |дизъюнкция, яғни ,логикалық НЕМЕСЕ                                    |


Олар рангілерінің  төмендеуі  бойынша  реттелген.  Ереже  бойыша,  логикалық
операциялар қатынастарға  қолданылады.  Логикалық  операциялар  орындалғанға
дейін, логикалық өрнекке кіретін қатынастар мәні есептелінеді.  Бір  рангтің
бірнеше  операциялары  солдан  онға   қарай   орындалады,   және   нәтиженің
ақиқаттығы (жалғандығы) анықтлған жағдайда есептеу тоқтатылады.
Қатынастың мәні бүтін болғандықтан  (0  немесе  1),  бүтін  сандық  мәндерге
логикалық операцияларды қолдануға ешнәрсе қарсылық етпейді .  Сонымен  қатар
нөлге тең емес кез келген  мән  ақиқат  ретінде  қабылданады  ,  ал   жалған
ретінде тек нөлдік мән ғана қабылданды.
                   3. Меншіктеу (өрнектр мен операторлар)
Си тіліндегі  "="  символы өрнекте  екі операнда болуы керек –  сол  (әдетте
айнымалы болатын, модифицирленетін атаулы өрнек )  және  оң  (әдетте  өрнек)
бинарлы операцияны білдіреді. Егер z – айнымалы болса , онда
                                 z= 2.3+5.1
мәні  7.4  ке  тең  өрнек  бар.  Сонымен  бірге  бұл  мән   z   айнымалысына
меншіктеледі.  Тек  егер  меншіктеу  операциясы  бар  өрнектің  соңынан  ";"
символы қойылса,  сонда  ғана  өрнек  меншіктеу  операторы  болып  табылады.
Сөйтіп,
                                 z= 2.3+5.1;
мәні 7.4– ке тең z  айнымалысына меншіктеу операторы .
Оператор  –  нақты  бір  әрекеттен  тұратын  программалау  тілінің  сөйлемі.
Меншіктеу  операциясымен өрнектің типі мен мәні  '=' белгісінен  кейінгі  оң
жақтағы   өрнектің  мәнімен  анықталады.  Бірақ,  бұл  тип    өрнектің   сол
жағындағы айнымалалардың  типімен  сәйкес  келмеуі  мүмкін  Бұндай  жағдайда
айнымаланың мәнін анықтауда  типтердің түрленуі орындалады.
'='  белгісінің оң жағындағы өрнек  өз  кезегінде   меншіктеу  операциясынан
тұруы мүмкін болғандықтан, бір  меншіктеу  операторында  бірнеше  айнымалыны
меншіктеуге болады, яғни көп меншіктеу ұйымдастыруға болады, мысалы:
                            с = х = d = 4.0 +2.4;
Табиғи шектеу -  '='  белгісінің сол жағында әр меншіктеу операциясында  тек
солжақмүмкін өрнек болуы мүмкін (айнымалы өрнек) .
Си тілінде   "меншіктеудің  құрама  операторының"  жиыны  бар.  Меншіктеудің
құрама операцияларының әр қайсысы қандай да  бір  бинарлы  логикалық  немесе
арифметикалық      операцмяларды       және       өздік       меншіктеулерді
біріктіреді.Меншіктеудің құрама операциясы меншіктеудің құрама  операторының
негізгісі болып табылады:
                           Айнымалы аты ор=өрнек;
Мұндағы  ор - *, /, %, +,- операцияларының бірі. Егер "ор*"   конструкциясын
екі операция ретінде қарастырсақ, онда алдымен ор  орындалады,  содан  кейін
'='.
                             4. Типтерді келтіру
Екі  бүтін  операндалардың  бөлінуінен  нәтиже  бүтін  болады.  Мысалы,  5/2
өрнегінің мәні 2.5 емес 2 болады.Нақты нәтиже  алу  үшін  бүтін  емес  нақты
операндалардың бөлінуін орындау керек. Мысалы  5.0/2,0  жазу  арқылы  ,  2.5
мәнін аламыз.
Егер операндалар атсыз тұрақтылар болса,  онда  бүтін  тұрақтыларды  нақтыға
ауыстыру  қиын  емес.Ондай  жағдайда,  операнда  аталған  тұрақты,  айнымалы
немесе   тырнақшадағы   өрнек    болса,   сол   есепті   шешу   үшін   типті
келтіру(түрлендіру)   операциясын  қолдану  керек   .   Осындай   келтірулер
орындалтын ережелерді қарастырайық.
Типтерді   түрлендіру   ережелері.   Өрнектерді   есептеу   кезінде   кейбір
операциялар операндалар сәйкес типте брлуын  талап  етеді,  ал  егер   типке
қойылатын  талаптар  орындлмаған  болса,  қажетті  түрлендірулерді  мәжбүрлі
түрде жүргізуді шақырады.Инициализацияланатын өрнек типі  анықталған  обьект
типіне келтірілген  жағдайда  да  осындай  ситуация  пайда  болады.  Оң  жақ
бөліктегі өрнектің  мәнін  меншіктегенде  әрқашан  сол  жақтағы  айнымалының
типіне келтіріледі, бұл типтердің сәйкестігіне аса мән берілмейді.
 Негізгі типтер үшін Си  тілінің  түрлендіру  ережесі   тілдің  стандартымен
анықталған .  Бұл  стандартты  түрлендірулер   "төменгі"  типті  "жоғарғыға"
айландырудан тұрады.
                     5. Берілгендерді шығару функциялары
Си тілінің ішкі берілгендермен алмасудң барлық мүмкіндіктері енгізу-  шығару
библеотекалық функцияларының көмегімен  орындалады.Компилятордың  стандартты
библеотекасынан енгізу- шығару құралдарын сипаттауды программаға  қосу  үшін
 #include . директивасын қолданамыз.
Берілгендерді шығару– ОП дан өңдеуден өткізгеннен кейін ақпаратты ішкі
тасымалдаушыға(монитор экранына, принтерге және т.б ) жіберу. Берілгендерді
шығарудың негізгі функцияларына:  printf(), puts(), putchar() жатады.
Формтталған шығару функциясы. ЭЕМ – нан шығару үшін printf()  функциясы  жиі
қолданылады.  Ол  берілгендерді ішкі кодтан символдық түрге  келтіреді  және
алынған  символар  суретін  дисплейдің  экранына  шығарады.  Сонымен   қатар
берілгендерді түрлендіру мүмкіндігі бар,  яғни  олардың  экран   дисплейінде
жариялануына әсер ету. printf() шақыру  операторы  функциясын  келесі  түрде
келтіруге болады:
                  printf(форматты_жол,аргументтре тізімі);
Форматты_жол екілік  тырнақшалармен  шектелген  және  өздік  мәтінндерден  ,
басқарушы   символдардан   берілгендерді   түрлендіруші   спецификациялардан
тұрады.
 Аргументтер тізімі (алдыңғы үтірмен ) жоқ болуы мүмкін.
Өзіндік мәтін (түрлендіру спецификациясы емес және  басқарушы  символдар  да
емес) өзгертусіз экранға шығарылады. Басқарушы символдар(жолдарды  ауыстыру,
табуляция және т.б) шығарылатын  символдрдың   дисплей  экранда  орналасуына
әсер етеді.
Берілгендерді  түрлендіру  спецификациясы  және   берілгендерді   түрлендіру
printf()  функциясының  аргументтерінің  мәнінің  ішкі  формасын  жариялауды
басқаруға  арналған.  Түрлендіру   спецификациясы   элементтері   арасындағы
негізі екі символ - '% символы және   спецификатор болып табылады.
Негізгі спецификаторлар :
d – бүтін ондық сандар үшін (типі int)
u – таңбасыз бүтін ондық сандар үшін (типі unsigned)
f –фиксирленген нүкте  формасындағы  нақты  сандар  үшін  (типі  float  және
double)
е – жылжымалы нүкте  формасындағы  нақты  сандар  үшін  (  мантиссамен  және
ретпен) – double және float типтері үшін
c – символдар үшін
s – для строки
printf()функциясының   аргументтерінің   тізіміне    мәндері    программадан
енгізілетін обьекттер жатады. Бұл өрнек және дербес жағдайлар –  айнымалылар
және  тұрақтылар.Аргументтер  саны   мен   олардың   типі   форматты   жолда
түрлендіруінің кезектілігі сәйкес келуі керек. Түрлендіру  спецификациясында
сандық мәнді шығару үшін "өріс ұзындығы" және "нақтылығы"  маңызды.
Өріс ұзындығы – шығатын мәнді жариялауды анықтау үшін , бүтін оң сан  (экран
 позициясындағых).
Нақтылық-  нақты  сан  (фиксирленген   нүкте)   немесе    оның   мантиссасын
(жылжымалы нүкте  формасын  қолданудағы)  ішкі  жариялаудың  бөлшек  бөлімін
анықтайтын  бүтін оң сан.Кейбір кодтар монитор  экранында  графикалық  түрде
жарияланбайды, мысалы, курсордың  жаңа  жлға  көшуі,курордың  жолдың  басына
көшуі және т.б. Сәйкес  символдық  тұрақтыларды  программада  бейнелеу  үшін
бірнеше символдан тұратын комбинация қолданылады. Осындай  әр  комбинация'\'
символынан басталады. Осындай символдар жиыны кезекті басқару  деп  аталады.
Төменде олардың тізімі келтірілген:
'\n' – жолдарды көшіру;
'\t' - горизонтальді табуляция;
'\r' – курсорды жолдың басына қайтару;
'\\' –кері қисық сызық \;
'\'' - апостроф (бір  тырнақша);
'\"' - тырнақша ( екі тырнақша);
'\0'- нөлдік символ;
'\а' – қоңырау -сигнал;
'\b'- бір позицияға кері қайту  (бір символға);
'\f' – бетті аудару (прогон);
'\v' – вертикальді табуляция;
'\?' – сұрақ белгісі.
Аталған тұрақтылар екі немесе одан да көп  литерлермен  бейнеленеді,   бірақ
олар жекеленген екілік коды бар.
puts() функциясы экранға символдар жолын шығару үшін және автоматты түрде
жаңа жолға көшу үшін қолданылады.
putchar() функциясы  экранға бірлік имвол шығарады.выводит единичный символ
на экран.
                      6. Берілгендерді енгізу функциясы
Берілгендерді енгізу– бұл ақпаратты ішкі тасымалдаушыдан  өңдеу үшін ОП-ға
жіберу. Си тілінде енгізу үшін бірнеше стандартты функция қолданылады:
scanf(), read(), gets(), getch().
scanf()
Шақыру операторы  scanf() функциясының түрі келесідей:
                  scanf (форматты_жол, аргумент _тізімі );
scanf()функциясы  клавятурадан  енгізілген   кодты   "оқуды"   орындайды.Бұл
көрінетін символдардың кодтары, сонымен қатар, көмекші пернелер мен  олардың
бірігуімен түсетін басқарушы кодтар болуы  мүмкін  .   scanf(  )   функциясы
кодтарды қабылдайды, оларды  ішкі  форматқа  түрлендіреді  және  программаға
жібереді.   Сонымен  қатар  программист    форматты   жол   специфиациясының
көмегімен  енгізілетін кодттың интерпретациясына әсер ете алады.
scanf()  функциясы үшін форматты жол және аргументтер тізімі міндетті  түрде
 болуы  керек.   scanf()   функциясы  үшін  форматты  жол  және  аргументтер
тізімін түрді түрлендіру спецификациясынан формирациялаймыз:
% * өріс_ұзындығы модификатор спецификатор
Түрлендіру спецификациясы элементтерінің ішінен тек   %  және   спецификатор
міндетті . printf() функциясына қарағанда   scanf()  функциясының  аргументі
ретінде тек обьект программасының адресі ғана бола алады,  дербес  жағдайда,
олардың айнымалыларының адрестері. Адрестің шифрленбеген ұғымы,  Си  тілінде
обьектінің адресін алу үшін & унарлы операциясы бар:
                                & объект аты
Айнымалының адресін алу өрнегі келесідей:
                             & айнымалының _аты
Сөйтіп,адресті анықтау үшін айнымалының атының алдында  &  символы  жазылады
. Егер name – айнымалы аты болса, онда  &name – оның адресі.
Енгізілетін  ақпаратты  тергенде,  пернетақтада  scanf()функциясы    
батырмасын басқаннан кейін берілгендерді енгізу басқарылады.


Өзін –өзі тексеру сұрақтры
1. Өрнек деген не?
2. Берілгендерге қолданылатын операциялар қандай?
3. Қандай меншіктеу  операторлары бар?
4. Меншіктеу операторының тағайындалуы мен жзылу форматы.
5. Типтерді келтіру ережелері.
6. Берілгендерді енгізу және шығару деген не?
7. Қандай шығару функциялары бар?
8. Қандай енгізу функциялары бар?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


5 апта


Тақырып 6. Өтудің шартты және шартсыз  операторлары
Дәріс жоспары
1. Тармақталу алгоритмі.
2. Шартсыз өту операторы.
3. Шартты өту операторы.
4. Құрама операторы.
5. Таңдау операторы.
6. break операторы.

Дәрістің қысқаша конспектісі
1. goto шартсыз өту операторы
Жазылу форматы:
goto белгісі;
Белгі – бұл оператодың сол жағыда орналасатын және онымен қос  нүкте  арқылы
бөлінетін идентификатор.
goto операторы көрсетілген белгі операторына жіберуді басқаруды орындайды.

2. if…else…шартты өту операторы
Шартты өту операторы екі түрде қолданылады:
1. Қысқаша түрі:

if (өрнек) оператор1;





Бұл түрде оператор жұмысы келесідей: егер өрнек ақиқат  болса  (яғни  нөлдік
емес мән болса), онда оператор1 орындалады, әйтпесе (яғни,  логикалық  өрнек
жалған болса) – программадағы  шартты  өту   операторынан  кейінгі  оператор
орындалады.
өрнек ретінде қолданылуы мүмкін:
1. Арифметикалық өрнек.
2. Логикалық өрнек.

2. Толық түрі:

if (өрнек) оператор1;
else оператор2;
Толық түрде оператор жұмысы келесідей: егер  өрнек  ақиқат,  онда  оператор1
орындалады,әйтпесе  (яғни,  логикалық  өрнек  жалған  болғанда)   –оператор2
орындалады..

Оператор1, оператор2 – жай немесе құрама оператор.

Шартты өту операторы салынған болуы мүмкін.

                               Құрама оператор
Құрама оператор – { } фигуралық жақшамен шектелген ерікті операторлардың
санынан тұратын топ.

3. switch операторы
switch  операторы  көптеген   нұсқалар   жиынынан   таңдауды   ұйымдастыруға
арналған.Оператордың форматы келесідей:
switch (өрнек)
{
case  тұрақты _1: операторлар_1]
case  тұрақты_2: операторлар_2]
…
default: операторлар;
}
Дөңгелек жақшасының ішіндегі switch  кілттік  сөзінен  кейінгі  өрнек  ,  Си
тілінде рұқсат етілген мәні бүтін  болатын  кез  келген  өрнек  бола  алады.
Бүтін типке келтіруге болатынын ескерейік, бірақ,шектеулер  туралы  да  білу
керек.
Бұл өрнектің мәні  бірнеше нұсқалардың біреуін  таңдау  үшін  кілттік  болып
табылады.  switch  операторының  денесі  тұрақтыдан  кейінгі  case   кілттік
сөзімен  таңбаланған  бірнеше  оператордан  тұрады.  case  кілттік   сөзімен
таңбаланған  оператордан  басқа  default  кілттік  сөзімен  таңбаланған  бір
фрагмент болуы мүмкін.
Операторлар тізімі бос болуы мүмкін немесе бір  немесе  бірнеше  оператордан
тұруы  мүмкін. Сонымен қатар, switch операторында  операторлар  кезектілігін
фигуралық жақшаға алу міндетті емес.
switch операторының орындалу сызбасы келесідей:
1. Өрнек жақша ішінде орындалады;
2.  Есептелген   мәндер   case   кілттік   сөзінен   кейінгі   тұрақтылармен
   салыстырылады;
3. Егер тұрақтылардың  біреуі  өрнекпен  сәйкес  келсе,  онда  басқару  case
   кілттік сөзімен таңбаланған операторға беріледі ;
4. Егер тұрақтылардың  біреуі  де  өрнекпен  сәйкес  келмесе,  онда  басқару
   default кілттік сөзімен таңбаланған операторға беріледі, ал ол жоқ болған
   жағдайда басқару   switch операторынан кейінгіге беріледі.
switch операторын қолданудың қызықры  ерекшеліктерін  атап  өтейік:  default
сөзімен конструкция switch операторының денесінде ең соңғы  болмауы  мүмкін.
switch операторының денесіндегі case және  default  кілттік  сөздері  switch
операторының  денесі  орындалғанда  бастапқы  нүкте   анықталатын   бастапқы
бақылау  кезінде  ғана  маңызды  .  Егер  қандай  да  бір  оператор   switch
операторы денесінен басқаруды жібермесе, бастапқы  оператор  мен  дене  соңы
арасындағы барлық операторлар кілттік сөздерге  тәуелсіз  орындалады.Сөйтіп,
егер  қажет  болған  жағдайда,  case  операторынан  шығуды  программист  өзі
ұйымдастыру керек. Көп жағдайда ол үшін break операторы қолданылады.
Өрнектің әр түрлі мәніне бір әрекетті қолдану үшін, бірнеше   case   кілттік
сөзімен  бір операторды бірнеше рет қолдануға болады.

Break операторы
break  операторы  оны   біріктіретін  switch,  do,  for,   while   ең   ішкі
операторлардың   орындалуын    тоқтатуға    арналған.    Break     операторы
орындалғаннан кейін   басқару  тоқтатылған  оператордан  кейінгі  операторға
беріледі.
Өзін – өзі тексеру сұрақтары
1. Тармақталған алгоритм деген?
2. Белгі деген не?
3. goto шартсыз өту алгоритмінің тағайындалуы мен жазылу форматы қандай?
4. if…шартты өту алгоритмінің тағайындалуы мен жазылу форматы қандай?
5. Қысқаша түрде жазылған шартты өту операторы қалай жұмыс істейді?
6. Толық түрде жазылған шартты өту операторы қалай жұмыс істейді?
7. Қарапайым оператор деген не?
8. Құрама оператор деген не?Ол не үшін қолданылады?
9. Таңдау операторының тағайындалуы мен жазылу форматы қандай?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


6 апта


Тақырып 7. Циклдік операторлар
Дәріс жоспары
1. Циклдік  алгоритм.
2. Шарты алдын ала берілген циклдік оператор.
3. Шарты соңынан берілген циклдік оператор.
4. Параметрлі цикл операторы.
5. continue операторы.

Дәрістің қысқаша конспектісі
Си тілінде циклді ұйымдастырудың үш түрі бар:
1. while… - шарты алдын ала берілген циклдік оператор
2. do… - шарты соңынан берілген циклдік оператор
3. for… - параметрлі цикл операторы

Әр операторды жеке қарастырайық.

1. Шарты алдын ала берілген оператор


Жазылу форматы:

while (өрнек_шарты)
цикл_денесі;
Өрнек_шарты  ретінде көбінесе қатынас немесе логикалық өрнек қолданылады.
Цикл денесі циклде орындалатын операторлардан  тұрады.  Цикл  денесі   –  не
құрама, не жеке оператор, яғни, операторлық жақшаға  алынған  операторлардың
кезектілігі. Цикл денесі бос  оператор болуы  да  мүмкін,  яғни,  тек    ";"
түрінде ғана бейнеленеді.
Бұл оператор келесідей жұмыс атқарады:
Ең бірінші өрнек_шарты есептеледі.  Егер  ол  ақиқат  болса(яғни,  0-ге  тең
болмаса),онда  цикл  денесі  орындалады,  одан  кейін   өрнек_шарты   жалған
болғанға  дейін  қайта-  қайта   тексеріледі.  Егер   өрнек_шарты    бірінші
тексерілуден кейін жалған болып шықса, онда  цикл  денесі  бір  де  бір  рет
орындалмайды. Егер өрнек_шарты тек ақиқат мәнді ғана  қабылдаса,  онда  цикл
денесі шексіз орындала береді.
Өрнек_шарты   арифметикалық  өрнек  болуы  да  мүмкін.Бұндай  жағдайда  цикл
денесі өрнек_шарты  0-ге  тең болғанға дейін орындалады.
Ескерту: Циклде орындалатын операторлар  циклдің денесі болып табылады.

2.Шарты соңынан берілген циклдік операторлар


Жазылу форматы:

do
цикл_денесі
while(өрнек_шарты);





Өрнек_шарты while цикліндегі сияқты  логикалық  немесе  арифметикалық  болып
табылады.

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

Ескерту: while  операторында өрнек_шартының мәнін тексеру циклдің басында
орындалатына мән беріңіздер, ал  repeat операторында өрнек_шартының мәнін
тексеру циклдің соңында  орындалады және  цикл денесі кез келген жағдайда
бір рет болсын орындалады.



4. Параметрлі циклдік оператор


Жазылу форматы:

for (өрнек_1;өрнек_шарты;өрнек_3)
цикл_денесі;










for операторндағы бірінші және  үшінші  өрнектер  үтірмен  бөлінген  бірнеше
өрнектерден тұруы мүмкін.

Бұл оператор келесідей жұмыс істейді:
Өрнек_1  әрекетті  циклдың  басталуына  дейін  анықтайды,  яғни,  цикл  үшін
бастапқы шарттарды береді; көбінесе бұл меншіктеу операторы болып  табылады.

Өрнек_шарты  –  әдетте  логикалық  немесе  арифметикалық  болады.Ол  циклдің
аяқталуын немесе жалғасуын анықтайды. Егер ол ақиқат болса(0-ге  тең  емес),
онда цикл денесі орындалады, одан кейін өрнек_3 есептеледі.
Өрнек_3  әдетте  циклдің  келесі  орындалуына   қажеттілерді   параметрлерді
өзгерту немесе цикл денесінің кез келген айнымалыларын береді.
Сөйтіп, өрнек_1 бір рет ғана орындалады, ал  өрнек_шарты және өрнек_3   цикл
денесінің әр орындалуынан кейін есептеледі.Цикл өрнек_шарты жалған  болғанға
дейін жалғасады.
for операторында кез келген  3-еудің, кез  келген  2-дің  немесе  барлық  үш
өрнек те жоқ болуы мүмкін,  бірақ  оларды  бөлетін   ";"   символы  міндетті
түрде  болуы керек. Егер өрнек_шарты жоқ болса, онда ол ақиқат және  циклден
шығу үшін арнайы құрал керек.
Continue операторы
continue операторы , break операторы сияқты, цикл операторының  ішінде  ғана
қолданылады, бірақ, оның орындалуынан  айырмашылығы  программаның  орындалуы
тоқтатылған  оператордан  кейінгі   оператордан   жалғаспайды,   тоқтатылған
оператордың басынан басталады. Оператор форматы келесідей: continue;
Өзін – өзі тексеру сұрақтары:
1. Циклдік алгоритм деген не?
2. Шарты алдын ала берілген циклдік  операторының  тағайындалуы  мен  жазылу
   форматы қандай? Шарты алдын  ала  берілген  циклдік  операторы  жұмысының
   блог –схемасын қалай көрсетуге болады?
3. Шарты соңынан  берілген  циклдік  операторының  тағайындалуы  мен  жазылу
   форматы қандай? Шарты соңынан берілген циклдік операторы жұмысының   блог
   –схемасын қалай көрсетуге болады?
4. Параметрлік цикл операторының тағайындалуы  мен  жазылу  форматы  қандай?
   Параметрлік цикл операторының  жұмысының  блог –схемасын қалай  көрсетуге
   болады?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984

7 апта

Тақырып 8. Функциялар
Дәріс жоспары
1. Ішкі программа ұғымы.
2. Функцияларды сипаттау.
3. Функциялар мен олардың типтерін сипаттау.
4. Функцияны шақыру.

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

                                 Функциялар
Си тіліндегі әр программа–   бұл  функциялардың  жиыны.  main  атты  функция
негізгі функция  болып табылады. Бұл функциясыз программа орындалмайды.  Бұл
негізгі программаның аты барлық программалар үшін  бірдей  және  өз  еркімен
таңдалына  алмайды.  main()   функциясы  орындалуға  ОЖ  –нің   командасымен
жіберіледі. main()  функциясы қайтаратын мән ОЖ-ге  беріледі.
Си тіліндегі функция ұғымы екі сипатта болады. Бір жағынан,  функция  –  бұл
еркін типтердің бірі. Екінші жағынан,  функция –  Си  тіліндегі  прграмманың
минимальді орындалатын модулі . Бұл екінші ұғымның синонимі  басқа  тілдерде
ішкі программа деп аталады.
Функцияны  ішкі  программа  ретінде қарастырайық .
Ішкі  программа – қосымша алгоритмді жүзеге асыратын программа.
Көбінесе программаларда бірдей есептеулерді  орындайтын  бір  типті,  бірақ,
әр түрлі берілгендермен    аумақтар  кездесіп  жатады.  Программаның  бұндай
бөліктерін ішкі программалар ретінде рәсімдейді.

Функцияларды сипаттау  Си  тіліндегі түрі:

функция_атының (формальді_параметрлердің_спецификациясы)
типі {
обьект_сипаттамасы;
орындалатын _операторлар;
}

Бірінші жол– бұл функцияның тақырыпшасы.Ол келесі берілгендерден тұрады:
Тип – функция қайтаратын мәндердің типі. Егер функция мән  қайтармаса,  онда
оның типі ретінде void қолданылған.
Функция аты – программаның қызметтік сөздерімен, басқа обьектілердің  атымен
сәйкес келмейтін, программист өз еркімен таңдайтын ат.
Формальді параметрлер спецификациясы – не формальді параметрлер  тізімі,  не
бос, оның әр элеентінің түрі келесідей:
типтің_анықталуы  параметр _аты

Функцияның денесі – бұл  фигуралық  жақшалармен  шектелген  және  функцияның
тақырыпшасынан кейін  орналасатын  функция  сипаттамасының  бөлігі.  Функция
денесі обьектінің сипаттамасынан (мысалы,  айнымалыларды  сипаттаудан)  және
орындалатын  оператордан  тұруы  мүкін.  Си  тілінің   ерекшелігі    функция
денесінің ішінде басқа функцияны сипатай алмауында.
Функция денесінің  міндетті  операторы  функциядан  шақыру  нүктесіне  қайту
болып табылады, оның екі түрі бар:
return;
return өрнек;
Бірінші  форма  ешқандай  мән  қайтармай,  функцияны  аяқтайды,  яғни,  оның
сипаттамасында функция атына void  типін көрсеткен.
 Екінші  формада  өрнек  функция  атының  алдында,  оны  сипаттау  бөлімінде
функция қайтаратын мәнге  автоматты  түрде  түрлендіретін  типке  сипатталуы
керек.

Ескерту: Си тілінде функцияны сипаттаудың "ескі" формасы бар:

Функция атының типі (формальді _ параметрлер _типі)
параметрлер _ спецификациясы;
{
Обьектілер _сипаттамасы;
Орындалатын _операторлар;
}

Мысал:
1.Функцияның сипаттамасының стандартты формасы:
double f(int n, float x)
{
Функция денесі
}

2. Функцияның сипаттамасының "ескі" формасы:
double f(n, x)
int n;
float x;
{
Функция денесі
}

Бұл функциялардың сипаттамалары эквивалентті.


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

функция_ атының типі (формальді _ параметрлер _типі);

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

Ескерту:
Егер функцияның  сипатталуы  негізгі  программа  мәтінін  дейінгі  программа
мәтінінде орналасса,  онда  негізгі  программада  прототипті  жазу  міндетті
емес.


Негізгі программада функцияны шақыру.
Функцияға рұқсат алу үшін:
функция_аты (фактілі_параметрлер_тізімі)

Аргуметтер  деп  аталатын  фактілі  параметрлер  тізімі  -   бұл  функцияның
формальді  параметрлерінің  санына  тең  өрнектер  тізімі.  Формальді   және
фактілі  параметрлердің  арасындағы  сәйкестік   олардың   тізімдегі   өзара
орналасуымен анықталады.  Формальді  және  фактілі  параметрлердің  арасында
типтері  бойынша  сәйкестік  болуы  керек.  Егер  фактілі  параметрдің  типі
формальді параметрдің типімен  сәйкес  келмесе,  онда  компилятор  автоматты
түрде  типтерді  түрлендіретін  командаларды  іске  қосады,  бірақ  ол   тек
типтерді келтіруге рұқсат етілген болса ғана орындалады.
Функцияның формальді параметрлері сонда жергіліктендірілген,  яғни,  функция
сипаттамасы сыртында  рұқсат  етілмеген  және  функция  денесінде  формальді
параметрлермен жүргізілген операциялардың ешқайсысы  фактілі  параметрлердің
мәнін өзгертпейді.
Функцияны шақыру өрнек болып табылады, бірақ,  бұндай  өрнектерді  программа
мәтінінде орналастыру функцияның қайтаратын  мәннің  типіне  байланысты.Егер
функция қайтаратын мәннің  типі  void  болса,  онда  функция  қайтарылмайтын
мәнді функция болып табылады – бұндай функция білімді қажет ететін  ешқандай
өрнекке кірмейді, тек жеке өрнек –оператор түрінде  шақырыла алады:

функция_аты(фактілі_параметрлер _тізімі);

Ескерту:
main() негізгі фуннкциясы қарапайым функцияларға қарағанда,  параметрлерімен
де оларсыз да қолданыла алады. main()функциясын параметрлерсіз  қолданғанда,
жақшалар бос қалдырылады.

Өзін- өзі тексеру сұрақтары
1. Ішкі программа деген не?
2. Функция деген не?
3. Функцияны қалай сипаттауға болады?
4. Негізгі программада функцияны шақыру қалай орындалады?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


8 апта


9 тақырып. Жады кластары

Дәріс жоспары
1. Жады кластары.
2. Объектілердің локализациясы.
3. Глобальды объектілер.
4. Динамикалық жады.
5. Ішкі объектілер.
6. Автоматты, статистикалық, ішкі айнымалылар.

Дәрістің қысқаша конспектісі
                Жады кластары және программаларды ұйымдастыру
Объектілердің локализациялануы. Автоматы жадыны сипаттау  үшін  auto  немесе
register жадыларының классспецификаторлары  қолданыла  береді.  Бірақта  бұл
жады  класының   спецификаторлардың-кілттік   сөздерінсіз-ақ   блок   ішінде
анықталған(мысалы,функция    денесінің     ішінде)     кез-келген     объект
(мысалы,массивтер немесе  айнымалылар),  автоматты  жады  объектісі  ретінде
қабылданады. Автоматты жады объектісі өзі  анықталған  блоктың  ішінде  ғана
бар болады. Аuto немесе register типіндегі объектілерімен  белгіленген  жады
блоктан шыға бергенде босатылады, яғни  объектілер  жоғалады.  Блокқа  қайта
кіргенде сол объектілер үшін жадыдан алдыңғылардан тәуелдсіз  жаңа  аймақтар
бөлінеді.  Автоматты  жады  объектілері  өздері  анықталған  блоктың  ішінде
локалданған,  олардың  бар  болу  уақыты("өмір  сүру"  уақыты)  сол  блоктың
ішіндегі басқарудың бар болуымен  анықталады.  Басқаша  айтқанда,  автоматты
жады әрқашанда ішкі болады, оған тек сол блокта, яғни өзі анықталған  блокта
болғанда ғана байланыса аласыз.
Мысал:
# include 
/* Автоматты жады айнымалылары */
void autofunc(void)
{
int K=l;
printf("\tK=%d",K);
K++;
return;
}
void main()
{
int x;
for (i=0;i<5;i++)
autofunc();
}
Программаның орындалуының нәтижелері: K=1    K=1  K=1   K=1  K=1
Бұл программаның орындалуының нәтижесі айқын көрініп тұр, және  келтірмей-ақ
қоюға болатын еді егер ішкі жадының тағы бір  классы  –  статистикалық  ішкі
жады болмаса. Келтірілген программаға өте ұқсас программаны қарастырайық:
#include 
/* Статистикалық жадының локальды айнымалылары */
void stat(void)
{
static int K=l;
printf("\tK=%d",K>
K++;
return;
}
void main()
{
int i;
for (i=0;x<5;i++)
stat() ;
}
Программаның орындалуының нәтижелері:K=1     K=2  K=3   K=4  K=5
Отличие функций autofunc() и stat() состоит в наличии  спецификатора  static
при определении переменной int К, локализованной в теле  функции  stat().  К
айнымалысы autofunc() функциясындағы - бұл  автоматты  жады  айнымалысы,  ол
функцияға әр кірген сайын анықталады және инициализацияланады. static int  К
айнымалысы жадыдан орын алады және  бір-ақ  рет  қана  инициализирленеді.  К
статистикалық  ішкі  айнымалысының  соңғы  мәні  stat()  функциясынан   шыға
берісте, дәл осы функцияның кезеті шақырылуына дейіін сақталады.
Глобальды  объектілер.  Блоктар  ішінде  объектілерді  қолдану  мүмкіндігіне
назар аудару қажет, Следует обратить внимание  на  возможность  использовать
внутри блоков  объекты,  которые  по  месторасположению  своего  определения
оказываются глобальными по отношению  к  операторам  и  определениям  блока.
Есімізге түсірейік, блок – бұл тек функция денесі ғана  емес,  сонымен  қоса
ирек жақша ішіне алынған кез-келегн анықтама және операторлар кезектілігі.
Глобальды айнымалы программасынан мысал:
#include 
int N=5;
/* Глобальная переменная */
void func(void)
{
printf("\tN=%d",N);
N--;
return;
}
void main()
{
int i;
for (i=0;i<5;x++)
{
func();
N+=2;
}
}
Программа орындалуының нәтижесі: N=5   N=6   N=7  N=8   N=9
int N айнымалысы main( ) және func() функциясының ішінде  анықталмаған  және
олардың әрқайсысына байланысты глобальды объект болып табылады. Ғunc( )  –ты
әр шақырған сайын N-нің мәні 1-ге азаяды, негізгі программада 2-ге  ұлғаяды.
Глобальді обьект блоктың ішінде глобальді  обьектінің  аты  басқа  мақсатпен
иқолданғанда,  анықтамамен   "затенен"  немесе  "жасырылған"  болуы  мүмкін.
Алдыңғы программаны модифицирлейміз:
#include 
int N=5; /* глобальды айнымалы*/
void func(void)
{
printf("\tN=%d",N);
N--;
return;
}
void main()
{
int N; /* локальды айнымалы */
for (N=0;N<5;N++)
func() ;
}
Программа орындалуының нәтижесі:  N=5 N=4    N=3  N=2   N=l
Автоматты жадының main( )  функциясынан  шыққан  int  N  айнымалысы   int  N
глобальды айнымалысының  мәніне  еш  әсер  етпейді.  Бұлар  жадыдан  әртүрлі
аумақтары берілген әртүрлі объектілер. Ішкі айнымалы N  main()  функциясынан
"көрінбейді" және бұл int N анықтамасының нәтижесі оның ішінде болады.
Динамикалық жады – бұл программаның орындалу барысында  бөлінетін  жады.  Ал
мына  сұраққа:  "Динамикалық  жадыда  глобальды  ма  әлде  локальді   объект
орналасқан?" дұрыс жауап тауып көрейік.
Динамикалық   жадыны   бөлгеннен   кейін,   арнайы   библиотекалық    free()
функциясының  көмегімен ғана орындалуы мүмкін, оның толық босатылуына  дейін
сақталады.
Егер динамикалық жады программаның память не была освобождена  до  окончания
выполнения программы, то  она  освобождается  автоматически  при  завершении
программы.  Тем  не  менее,  явное  освобождение  ставшей  ненужной   памяти
является признаком хорошего стиля программирования.
Программаның  орындалу  барысында  динамикалық  жады  аумағы   осы   аумақты
адрестейтін нұсқаушы рұқсат етілген  барлық  жерде  рұқсат  етілген.  Сондай
қандай да бір блокта бөлінген (мысалы, негізгі  емес  функцияның  денесінде)
динамикалық жадымен жұмыстың келесі үш нұсқасы мүмкін:
 •  нұсқаушы  (динамикалық  жады  аумағында)  автоматты   жадының   локальды
   объектісі  ретінде  анықталған.  Бұл  жағдайда   бөлініп   алынған   жады
   нұсқаушының локальденуі блогының сыртына шыға бергенде рұқсат жоқ болады,
   және оны блоктан шығар алдында босату қажет;
 • нұсқаушы статистикалық жадының  локальды  объектісі  ретінде  анықталған.
   Блокта бөлініп алынған динамикалық жады әр блокқа кірген  сайын  нұсқаушы
   арқылы рұқсат етілген. Жадыны тек оны қолдануды  аяқтағаннан  кейін  ғана
   босату керек;
 • нұсқаушы блокқа байланысты глобальді объект болып  табылады.  Динамикалық
   жады нұсқаушы "көрінген" барлық блокта мүмкін. Жадыны тек  оны  қолдануды
   аяқтағаннан кейін босату керек.
Динамикалық жадының объектісі ішкі  статистикалық  нұсқаушымен(локальденген)
байланысты болғанда, екінші нұсқасын иллюстрациялаймыз:
#include 
#include  /* malloc(),free() функциялары үшін */
void dynam(void)
{
static char *uc=NULL; /*  Ішкі нұсқаушы */
/* Жадының бірнеше рет бөлінуінен сақтау: */
if (uc ==NULL)
{
uc=(char*)malloc(1);
*uc='A';
}
printf("\t%c",*uc);
(*uc)++;
return;
}
void main()
{
int i;
for (i=0; i<5; i++)
dynam( );
}
Программа орындалуының нәтижесі:  А    B     C    D     E
Алдыңғы программаның дұрыс еместігі  -  malloc()функциясымен  бөлінген  жады
аумағы free( ) функциясымен босатылуы екіталай.
Келесі  программада  нұсқаушы  жадының  динамикалық  аумағында  -  глобальды
объект:
#include 
#include  /* malloc( ), free( ) функциялары үшін */
char  *  uk=NULL; /*  глобальды нұсқаушы  */
void dynam1 (void)
{
printf("\t%c", *uk) ;
(*uk)++;
}
void main (void)
{
int i ;
uk=(char*) malloc (1);
*uk='A' ;
for (i=0;   i<5;   i++)
{
dynam1();
(*uk)++;
}
free(uk);
}
Программа орындалуының нәтижесі:  А    С     Е    G     I
Динамикалық  объект  негізгі  функцияда  құрылады  және   uk   нұсқаушысымен
байланысады.  Сол  жерде  меншіктеуде   бастапқы   'А'   мәнін   қабылдайды.
Динамикалық объект глобальды нұсқаушы  есебінен  екі  main()  және  dynam1()
функцияларында да мүмкін. main() және dynam1() функциясының  ішінде  циклдың
орындалу барысында динамикалық объект мәні өзгереді.
Жадының динамикалық бөлінген аумағын адрестейтін  нұсқаушы,  автоматты  жады
объектісі  болып  табылатындығына  мысал  келтірудің  қажеттігі  жоқ.   Атап
өтейік,   динамикалық  жады,  анықталған  немесе   сыртқы   объект   ретінде
сипатталған   нұсқаушының   осы   жадымен   байланысқан   жерінде(кез-келген
функцияда және кез-келген файлда)  бөлінгеннен  кейін  барлық  жерде  рұқсат
етілген. Ішкі объект  анықтамасын  нақты  анықтау  керек,  ол  тақырыпқа  да
көшеміз.
Ішкі объектілер. Си тіліндегі қарапайым  немесе  күрделі  программа  бірнеше
мәтіндік  файлдарда  орналасқан,  функциялар  жиынынан  тұрады.    Программа
мәтіні бар бөлек файлды кейде  программалық  модуль  деп  те  атайды,  бірақ
модульдерге немесе файлдарға қатысты қатаң терминологиялық  келісімдер  жоқ.
Программа функциялар жиынынан тұрады.  Барлық  ішкі  функциялар,  функцияның
ішінде  орналасқандықтан  Си  тілінің  ережесі   бойынша   басқа   функцияны
анықтауға   болмайды.   Барлық   функцияларда,   тіпті   әртүрлі   файлдарда
орналасқанның өзінде  әртүрлі  атаулар  болуы  керек.  Функциялардың  бірдей
атауы бір және сол функцияға ғана қатысты болуы керек.
Функциядан басқа, программада ішкі обьектілер  –  айнымалылар,  нұсқаушылар,
массивтер  және  т.б  қолданылады.  Сыртқы  объектілер   функция   мәтінінің
сыртында анықталуы керек.
Сыртқы объектілер программаның көптеген функцияларынан алына алады,  бірақта
бұндай  рұқсат  алу  үнемі  автоматты  түрде  болмайды-жағдайлар   қатарында
программисттің  қосымша  араласуы  қажет.  Егер  объект  программамен  бірге
файлдың  басында  анықталған  болса,  онда  ол  файлда   орналасқан   барлық
функциялар  үшін  глобальды  болып  табылады,  және  соның  ішінде  ешқандай
қосымша жазылымдарсыз-ақ байланысу мүмкін болады.  (Шектеу  -  егер  функция
ішінде глобальды объект атауы ішкі объект ретінде  қолданылса,  онда  сыртқы
объект  мүмкін  емес  болып  қалады,  яғни  "көрінбейтін"  дәл  осы  функция
денесінде.).
















Суретте:
 • X объектісі: глобальді сияқты f11(),  f12()-де    болады;  сыртқы  сияқты
   файл 2-де extern X  сипаттамасы  енгізілген  тек  сол  функцияларда  ғана
   болады;
 • Y объектісі: f21( ) және f22( )-де  глобальды  сияқты;  сыртқы  сияқты  1
   файлының extern Y сипаттамасы енгізілген сол функцияларында;
 • Z объектісі: f22( )-де және extern Z сипаттамасы енгізілген файл  1  және
   файл 2-нің барлық функцияларында глобальды сияқты  болады.

Егер сыртқы объект басқа файлдың немесе  функцияның  функциясы  үшін  рұқсат
етілген болуы қажет болса,  онда  ол  сұхбаттасудан  бұрын  қосымша  кілттік
extern сөзін қолданумен бірге  қосымша  сипатталған  болуы  керек.  (Наличие
этого слова  по  умолчанию  предполагается  и  для  всех  функций,  т.е.  не
требуется   в   их   прототипах.)   Ондай    сипаттама,    extern    сөзінің
спецификаторымен  бірге  файлдың  басында  енгізіледі,  және  сонда   объект
файлдың  барлық  функцияларында  доступен.   Бірақта   бұл   сипаттама   бір
функцияның  денесінде  орналасуы  мүмкін,  онда  объект  сонда(ішнде)   ғана
доступен.
Сыртқы объект сипаттамасы оның  анықтамасы  емес.  Естеріңізде  сақтаңыздар:
анықтамада объектіге ылғида жады бөлінеді, және ол  инициализирленген  болуы
мүмкін. Анықтама мысалы:
double summa[5];
char D_Phil []="Doctor of Philosophy";
long M=1000;
Сипаттауда инициализация мүмкін  емес,  массивтер  элементтерінің  санын  да
көрсетуге болмайды:
extern double summa  [  ];
extern char D_Phil   [   ];
extern long M;


Өзін-өзі бақылау сұрақтары:
1. Қандай жады кластары бар?
2. Автоматты жады дегеніміз не?
3. Динамикалық жады дегеніміз не?
4. Статистикалық ішкі жады дегеніміз не?
5. Қандай жады кластарының спецификаторлары қолданылады?
6. Автоматты айнымалылар дегенімізе?
7. Статистикалық айнымалылар дегеніміз не?
8. Ікі айнымалылар ьдегеніміз не?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


9 апта


Тақырып 10. Берілгендердің күрделі типі: массивтер

Дәріс жоспары
1. Массивтер.
2. Бір өлшемді және көп өлшемді массивтер.
3. Сандық массивтерді өңдеудің типтік алгоритмдерін программалау.
4. Бір өлшемді массивтер мен нұсқауыштар.

Дәрістің қысқаша конспектісі
Массив – бұл бір типті ақырлы сандардың жиыны.
Массив атпен аталады.
Мысалы, 1.6, 14.9, -7, 0, -4   сандарының  терілімін  5  элементтен  тұратын
массив деп санауға болады және белгілі бір атпен атауға мысылы, А болады.
Массивтің әр элементі массивтің аты  мен  квадратты  жақша  ішінде  индексін
көрсетумен аталады.
Массив элементтері индекстерінің ретімен реттелген.
Массивтерді сипаттауда:
 • Элементтерінің типін,
 • Массивтің атын,
 • Өлшемін , яғни, нақты элеметті көрсетуге қажет, индекстерінің санын
көрсету қажет.
Сонымен қатар, сипаттауда әр индекс қабылдайтын мәндердің саны  көрсетіледі.
Мысалы, int а[10];  10 элементтен тұратын а[0],  а[1],  ...,  а[9]  массивті
анықтайды. float Z[13][[6];  бірінші индексі 0 ден 12 ге дейінгі 13  мәннен,
екінші индексі  0 ден 5 ке  дейінгі  6  міннен тұратын екі өлшемді  массивті
анықтайды. Сөйтіп, Z екі өлшемді  массив  элементтерін  келесідей  көрсетуге
болады: Z[0][0],   Z[0][5],   , Z[12][5]
Си тілінің синтаксисіне сәйкес,  тек  бір  өлшемді  массивтер  ғана  болады,
дегенмен, бір өлшемді массивтің элементері массив бола алады. Сондықтан  екі
өлшемді  массив  массивтің  массиві  ретінде  анықталады.  Сөйтіп,   мысалда
әрқайсысы float типті 6 элементтен тұратын  13 элемент-массивтерден  тұратын
массив берілген. Кез келген массив элементін нөмірлеу  0- ден басталып,   N-
1  -ге дейін нөмірленетініне назар аударыңыз, мұндағы  N –индекс  мәндерінің
саны .
Массивтердің шектелуі,  яғни,  Си  тілінде  оның  элементінің  индекстерінің
санына жоқ. Си тілінің стандарты  транслятор  31-  ге  дейінгі  массивтердің
сипаттамасын ғана өңдеуге рұқсат етеді . Әдетте, көбінесе, бір өлшемді  және
екі өлшемді массивтер кеңінен қолданылады.
Массивтердің инициализациясы. Массивтерді сипаттауда олардың  иницализациясы
мүмкін, яғни, бастапқы  мәндерді  олардың  элементтеріне  меншіктеу.  Маңызы
бойынша (анығығырақ, нәтижесі бойынша), инициализация – бұл  обьектіні  оған
нқты бір мәнді меншіктеу арқылы сипаттау. Инициализацияны  қолдану  массивті
сипатау форматын өзгертуге мүмкіндік  береді.  Мысалы,  бір  өлшемді  массив
элементінің анық санын сипаттамай қоюға болады, тек инициализация  тізімінде
олардың бастапқы мәнін көрсету:
double d[   ]={1.0, 2.0, 3.0, 4.0, 5.0};
Бергілген мысалда  массивтің  ұзындығын   компилятор  фигуралық  жақшалардың
ішіндегі бастапқы мәндер саны бойынша есептейді. Осындай  сипаттаудан  кейін
элемент d[0] тең 1.0, d[l] тең 2.0  және т.с.с d[4]  тең 5.0.
Егер массивтің сипатталуындаоның өлшемі  көрсетілмеген  болса,онда  бастапқы
мәндрдің саны  массив  элементінің  санынан  көп  болмайды.   Егер  бастапқы
мәндердің  саны  массив  элементінің  санынан  аз  болса,  онда  ол   мәндер
массивтің алғашқы элементтеріне ғана меншіктеледі:
int М[8]={8,4,2};
Берілген мысалда келесі айнымалылардың  мәні  ғана  анықталған:  М[0],  М[1]
және М[2], олар сәйкесінше 8, 4 және 2 –ге тең. М[3],...,  М[7]  элементтері
инициализацияланбаған.
Көп  өлшемді  массивтерді  инициялизациялау  ережесі  бір  өлшемді  массивті
сипаттаған  сияқты, көп өлшемді  массивті  сипаттаумен  сәйкес  келеді.  Бір
өлшемді  массивтер   фигуралық   жақшаға  алынған  бастапқы  мәндері  тізімі
арқылы инициализацияланады. Егер бастапқы мән өз кезегінде массивке  қатысты
болса және фигуралық жақшаға  алынған   бастапқы  мәндерден  тұрса.  Мысалы,
Екі жол және үш қатардан тұратын екі  өлшемді  А   массивінің  элементтеріне
нақты  бастапқы мән меншіктеу келесідей болады:
 double A[3][2]={{10,20}, {30,40}, {50,60}};
Бұл  жазу  келесі   меншіктеу   операторының   кезектілігіне   эквивалентті:
А[0][0]=10; А[0][1]=20; А[1][0]=30; А[1][1]=40; А[2][0]=50; А[2][1]=60;  Осы
тізімді келесі инициализациялау тізімі арқылы да алуға болады:
double A[3][2]={10,20,ЭО,40,50,60};
Инициализацияның көмегімен көп өлшемді массивтің барлық   элементтеріне  мән
меншіктемеуге болады. Мысалы, матрицаның  тек  бірінші   бағанына  ғана  мән
меншіктеу келесідей болады:
double  Z[4][6]={{1}, {2}, {3}, {4}};
Келесі  жазылым  5  жол  және  4  бағаннан  тұратын  бүтін  санды   массивте
"үшбұрышты" матрицада түрлендіреді:
int х[5][4]={{1}, {2,3}, {4,5,6}, {7,8,9,10}};
Бұл мысалда ақырғы бесінші  жол  х[4]  толтырылмаған,  ал  бастапқы  үш  жол
толықтай толтырылмаған болып қалады.
Сандық массивтерді өңдеудің типтік алгоритмдерін программалау.
Тапсырма. 5 элементтен тұратын бір өлшемді  массивтің  теріс  элементтерінің
арифметикалық ортасын есептеу керек.

#include 
main()

{
      int I,K,N;
      float s;
      int A[5]={-1,2,-3,4,5};
K=0;
N=0;
for (I=0; I<= 4; I++)
{
if (A[I]<0)
{
K=K+A[I];
N++;
}
}
s=K/N;
printf("\ns=%f",s);

}

                   Бір өлшемді массивтер және нұсқаушылар.

Си тілінде массивтер мен нұсқауыштар арасында байланыс бар.  Мысалы,  массив
int array[25] түрінде сипатталса, онда массивтің жиырма  бес  элементі  үшін
жадыдан орын бөлу ғана орындалмайды, сонымен қатар  мәні  массивтің  бірінші
элементінің (яғни, саны бойынша нөлдік) адресіне тең,  array  атты  нұсқауыш
үшін де  орын  бөлу  орындалады,  яғни,   массивтің  өзі  атсыз  қалады,  ал
массивтің  элементтеріне  рұқсат  алу  array  атты  нұсқауыш  арқылы  жүзеге
асырылады. Тіл синтаксисіне сәйкес array нұсқауышы тұрақты  болып  табылады,
оның мәнін  өрнектерде  қолдануға  болады,  бірақ,  бұл  мәндерді  өзгертуге
болмайды.
Массив аты нұсқауыш болғандықтан, келесідей меншіктеуге рұқсат етілген :
         int array[25];
         int *ptr;
         ptr=array;
Мұнда ptr  нұсқауышы  массивтің  бірінші  элементінің  адресіне  орнатылған,
сонымен қатар  ptr=array  меншіктеуін  келесі  эквивалентті  түрінде  жазуға
болады:
ptr=&array[0].
Массив элементтеріне рұқсат  алудың  екі  әдісі  бар.  Біріншісі,  қарапайым
квадрат  жақша  ішінде   индекс  мәндерін  қолданумен  байланысты.   Мысалы,
array[16]=3 немесе  array[i+2]=7.  Мұндай  рұқсат  алу  әдісінде  екі  өрнек
жазылады, екінші өрнек  квадрат  жақшаға  алынады.  Бұл  өрнектердің  біреуі
нұсқауыш, ал екіншісі бүтін типті мән. Бұл кезектіліктің жазылуы кез  келген
бола алады, бірақ, жақша ішіне екінші тұрғаны жазылады. Сондықтан  array[16]
және  16[array] жазылулары эквивалентті және массивтің он алтыншы  элементін
білдіреді. Индекті түрде қолданылған нұсқауыштың міндетті  түрде  қандай  да
бір массивке нұсқайтын, тұрақты  болуы  керек  емес,  ол  айнымалы  да  бола
алады.  Дербес  жағдайда,   ptr=array    меншіктелуі   орындалғаннан   кейін
массивтің он алтыншы элементіне рұқсат алу ptr  формасында  келесідей  болуы
мүмкін:  ptr[16] немесе 16[ptr].
Массив  элементтеріне  рұқсат  алудың  екінші  әдісі  *(array+16)=3   немесе
*(array+i+2)=7  түріндегі   адрестік  мәндер  мен   адрестеу   операциясымен
байланысты. Мұндай рұқсат алу  әдісінде  массивтің  он  алтыншы  элементінің
адресіне тең адрестік өрнек келесі түрду жазылуы мүмкін :
*(array+16) или *(16+array).
Компьютерде жүзеге асыру барысында бірінші әдіс екінші  әдіске  келтіріледі,
яғни, индекстік өрнек  адрестік  өрнекке  түрленеді.  Келтірілген  array[16]
және 16[array] мысалдары *(array+16) түріне тұрленеді.
Массивтің  бастапқы  элементіне   рұқсат  алу  үшін  (яғни  нөлдік  индексті
элементке), тек array немесе ptr  нұсқауыштарының  мәнін  қолдануға  болады.
Келесі меншіктеулердің кез келгені
       *array = 2;
       array[0] = 2;
       *(array+0) = 2;
       *ptr = 2;
       ptr[0] = 2;
       *(ptr+0) = 2;
Массивтің алғашқы элементіне  2  мәнін  меншіктейді,  бірақ,  *array=2  және
*ptr=2 меншіктеулері жылдам орындалады, себебі, оларда  қосу   операторларын
орындау  қажет емес.

Өзін – өзі тексеру сұрақтары

1. Массив деген не?
2. Массивтің өлшемі деген  не?
3. Программада бір өлшемді, екі өлшемді массивтер қалай сиптталады?
4. Массив элементтеріне рұқсат алу қалай орындалады?
5. Массивті қалай толтыруға болады?
6. Массивті экранға қалай шығарады?
7. Бір өлшемді массивтер мен нұсқауыштар.

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


10 апта


Тақырып 10.  Берілгендердің күрделі типі: массивтер

Дәріс жоспары
1. Екі өлшемді массивтің сипатталуы.
2. Екі өлшемді массивтің элементтерімен жұмыс.
3. Сандық массивтерді өңдеудің типтік алгоритмдерін программалау.
4. Екі өлшемді массивтер үшін нұсқауыштарды қолдану.


Дәрістің қысқаша конспектісі
float Z[13][[6];  бірінші индексі 0 ден 12  ге  дейінгі  13  мәннен,  екінші
индексі  0 ден 5  ке   дейінгі   6   міннен  тұратын  екі  өлшемді  массивті
анықтайды. Сөйтіп, Z екі өлшемді  массив  элементтерін  келесідей  көрсетуге
болады: Z[0][0],   Z[0][5],   , Z[12][5]
Си тілінің синтаксисіне сәйкес,  тек  бір  өлшемді  массивтер  ғана  болады,
дегенмен, бір өлшемді массивтің элементері массив бола алады. Сондықтан  екі
өлшемді  массив  массивтің  массиві  ретінде  анықталады.  Сөйтіп,   мысалда
әрқайсысы float типті 6 элементтен тұратын  13 элемент-массивтерден  тұратын
массив берілген. Кез келген массив элементін нөмірлеу  0- ден басталып,   N-
1  -ге дейін нөмірленетініне назар аударыңыз, мұндағы  N –индекс  мәндерінің
саны .

Сандық массивтерді өңдеудің типтік алгоритмдерін программалау.
Тапсырма. 3 жол  және  3  бағаннан  тұратын  екі  өлшемді  массивті  экранға
шығару. Бас диоганалінен  жоғары  орналасқан  оң   элементтердің  қосындысын
есептеу керек.

# include 
main()
{
int A[3][3]={3,-2,4,10,-7,1,-9,12,5};
int I,J,D;

D=0;
printf("\n");
for (I=0; I<=2; I++)
{
for (J=0; J<=2; J++)
{
if (I0) D+=A[I][J];
printf("%3d",A[I][J]);
}
printf("\n");
}
printf("\n%d",D);

}

                    Көп өлшемді массивтерге нұсқаушылар.
Си  тілінде  көп  өлшемді  массивтерге   нұсқауыштар   –   ол   массивтердің
массивтері, яғни, элементтері массив болатын массивтер.  Бұндай  массивтерді
жариялауда компьютердің жадысында әр түрлі обьектілер пайда болады.  Мысалы,
int arr2[4][3]  екі өлшемін жариялағанда  жадыда  төрт  нұсқаушыдан  тұратын
массивке  нұсқаушы  болып  табылатын  ,  arr  айнымалысының  мәнін  сақтауға
арналған орын бөлінеді. Төрт нұсқаушылы массиыке де орын бөлінеді. Бұл  төрт
нұсқаушының әрқайсысы  int  типті  үш  элементтен  тұратын  мссив  адресінен
тұрады  Сөйтіп, arr2[4][3] жариялануы программада үш түрлі обьект  тудырады:
arr идентификаторымен нұсқауыш, төрт нұсқауыштан тұратын атсыз  массив  және
int типті он екі саннан тұратын атсыз массив. Атсыз  массивтерге рұқсат  алу
үшін arr  нұсқаушысымен  адрестік  өрнек  қолданылады.  Нұсқаушылар  массиві
элементтеріне  рұқсат алу arr2[2] немесе *(arr2+2)  түрінде   бір  индекстік
өрнекті көрсету арқылы жүзеге асады. Int типті  сандық  екі  өлшемді  массив
элементтеріне рұқсат алу үшін екі индекстік өрнек  int  түрінде немесе  оған
эквивалентті   *(*(arr2+1)+2)  және  (*(arr2+1))[2]   түріндегі   қолданылуы
мүмкін.
Тіл синтаксисіне сәйкес arr  нұсқауышы және arr[0], arr[1],  arr[2],  arr[3]
нұсқауыштары  тұрақты  болып  табылады,  оның  мәнін  өрнектерде   қолдануға
болады,  бірақ,  бұл  мәндерді  программаның  орындалу  барысында  өзгертуге
болмайды.
Көп өлшемді массив элементтері жадыда жол бойынша ретпен  орналасады,  яғне,
соңғы индексі жылдам өзгереді, ал біріншісі баяу өзгереді.  Бұндай  реттілік
көп өлшемді  массивтің  кез  келген  элементіне  оның  бастапқы  элементінің
адресі мен  тек бір индекстік өрнекті қолдану арқылы рұқсат алуға  мүмкіндік
береді.
Мысалы,  arr2[1][2]  элементіне  рұқсат  алу  int   *ptr2=arr2[0]    түрінде
жарияланған,   ptr2  нұсқаушысының  көмегімен  жүзеге  асады.   Ішкі   ұқсас
arr2[6] рұқсат алуын орындау мүмкін емес, себебі 6 индексті нұсқаушы жоқ.

Өзін_- өзі тексеру сұрақтары
1. Екі өлшемді массивті қалай сипаттауға болады?
2. Екі қлшемді массив элементіне қалай рұқсат алуға болады?
3. Екі өлшемді массивті қалай толтыруға болады?
4. Екі өлшемді массивті экранға қалай шығаруға болады?
5. Екі өлшемді массив үшін нұсқауыштарды қолдануға болады.

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


11 апта


Тақырып 11. Жолдар

Дәріс жоспары
1. Символдық берілгендер.
2. Жолдық тұрақтылар мен айнымалылар.
3. Жолдармен жұмыс жасауға арналған  функциялар.
4. Символды массивтерді өңдеудің типтік алгоритмін программалау.

Дәрістің қысқаша конспектісі
                       Символдық берілгендермен жұмыс
Символдық тұрақты– бұл апострофқа алынған бір символ.
Мүмкін мәндер ASCII символдар кодының кеңейтілген теріліміне  жатады.  ASCII
– бұл American Standard  Code  for  Information  Interchange-тің  (ақпаратты
алмастыруға арналған американдық код)   аббревиатурасы.  ASCII   стандартына
сәйкес әр символға және кейбір басқарушы инструкциялардың   0  ден  127-  ге
дейінгі мәндерді қабылдайтын  өз сандық коды бар. ASCII кеіейтілген  кестесі
екі  бөлімнен  тұрады.  Біріншісіне,  0-127  кодымен  символдар  кіреді,  ол
универсалды  болып  табылады,  ал  екіншісі,  (128-255)   кодтары,    арнайы
символдар  мен  халықтардың  әріптеріне  (соның  ішінде   орыс   әріптеріне)
арналған. Сөйтіп, пернетақтаның әр перненің ішкі коды бар, ол код   перненің
пренетақтада орналасуы мен пернедегі символдың бейнесіне байланысты.

Мысалдар:
ASCII-ге сәйкес :
 • 'F' символының коды 70
 • 'f' символының коды 102
 • 2 символының коды 50
 • ESC пернесінің коды 27
 • ENTER пернесінің коды 13
 • ПРОБЕЛ пернесінің коды 32
және т.б.

Си тілінде символды берілгендерді сипаттау үшін анайы берілгендер типі  жоқ,
 символды берілгендерді сипаттау үшін CHAR типі қолданылады.
Символды мәндерді   printf()  және   scanf()   форматты  жолдарында  шығарып
енгізу үшін %c спецификациясы қолданылады.
Латын алфабитінің әріптерінің  ішкі  кодтары  реттелген,  сондықтан   оларды
цикл операторында қолдануға болады.
Мысал:
'a' дан 'n  '  –ға  дейінгі  латын  алфавитінің  символдарын  экранға  баған
ретінде шығару.
#include 
main()
{
char x;
for (x='a';x<='n';x++)
printf("\n%c",x);
}

Назар аударыңыз!
Егер символды айнымалыны шығару кезінде %d  спецификациясын  қолданса,  онда
символдың өзі емес оның коды шығады.

scanf() және printf()функцияларынан басқа  символдарды  енгізу  және  шығару
үшін библеотекада арнайы функциялар қарастырылған:
getchar() – функциясы пернетақтадан енген   символдарды  бір  бірден  оқиды.
Енгізілген  смволдарды  оқу  Enter  пернесін  басқаннан  кейін   орындалады.
getchar() функциясының параметрлері жоқ.
putchar(x) – x -тің символдық мәнінін экранға шығарады.
getch()  –  пернетақтадан  енген  символды   экранда   бейнелемей   енгізуге
арналған. getch()функциясының параметрлері жоқ.
Ескерту: putchar() функциясында форматты жолды көрсетуге болмайды.

                               Жолдармен жұмыс
Жолдық тұрақты – бұл тырнақшаға алынған символдардың кезектілігі.
Жолдық  символдардың  ішінде  арнайы  символдық  тұрақтылар  кодына   сәйкес
басқарушы  кезектіліктер болуы мүмкін.
Жолды жадыға орналастырғанда, транслятор оның соңына  автоматты  түрде  '\0'
символын , яғни, нөлдік байтты орналастырады.
Программада   жолдарды   жеке   символдардан   түрлендіріп,   жолды   аяқтау
белгісінің келісімін сақтау керек.
Жолдың ұзындығы – бұл  +1  жолындағы  символдадың  саны  (нөлдік  байт  қосу
есебінен).
Жолды  жазуда  бір  символ  болуы  да  мүмкін,  мысалы,    "A",  бірақ,  "A"
символдық тұрақтысына қарағанда,  "A" жолының ұзындығы екі байтқа тең.
Си тілінде жолдар  үшін  жеке  тип  жоқ.Жол-бұл  символдардың   массиві  деп
қабылдауға болады. Бұндай массивтегі символдар саны сәйкес жолдық  тұрақтыда
бейнеленгеннен 1 – ге артық (нөлдік байт қосу есебінен).
Символдар  массивіне  (яғни,  жолға)  қарапайым  меншіктеу   көмегімен   мән
меншіктеуге болмайды.
Символдар массивіне инициализация (символды массивті  сипаттауда)  көмегімен
немесе енгізу функциясының көмегімен жолды орналастыруға болады.
scanf()   және   printf()    функцияларында   символдық   жолдар   үшін   %s
спецификациясы қолданылады.
Жолды шығару үшін puts(s) функциясын қолдануға болады, мұндағы  s – жол.
char типті массивті инициализациялаумен бірге  сипаттауда  жолдың  ұзындығын
көрсетпеуге болады.

Мысал:
Экранға жолды шығару.

#include 
main()
{
char x[]="Привет";
printf("\n%s",x);      /* бұл оператордың орнына puts(x) қолдануға болады  *
/
}

Өзін –өзі тексеру сұрақтары
1. Жол дегеніміз не?
2. Программада жолды қалай сипаттауға болады?
3. Жолдық берілгендерге қандай операциялар қолдануға болады?
4. Жолдың жеке символына қалай рұқсат алуға болады?
5. Жолдармен жұмыс жасаудың қандай функциялары бар?
6. Екі жолды қалай салыстыруға болады?
7. Жолдық айнымалыға мәнді қалай меншіктеуге болады?
8. Жолдың ұзындығын қалай анықтауға болады?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


12 апта


Тақырып 12. Берілгендер құрылымы

Дәріс жоспары
1. Құрылымды қолдану.
2. Құрылымды сипаттау.
3. Құрылымдық айнымалыларды сипаттау.
4. Құрылым массивтері.
5. Берілгендердің құрылымы мен нұсқауыштар.

Дәрістің қысқаша конспектісі
                      Құрылымдық типтер мен құрылымдар
  Үлкен  көлемді  мәнді  жиынды  өңдеу   тапсырмасын    шешуде     массивтер
қолданылады. Бірақ, масивтрмен  жұмыста  массивтің  әр  элементінің  типтері
бірдей болу керек.
Көптеген  экономикалық  және  ақпаратық  есептерде  ведомость,   құжаттарды,
тізімдерді өңдеуде  әр  түрлі  типтегі  берілгендерді  бір  топқа  біріктіру
қажеттілігі  туындайды.   Мысалы,   қоймадағы   тауар   келесі   өлшемдермен
сипатталады:
 • Тауар аты;
 • Көтерме(сататын) бағасы;
 • Сауда қымбаттатуы пайызбен;
 • Тауар партиясының көлемі;
 • Тауар партиясының түскен күні.
Бұл мысалда өлшемдердің типтері келесідей:

 • Тауар аты (char []);
 • Көтерме(сататын) бағасы (long);
 • Сауда қымбаттатуы пайызбен(float);
 • Тауар партиясының көлемі (int);
 • Тауар партиясының түскен күні (char [9]).

Бұндай обьектілерді Си тілінде сипаттау  үшін  құрылымдық  берілгендер  типі
қолданылады.

Құрылым– бұл бір компонент деп аталынатын (өріс)  немесе  бірнеше  типтердің
фиксирленген элементтер санынан тұратын  берілгендер типі.
Бір  типті   элементтерден   тұратын   массивтерге   қарағанда,   құрылымның
компоненттері әр типті бола алады және олардың  әрқайсысыныі  аты  әр  түрлі
болуы керек.
"Қоймадағы тауарлар" құрылымының аталған элементерінің типтерін  программист
өзі  таңдаған.  Мағынасына  қарай  компонентердің   типтері   тілде   рұқсат
етілгендердің кез келгені бола  алады.  Өоймадағы  тауар  көп  болуы  мүмкін
болғандықтан,   нақты   тауар    туралы   мәліметтен   тұратын    жекеленген
құрылымдарды сипаттау үшін , программист құрылымдық деп аталатын өз  бетінше
тип енгізеді. Біздің мысалымыз үшін оны былай енгізуге болады:
struct goods {
char name[];     /* Атауы */
long price; /* Көтерме бағасы */
float percent;   /* Қымбаттауы  % */
int vol;    /* Партия көлемі */
char date [9];   /* Партияны әкелу күні */
};
Мұнда struct – құрылымдық тип  спецификаторы  (қызметтік  сөзі  );  goods  –
құрылымдық типтегі пограммист ұсынған атау (ат). ("tag" ағылшынн  терминінің
аудармасын қолданып,құрылымдық типтің орыс  тіліндегі  баламасы  Си  тілінде
көбінесе тег деп аталады). goods  типтік әр обьектісіне  кіретін,  элементті
сипаттау  фигуралық  жақшаға  алынады.   Сөйтіп,  құрылмдық  типті   анықтау
форматы келесідей:

             struct  құрылымдық_тип_аты { элементті_сипаттау };
мұндағы struct – құрылымдық тип спецификаторы;
құрылымдық_тип_аты – программист өз еркімен таңдайтын идентификатор;
элементті_сипаттау – әр қайсысы  енгізілетін құрылымдық  типтің  элементтері
үшін прототип қызметін  атқаратын,  бір  немесе  одан  да  көп  обьектілерді
сипаттау жиыны .
Құрылымдық тип сипаттамасы үтір нүктемен аяқталатынын ескеру керек.
struct  конструкциясы  құрылымдық_тип_аты   тип   спеификатор   сияқты   рөл
атқарады. Мысалы, double немесе int.

Құрылымдық  сипаттау.  Құрылымдық   типтегі   элементтерді   (компонентерді)
сипаттау сыртынан қарағанда сәйкес  типті  берілгендерді  сипаттауға  ұқсас.
Бірақ, маңызды айырмашылықтары  бар.   Құрылымдық  типті  сипаттағанда  оған
жады  бөлінбейді,  оларды  инициялизациялауға  болмайды.  Басқаша  айтқанда,
құрылымдық тип обьект болып табылмайды.
Біздің goods деп аталатын, құрылымдық типті анықтау  мысалымыздан,  тауардың
атауы name атты  char типті массивпен байланысты. Тауар  бірлігінің  көтерме
бағасы percent аты long типті болады. Сауда қымбаттауы   percent  аты  float
типті болады. Бұның бәрі goods атты құрылымдық иптің  сипатталуынан  шығады.
Бірақ, құрылымдық типті  сипаттауға  енген  элементтерден  бірінші  мән  ала
алады,  осындай  типті   бір  құрымым  болсын  (яғни,   құрылымдық   обьект)
сипатталған болу керек. Мысалы,  келесі  сипаттау  екі  құрылымды  шығарады,
яғни, goods типті  екі обьектті шығарады:
                           struct goods coat, tea;
Сөйтіп, құрылымдық тип сипатталған және  оның  аты  анықталған  болса,  онда
нақты құрылымды сипаттау форматы (құрылымдық тип обьектісі) келесідей:
                 struct құрылымдық_тип_аты  құрылым_тізімі,
мұндағы    құрылым_тізімі    –    қолданушы    таңдаған     аттар     тізімі
(идентификаторлар).
Аталған  құрылымдық  сипаттау   кезектіліктерден   басқа   (құрылымдық   тип
сипатталады, содан соң оның атын  қолдану  арқылы  құрылымы  сипаталады)  Си
тілінде   тағы  екі  сызба  және  оның  сипатталуы  бар.  Бірінші,   құрылым
құрылымдық типиен бірге сипаттала алады:
struct  құрылымдық тип аты { элементерді сипаттау } құрылым тізімі;

Мысал
Кесте жолында берілген берілгендерді сипаттау:
|№    |Атауы               |Саны              |Бағасы        |Шығарылған    |
|     |                    |                  |              |жылы          |
|1    |Стол                |120               |3000,5        |2002          |

Егер өрістердің келесі н енгізсек:
№ - n
Атауы - name
Саны - k
Бағасы - c
Шығарылған жылы - g

Сипаттау келесідей болады:

struct s {
int n;
char name[];
int k;
float c;
int g;
};

struct s x;

және  x  айнымалысы  жоғарыда  көрсетілген  кесте  жолындағы   берілгендерді
өңдеуге арналған.

Мысал
Құрылым(обьект) мен құрылымдық типті бірге сипаттау мысалыstruct student {
char name [15]; /* Аты */
char surname [20] ; /* Фамилиясы */
int year; /* Курсы */
} student_l, student_2, student_3;
Мұнда student атты құрылымдық тип және student_l,  student_2,  student_3  үш
ныұты құрылым сипатталған. Осы үш  құрылымның  әрқайсысына  студенттің  атын
(name),  фамилиясын (surname),студенттің  оқитын  курсын(year)  жарииялайтын
құрылым кіреді.
Келтірілген сипаттамадан кейін сол  программада  кез  келген  құрылым  санын
сипаттауға  болады,  ол  үшін  келесі  student  құрылымдық  типін  қолдануға
болады:
                  struct    student    laader,   freshman ,

Құрылымды  инициализациялау  және  меншіктеу.   Құрылымды   инициализациялау
массивтерді  инициялазациялауға  ұқсас.  Нақты  құрылымды  сипаттауда   оның
атынан  және  '='  белгісінен  кейін  фигуралы  жақшаның   ішінде   бастапқы
элементтердің тізімі жазылады. Мысалы:
struct goods  coat={"қара пиджак ", 400000, 7.5, 220, "12.01.97"};

Си тілінің стандарты  құрылымды  меншіктеуге  рұқсат  береді.  struct  goods
(tea,  coat)  құрылымдық  типтегі  жоғарыда  көрсетілген   құрылымға  келесі
меншіктеуге рұқсат етілген:
                                  tea=coat;
Құрылымдар үшін теңсіздік  операциялары,  тіпті,  теңдік  те  қолданылмайды.
Егер құрылымды салыстыру керек болса, тек қана  элементтері арқылы ғана.
Құрылым элементеріне рұқсат алу.  Құрылым  элементтеріне  рұқсат  алу  нақты
атау бойынша  қамтамасыз луға болады.
                           құрылым_аты.элемент_аты
конструкциясы құрылымдық тип сипаттамасын ойнайды.
Біздің struct goods құрылымдық типін инициализациялау мысалымызда:
coat.name - char[]  типті массиві "қара пиджак ";
coat.price  - long  типті мәні 400000 айнымалы;
coat.percent - float типті мәні 7.5айнымалы;
coat.vol - int типті мәні 220 айнымалы;
coat.date -"12.01.97"  тұратын char [9] типті массиві.
Нүктенің  алдында   құрылымдық  типтің  аты  емес,  оның  сипатталуына   жды
бөлінген нақты құрылымның аты тұрғанына назар аударыңыз.
Нақыланған ат – бұл  екі  операндамен  және  олардың  арасындағы  "нүктеден"
тұратын өрнек. "Нүкте"  оперциясы құрылым элементіне рұқсат  алу  операциясы
деп талады.
Егер  құрылымды  сипаттауда   ол   инициализцияланған   болса,   онда   оның
элементтері сәйкес бастапқы мәндерін алады. Нақталанған аттың көмегімен  бұл
мәндер , мысалы, экранға шығады.
Құрылым  элементінің  нақтылы  аты  сәйкес   типтегі   обьектілердің   брлық
ережелерінен тұрады. Оларды өрнектерде қолдануға  болады,  олардың  мәндерін
пернетқтадан енгізуге болады.
Құрылымдар массиві. Құрылымдық типтің  массивтері  басқа  типтегі  массивтер
сияяқты сипатталады. Анық айырмашылығы – құрылымдық  тип  атауындағы  struct
қызметші  сөзінде.   Жоғарыда   енгізілген   құрылымдық   типтерді   анықтау
келесідей:
                           struct goods  list [5];
Бұл сөйлем list-ті goods құрылымдық типтегі,  5  элементтен  тұратын  массив
ретінде анықтайды. List аты құрылымның аты болып табылмайды, ол  элементтері
құрылым болатын массив аты. list[0] -  goods  типінің  құрылымы,  list[1]  -
list[ ]  массивінің goods типті екінші құрылымы жіне т.б.
Құрылым массиві құрамына кіретін құрылым  компонентеріне  рұқсат  алу  үшін,
бірінші аты индекстелген нақтыланған атау қолданылады . Мысалы:
list[0].price - list[ ] құрылым массивіне бірінші  элемент  ретінде  (нөлдік
индекспен) кіретін, goods  типті құрылымның  long  типті  екінші  компоненті
(price атты).
1   суретте  list[  ]  массивін  шартты  түрде  жадыға  орналастыу   сызбасы
берілген. Оның элементтері (басқа массив элементтері сияқты)  негізгі  жадта
индексінің өсуі бойынша ретпен орналасады.











              Рис. 1. Құрылым массиві (100 элементтен құралған)

Массивке  сәйкес  құрылым  компонентеріне  рұқст  алудағы  нақтылы   атаудың
индекстелуіне  тағы  бір  назар  аударыңызда.  Индекс   құрылым   массивінің
атауынан кейін жазылады. Сөйтіп, массивтен  қажетті  құрылым   бөлінеді,  ал
нүкте  мен  онан  кейінгі  атау  көмегімен  құрылымның   сәйкес   компоненті
идентифицирленеді. Мысалы,
list.percent[8]        /*  Қате  !     */ -жазылымы  қате  атау;  percent  –
массив емес, float типті айнымалы.
Құрылым массивін сипаттау:
                           struct goods list [5];

Баса   типтегі   массивтер   сияқты,   құрылымдық    массив    сипатталуында
инициализациялана алады. Құрылымдық  массив инициализаторы  фигуралық  жақша
ішіндегі массивтің  бастапқы  элементтерінің  тізімінен  тұруы  мүмкін.   Өз
кезегінде,  құрылым  үшін  әр  бастапқы  мән  –  бұл   оның   комонентерінің
мәндерінің тізімі(фигуралы жақша ішінде).

Мысал
Төменде кестеде көрсетілген берілгендерді сипаттау
|Фамилия      |Туған жылы     |Телефоны        |Үй адресі             |
|Иванов       |1980           |33-22-11        |ул. Чехова, 1         |
|Петров       |1981           |44-55-66        |пр. Шакарима, 126     |
|Сидоров      |1980           |34-22-11        |ул. Ленина, 50        |

struct stroka
{
char f[20];
int g;
char tel[8];
char adres[40];
};

struct stroka tab[3];

Осындай берілгендерді сипаттаудан кейін, tab массивінің  элементтері  жоғары
кестеде берілген бүтін жол екенін түсіну керек, яғни:
|tab[0] – бұл |Иванов       |1980           |33-22-11        |ул. Чехова, 1         |
|tab[1] – бұл |Петров       |1981           |44-55-66        |пр. Шакарима, 126     |
|tab[2] – бұл |Сидоров      |1980           |34-22-11        |ул. Ленина, 50        |


Өзін-өзі тексеру сұрақтары
1. Берілгендердің құрылымдық типі қайда қолданылуы мүмкін?
2. Құрылымды қалай анықтауға болады?
3. Құрылымның жазу типі мен құрылымдық айнымалы арасындағы айырмашылық?
4. Құрылым элментіне қалай рұқсат алуға болады?
5. Құрылым бір типтегі элементтерден тұруы мүмкін бе?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984



13 апта

Тақырып 13. Файлдар
Дәріс жоспары
1. Файл ұғымы.
2. Өңдеу үшін қолданылатын берілгендер файлының басымдылығы.
3. Файлға нұсқаушы.
4. Файлды ашу жабу.
5. Енгізу және шығару функциялары.
6. Файлдарды жаңа берілгендермен толықтыру.
7. Файлдардың екілік және мәтіндік форматы.

Дәрістің қысқаша жоспары
                                   Файлдар
Файл – белгілі бір атпен дискіде сақталатын ақпарат.
Кез келген файлдың үш ерекшелігі болады:
1. Файлдың атауы болады .
2. Файлдың комонеттері бір типті болды.
3. Файлдардың ұзындығы  деп  аталатын  файлдағы  элементтер  фиксирленбеген.
   Файлдың массивтен негізгі еекшелігі сонда.Бір де бір  элементі  жоқ  файл
   бос деп аталады. Оның ұзындығы нөлге тең.


Берілгендер файлын программ үшін қолдану өте ыңғайлы,  себебі:
1. Берілгендер файлы алдын ала дайындалған болады және бірнеше рет  қолдныла
   алады.
2. Берілгендер фйлы кез келген басқа программада қолдныла алады.
3.  Берілгендер  файлын   қолданылатын   программалар   орындалу   барысында
   қолданушыны қажет етпейді.

                             Енгізу және шығару
Си тілінің стандатында  енгізу  шығару  ортасы  жоқ.  Барлық  енгізу  шығару
операциялары   Си   нақты   программалу   жүйесіндегі    ,     Си    тілінің
библеотекасында орналасқан функциялардың көмегімен шығарылады. UNIX  жүйесін
құруда  қолданылған  и  тілінің  ерекшелігі  алдын  ла   жоспарланған   файл
құрылымдарының жоқ болуы. Барлық файлдар байттардың құрылымсыз  тізбектілігі
ретінде қарастырылады.  Бұндай  жағдайда,  фйлдарды  ұйымдастыру  үшін  файл
ұғымы мен  түрлі  құрылғылар   ұғымы  қолданылады.  UNIX  нақты  құрылғысына
арнайы файл деп аталатын  құрылғы сәйкес келеді.
Си тілінің кітапханасы енгізу және шығарудың үш дәрежесі бар:
 • Ағымдық енгізу шығару,
 • Төменгі дәрежелі,
 •     консолдар мен  порттарға арналған енгізу шығару.
Ағымдық енгізу шығару  дәрежесінде  ақпарат  алмасу  байттік  түрде.  Бұндай
енгізу –шығару байттік алмасу құрылғыларымен қатар(баспа  құралы,  дисплей),
ішкі жад  құралы  қабықшалық  алмасу  құралы  болып  табылса  да,  дискідегі
файлдарда да мүмкін, яғни, құрылғығы бір  рет  рұқсат  алғанда  фиксирленген
берілгендер позициясын оқу немесе жазу орындалады.  Көбінесе,  ішкі  жадымен
алмасушы берілгендердің минималды позициясы 512 байттан немесе 1024  байттан
тұратын блоктар болып табылады. Дискіден  енгізген  (файлдан  оқыған)  кезде
берілгендер операциялық жүйенің  буферіне  орналасады,  одан  кейін  байттік
немесе  анықталған   порциялармен   қолданушының   программасына   беріледі.
Берілгендерді файлға шығару  кезінде  олар  буферде  жиналады,  буфер  толып
кетсе, бір блок ретінде соңғыға рұқсат алған дискіге  жазылады.  Операциялық
жүйенің буфері негізгі  жадының  аумаы  ретінде   жүзеге  асады.  Сондықтан,
буферлер мен программалар арасындағы енгізу – шығару  сілтемелері  физикалық
құрылғыларға қааанда жылдам жүреді.
Лекпен жұмыс істегенде келесі әрекеттерді жүзеге асыруға болады:
 • лектерді ашу  және  жабу  (нұсқаушыларды  нақты  файлдары  бар  лектермен
   байланыстыру);
 •  жолдарды,  символды,  форматталған   берілгендерді,   туынды   ұзындықты
   берілгендер порциясын енгізіп шығаруға болады;
 • лекті енгізу – шығарудың  қателерін  және  лектің  соңына  жету  (файлдың
   соңына) шарттарын талдау;
 • лектің буфферленуін және буфердің өлшемін басқару;
 • нұсқаушыны (индекаторды) лектегі ағымдағы позицияға орналастыру және алу.
Си тілінің библеотекасының  енгізу  –  шығару  функцияларын   қолдану  үшін,
енгізу – шығару функцияларының прототипінен,  сонымен  қатар   тұрақтыларды,
типтерді   және   құрылымдарды,   лекпен   алмасуға   қажетті   функцияларды
сипаттаудан тұратын  stdio.h (#include  )  тақырыптық  файлын  іске
қосу керек.
                             Лекті ашу және жабу
Лекпен жұмыс жасауды бастамас бұрын, оны инициялизациялау  керек,  яғни  ашу
керек. Сонда лек орындалатын программада FILE  типті  алдын  ала  анықталған
құрылыммен  байланысады.  FILE   құрылымдық   типінің   сипатталуы   stdio.h
тақырыптық  файлында  орналасқан.  FILE   құрылымында  лекпен  жұмыс  жасуға
арналған компонентер орналасқан, дербес жағдайда, буферге нұсқаушы,  лектегі
ағымдағы позициядағы нұсқаушы(индикатор) және басқа ақпарат.
Лекті ашқанда  программада  FILE   құрылымдық  типті  обьектіне   нұсқаушысы
болып табылатын,  лекке нұсқаушы қайтып оралады.Бұл  нұсқаушы  лекті  қалған
басқа операцияларда идентификациялайды.
Лекке нұсқаушы , меысалы, fp, программада келесі түрде жариялануы керек:

#include 
FILE   *fp;

Лекке нұсқаушы лекті ашу функциясының орындалуы нәтижесінде:

fp = fopen (файл _аты,ашылу-  режим);

файл _аты және ашылу-  режим параметрлері лекпен  байланысты  және  режимдер
жолымен байланысты  файл атынан тұратын символдар массивіне  нұсқаушы  болып
табылды. Бірақ, бұл параметрлер фацлды ашу функциясын шақыранда жол  түрінде
және  берілуі мүмкін:
fp = fopen("t.txt", "r") ;
мұндағы  t. txt – лекпен байланысты  қандай да бір файл аты;
r – файлмен жұмыс режимдерінің бір белгіленуі (лекке рұқсат алу типі).

Лекпен байланысты, стандартты файлды келесі  алты режимнің  біреуімен  ашуға
болады:
"w" – жаңа мәтіндік файлы жазу үшін ашылады. Егер  файл  бар  болған  болса,
онда алдынғы мазмұны тазаланып, жаңадан қайта құрылады;
"r" – бар мәтіндік файл оқу үшін ғана ашылады;
"а" – мәтіндік файл  оған жаңа  ақпарат  қосу  үшін  (файл  соңына)  ашылады
(немесе егер файл жоқ болса,  құрылады) . V режиміне қарағанда   "а"  режимі
бар файлдарды олардың алдындағы  версияларын  жоймай  ашады  және  оған  ары
қарай жазуға болады;
"w+" – жаңа мәтіндік файл жазу үшін және ары қарай бірнеше рет қолдану  үшін
ашылады.Егер файл бар болса, онда оның мазмұны тазарады.  Файлдардың  келесі
ашылуы жазу мен одан оқу файлдың кез келген жерінде рұқсат етілген,  сонымен
қатар файлдың соңына да жазу қосуға болады, яғни, файл көлемі  үлкейе  алады
(көбейе);
"r+" – бар мәтіндік файл оқу үшін де  жіне файлдың кез  келген  жеріне  жазу
үшін де ашылады. Бірақ, бұл режимде файлдың соңына жазу мүмкін  емес,  яғни,
файл өлшемін кеңейту мүмкін емес.;
"а+" – мәтіндік файл өзгертуге болатындай  ашылады немесе құрылады (егер ол
жоқ болса) яғни, кенз келген жерден оқу мен жазу мүмкін болатындай; Сонымен
қатар "w+"  режиміне қарағанда бар файлды оның мазмұнын жоймай ашу мүмкін;
"г+"  режиміне қарағанда  "а+" режимінде файл соңына жазу енгізуге болады,
яғни, оның көлемін өзгертуге болады.
Лекті мәтіндік немесе екілік(бинарлық) режимде ашуға болады.
Мәтіндік режимде лектен оқылған символдар комбинациясы CR (13 мәні ) және
LF (10 мәні) , яғни, " каретканы қайтару" және "жолды тасымалдау" басқарушы
кодтары  жаңа жолдың бір символына '\n' (LF) , CR және LF кезектілігін
ауыстыру арқылы түрленеді.
Егер лекпен байланысты файл  мәтіндік емес, өзіндік екілік ақпараттан
тұрса, онда көрсетілген түрлендірулер керек емес және зиянды болуы да
мүмкін. Бұндай түрлендірусіз алмасу b  әрпімен белгіленетін, екілік немесе
бинарлық режимде орындалады. Мысалы,  "r+b" немесе "wb".  Кейбір
компиляторларда мәтіндік файл t әрпімен белгіленеді, яғни, "a+t" немесе
"rt" түрінде жазылады.
Егер лек өзгерту үшін шылған болса, яғни, режим параметрінде "+", символы
бар болса, онда лекке шығарумен қатар одан оқу да мүмкін. Бірақ, режимді
ауыстыру (оқудан жазуға өту немесе керісінше) лек нұсқаушысын керекті
позицияға орналасырғаннан кейін ғана орындалуы керек.
Лекті ашуда келесідей қателер пайда болуы мүмкін: лекпен байланысқан
нұсқалған файл табылған жоқ (оқу режимі үшін); диск бос емес немесе дискіге
жазуға рұқсат жоқ және т.б.  fopen()  функциясының орындалуы кезінде
динамикалық жадының бөлінуі орындалатынын ескерте кету керек. Ол жоқ болған
жағдайда "Not enough memory"  (жадыда орын жоқ) қате белгісі шығады.
Аталған жағдайларда, лекке нұсқаушы NULL мәніне ие болады.
Лекпен байланысқан файлдарды ашуда қолданылатын операторлар кезектілігіне
мысал келтірейік:
if ((fp=fopen("t.txt", "w"))==NULL)
{
perror("файлды ашуда кеткен өателік t.txt \n");
exit(0);
}
Мұндағы NULL - stdio.h файлында анықталған нөлдік нұсқаушы.

Лекті  ашқандағы  қате  туралы  хабарламаны  экан  дисплейіне  шығару   үшін
реггог()  библеотеекалық   функциясы   қолданылады,   оның   stdio.h   –тағы
пототипінің түрі келесідей:
void perror (const char * s);
perror() функциясы s нұсқаушысымен  адрестелген  символдар  жолын  шығарады,
одан кейін:  қос  нүкте,  пробел  және  қате  туралы  хабарлама  орналасады.
Қатенің  мазмұны  мен  форматы    программалау   жүйесінің   жүзеге   асуымн
анықталады.  Қате  туралы  хабарламаның  мәтіні  қате  нөміріне   байланысты
реггог()  фуекциясымен таңдалады. Қате  нөмірі  Си  тілінің  библеотекасының
жанындағы, сонымен  қатар  енгізу  –  шығару  функциялары  жанындағы     int
errno(int errno тақырыптық файлында анықталған  )  айнымалысына  енгізіледі.
Файл ашылғаннан кейін, оған ақпарат жазу арқылы намесе оқу  арқылы  (режимге
байланысты) онымен жұмыс істеуге болады.
Фйлдармен жұмыс істеп болған соң дискіде ашылған  файлдарды  міндетті  түрде
жабу керек. Ол үшін мына библеотекалық функция қолданылады
                        int fclose (лекке_нұсқаушы);
Ашылған файлды оны  fclose(  )  функциясы  көмегімен  жапқаннан  кейін  ғана
қайта ашуға болады (мысалы онымен жұмыс істеу режимін өзгертіу үшін).

                         Дискідегі файлдармен жұмыс
Дискідегі фйлдармен  жұмыс  істеу  үшін  Си  тілінің  библеотекасына  келесі
функциялар қосылған:
fgetc(), getc() – енгізу (файлдан бір символды оқу;
fputc(), putc() – файлға бір символды жазу;
fprintf() – файлға форматталған шығару;
fscanf() – файлдан фоматталған шығару (оқу);
fgets() – файл жолын енгізу (оқу);
fputs() – жолды файлға жазу.

               Файлдарды алмастырудың екілік (бинарный) режимі
Екілік алмасу getc()  және   putc()функцияларының  көмегімен  жүзеге  асады.
Олардың форматтары:

c=getc(fp);
putc(c,fp);

мұндағы fp – ағымға нұсқаушы; c – келесі  символды  файлдан   қабылдап  оның
мәнін файлға жазуға арналған int типті айнымалы.
Функциялардың прототипі:
int getc(FILE *stream);
int putc(int c, FILE *stream);

                          Файлдармен жолдық алмасу

Мәтіндік  файлдармен  жұмыс  істегенде  fgets()  және  fputs()  функцияларын
қолдану тиімді

fgets(s, n, f);
s –жол, f – лекке нұсқаушы.
fgets() функциясы  нұсқаушы анықтаған f файлынан (n-1)  символдан  кем  емес
симводы жазады және оны s жолына  жазады.  (n-1)  символды  оқығаннан  кейін
немесе жаңа жллға көшіретін  '\n'  символын  кездестіргеннен  кейін  функция
жұмысын тоқтатады . Қосымша әр жолдың соңында жолдың  аяқталу  белгісі  '\0'
жазылады.Нәтижелі аяқталу жағдайында функция s жолын қайтарады. Қате  болған
немесе файл соңына жеткенде, бір де бір символ оқылмаса функция  NULL  мәнін
қайтарады.Бұндай жағдайда жолдың мәні өзгерусіз болып қалады.

fputs(s, f);
s – строка, f – указатель на поток.
fputs()  функциясы  '\0'  символымен   шектелген   жолды    лекке   нұсқаушы
анықтаған f файлына  жазады және оң бүтінді қайтарады.
Қате    жағдайында   fputs()   функциясы   EOF   қайтарады.   '\0'   символы
тасымалданбайды және '\n' символы '\0' символының орнына жазылмайды.


                    Файлдармен форматты алмасудың режимі
Кейбір жағдайлрда  ақпаратты  файлға  жазуда  монитор  экранында  бейнелеуге
жарамды  етіп   жазу  ыңғайлы.Бұндай  жағдайда,  fpritf(),  fscanf()  файлға
форматты енгізу (шығару) функциясының прототипін қолданады:
int fprintf(лекке_нұсқаушы, форматты_жол,айнымалылар _тізімі);
int fscanf(лекке_нұсқаушы, форматты_жол,айнымалылар_адресінің_тізімі);

                              Лектегі позциялау
Си тілінің библеотекасында ағымдағы  позициядағы  нұсқаушыны  лектегі  қажет
байтқа  нұсқайтын fseek() функциясы іске  қосылған.  Ол  келесі  прототиптен
тұрады:
int fseek(лекке_нұсқаушы,бірігу, есеп берудің_басу);
Өзін-өзі тексеру сұрақтары
1. Файл деген не?
2. Өңдеу үшін берілгендер  файлдарын қолданудың қандай маңызы бар?
3. Программада файлға нұсқаушы не үшін қолданылады?
4. Файлдарды ашу мен жабу қалай орындалады?
5. Файлдармен жұмыс істеу үшін   енгізу  мен  шығарудың  қандай  функциялары
   бар?
6. Файлдарды жаңа фйлдармен қала толтыруға болады?
7. Файлдардың мәтіндік және екілік форматы.

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984

14 тақырып. Модулдер

Дәріс жоспары
1. Файлдан мәтіннің қосылуы. #include директивасы.
2. Стандартты модулдер.
3. Программалау кезінде кітапхана функциясын қолдану.
4. Дәрістің қысқаша конспектісі
                        Файлдардағы мәтіндерді  қосу
Файлдан мәтінді қосылу үшін #include директивасы қолданылады.   Оны  жазудың
үш түрі бар. Олар:
#include <имя_файла>
#include "имя_файла'
#include имя_макроса

Егер  файлдың  аты  үшбұрышты  жақшада  болса,  онда   препроцессор   файлды
стандартты жүйелік каталогтан іздейді.  Егер  файлдың  аты  жақшаға  алынған
болса,   онда   препроцессор   бірінші   қолданушының   ағымдағы   каталогын
қарастырады содан кейін барып стандартты жүйелік каталогқа хабарласады.
Выполняя у #include  директивтивасын орындау  кезінде  препроцессор
программаға енгізу-шығару кітапханасымен байланыс  құралын  қосады.  stdio.h
файлын іздеу стандартты жүйелік каталогтарда орындалады.
Келісілген келісім бойынша Һ библеотекалық функциялардың  прототипі  болатын
функцияларға , содай-ақ библеотека  компиляторларымен  жұмыста  қолданылатын
типтер мен тұрақтыларды сипаттауларда жазылады.
Бұл файлдарды тақырыптық деп  атайды.  Программаның  тақырыбына  кез  келген
файлдар кіруі мүмкін (стандартты немесе арнайы дайындалған).
Компильятор кітапханасымен  жұмыс  істеуге  арналған  тақырыптық  файлдардың
сипатталуының жиынтығы стандартты тілмен бекітілген:
|assert.h |программа диагностикасы                            |
|ctype.h  |Символдарды түрлендіру және тексеру                |
|errno.h  |Қателерді тексеру                                  |
|float.h  |Нақты берілгендермен жұмыс                         |
|limits.h |Бүтін санды берілгендердің соңғы мәні              |
|locate.h |Ұлттық ортаны  қолдау                              |
|math.h   |Математикалық есептеулер                           |
|setjump.h|Локальді емес ауысулардың мүмкіндіктері            |
|signal.h |Дербес оқиғаларды өңдеу                            |
|stdarg.h |Параметрлар саны айнымалысын қолдау                |
|stddef.h |Қосымша анықтамалар                                |
|stdio.h  |Кіріс-шығыс ортасы                                 |
|stlib.h  |Жалпы пайдаоану функциялары (жадымен жұмыс)        |
|string.h |Символдар жолымен жұмыс                            |
|time.h   |Күн мен уақытты анықтау                            |

Әрбір ОЖ-де  сәйкес  тақырыптық  файлды  енгізу  байланысы  үшін  графикалық
функция кітапханасы бар. #include <…> директивасын  программада  қолданғанда
ол  программаға  сәйкес  стандарттыы  кітапхананы  қоспайтынын  есте  сақтау
қажет.

Препроцессорлық өңдеу программаның  негізгі  мәтіні  деңгейінде  орындалады.
#include директивасы тек қана программаның мәтініне  көрсетілген  тақырыптық
файлдан жазуды қоюға мүмкіндік береді. Программаға  кітапханалық  функциялар
кодын  қосу  тек  байланысты  редактрлеу  этабында  іске   асырылады,   яғни
программаның машиналық коды алынғанда , компиляциядан кейін.
Қосылған  тақырыптық  файлдың  іс-әрекеті  программаның  мәтініне   тек  бір
модуль аралығында ғана,  #include  директивасы  орналасқан  жерден  мәтіндік
файлдың соңына дейін  таралады (және программадағы барлық мәтіндерде).
Стандартты емес тақырыптық файлдар  үлкен  көлемдегі  программаны  модульдік
өңдегенде тиімді болып табылады. Әр  түрлі  файлдарда  орналасқан  модульдер
арасындағы байланыс параметрлер көмегімен  ғана  іске  асырылмайды,  сонымен
қатар бірнеше немесе барлық модульдерде  глобальді  ішкі  обьектілер  арқылы
жүзеге асады.
Сондай ішкі объектілер(айнымалылар, массивтер  және  т.б)  сипаттамасы  және
функция  прототиптері  бір  файлда  орналасады,  олар  #include  дерективасы
көмегімен ішкі объектілер қажет жерлерде барлық модульдерге  қосылады.  Егер
пограммада бірнеше функциялар қолданылса, онда олардың  әрбіреуінің  мәтінін
жеке файлда сақтаған ыңғайлы. Программады бір  модуль  түрінде  дайындағанда
программист #include "…" командасының көмегімен  оған  барлық  функциялардың
мәтіндерін қосады.


                           Файлдар модуль ретінде
.h файлы программаның басқа бөліктері қолданатын интерфейс  болып  табылады;
.c файлы жүзеге асыруды білдіреді. Мұндай  обьектілерді  көбіне  модуль  деп
атайды. Қолданушыға қажетті атауларға ғана рұқсат болады, ал қалған  атаулар
жасырынған.  Бұл  қасиетті   көбіне   берілгендерді   жасыру   деп   атайды.
Модульдердің мұндай түрі жұмсақ болады.  Мысалы,  жүзеге  асыру  бір  немесе
бірнеше .c файлдардан тұруы мүмкін және .h файл  түрінде  бірнеше  интерфейс
ұсынылуы  мүмкін.  Қолданушыға  қажет  емес  ақпараттар   жасырынған.   Егер
қолданушы .c файлында не жасырынғанын білмеу  керек  болса,  оларға  рұқасат
бермеу  керек.   Оларға  компилятордың  эквивалентті  шығатын  файлдары   да
жеткілікті.
Кейде келесілерден тұратын  қиындықтар  туады,  мұндай  жұмсақтық  формалдық
құрылымсыз жүзеге асырылады. Тілдің өзі объект сияқты модульдерді  танымайды
және компиляторда басқа (экспортталатын) модулдар қолдануы  қажет  атауларды
анықтайтын  .h  файлдарын,  басқа  (импортталатын)  модульдерден   атауларды
сипаттайтын .h файлдарынан ажырата алатын мүмкіндігі жоқ.
Басқа жағдайларда сол мәселе туындауы мүмкін, яғни модуль  жаңа  типті  емес
объектілер жиынын анықтайды. Мысалы, table модульі  бір  кестені  анықтайды,
ал егер сізге екі кесте керек болса,  онда  модуль  анықтамасының  көмегімен
екінші кестені берудің қарапайым тәсілі жоқ.
Әр    статистикалық    үнсіздік    бойынша    енгізілген    объект    нолмен
инициализирленеді, программист басқа (константты)  мәндер  бере  алады.  Бұл
инициализацияның тек өте примитивті түрі. Модуль қандай да түрде  қолданылар
алдында кластар көмегімен инициализация үшін орындалатын код құруға  болады,
және/немесе  коды,  соңғы   қолданылған   модульден   кейін   тазарту   үшін
қолданылады.

                              Кітапхананы құру
"кітапханаға орналасқан" және "кез келген бір кітапханада  ізделініп  жатыр"
типті фразалар жиі қолданылады, бірақ мұның C++ программасында мәні  қандай?
Өкінішке  орай  бұл  сұраққа  жауап  қандай  операциялық   жүйе   қолданылып
отырғанына тәуелді; бұл тарауда UNIX операциялық жүйесінің  8-ші  нұсқасында
кітапхананы  құруды  қарастырамыз.  Басқа  операциялық   жүйелер   аналогтық
мүмкіндіктерін қарастырады. Кітапхана өзінің  негізінде  сәйкес  .c  файлдар
жиынының компиляциялау нәтижесінде алынған .o файлдар жиыны болып  табылады.
 Әдетте, .o файлдарды қалай пайдалану керектігі туралы  мағлұматы  бар   бір
немесе  бірнеше  .h  файлдар  болады.   Мысал   ретінде,   келесі   жағдайды
қарастырайық, кейбір анықталмаған қолданушылар жиынына  бізге  математикалық
функциялар тобын беру керек болсын. Тақырыптық файл келесідей :
extern double sqrt(double);        // жиынүсті
extern double sin(double);
extern double cos(double);
extern double exp(double);
extern double log(double);

бұл функциялардың анықтамалары сәйкес  файлдарда  сақталған  sqrt.c,  sin.c,
cos.c, exp.c и log.c.
math.h атты кітапхананы құруға болады, мысалы:
$ CC -c sqrt.c sin.c cos.c exp.c log.c
$ ar cr math.a sqrt.o sin.o cos.o exp.o log.o
$ ranlib math.a

Бірінші  шығатын  файлдар   өздеріне   эквивалентті   обьектілік   файлдарға
компиляцияланады. Содан кейін math.a. атты  архив  құру  үшін  ar  командасы
қолданылады. Аяғында архив  рұқсатты жылдамдату үшін индекстеледі.

Енді  .o  файлына  қарағанда  math.a  файлының  артықшылығы  қандай   екенін
қарастырамыз, мысалы:
$ CC myprog.c sqrt.o sin.o cos.o exp.o log.o

Көптеген программалар үшін .o файлдарының дұрыс  тобын  анықтау  оңай  емес.
Жоғарыда  келтірілген  мысалда  олардың   барлығы   қосылған,   бірақ   егер
функциялар myprog.c –да тек қана sqrt()  және  cos()  функцияларын  шақырса,
онда бұл жеткіліксіз болады.
 $ CC myprog.c sqrt.o cos.o

Бірақ бұл олай емес, cos.c  sin.c-ны қолданғандықтан.
.a файлын өңдеу үшін СС командасымен  шақырылған  компоновщик  .a  файлдарды
құру үшін қолданылған жиындағы сияқты  тек  қажетті  .o  файлдарды  архивтан
шығаруды біледі.  Басқа сөзбен айтқанда,   кітапхананы  қолдана  отырып  бір
аттың (имени) көмегімен көптеген анықтамаларды қосуға болады, және,  сонымен
қатар,  нәтижесінде  программаға  анықтамалардың  минималды   санын   қосуды
қамтамасыз етеді.
Өзін-өзі тексеруге арналған сұрақтар
1. Модуль деген не?
2. Қандай стандартты модулдер бар және олар неге арналған?
8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984



15 апта


Тақырып 15. Графика

Дәріс жоспары
1. Экранмен жұмыс істеуге арналған графикалық режимдер.
2. Графикалық обьектілерді сызу.

Дәрістің қысқаша конспектісі
                              Графикамен жұмыс
1. Адаптер, адаптер типтері, драйверлер және режимдер түсінігі
 Графикалық режимдегі кез келген бейне монитор экранында пикселдер  жиынынан
тұрады. Графикалық режимде  монитордың  жұмыс  істеу  мүмкіндігі  графикалық
адаптер  деп  аталатын  арнайы  электрондық  сызбамен  қамтамасыз   етіледі.
Адаптерлердің негізгі типтері: CGA, EGA, VGA  SVGA.   Графикалық  адаптердің
жұмысын драйвер деп аталатын арнайы программа  іске асырады. Драйверлер  BGI
кеңейтіліміндегі файлдарда сақталады. Қолданылып отырған  драйвер  әр  түрлі
режимдерде қызмет ете алады.

                                Видеорежимдер
|адаптер типі          |Режим         |Түстің саны|Рұқсат    |драйвер файлы|
|                      |              |           |етілген   |             |
|Константа  |Константа |              |           |          |             |
|аты        |мәні      |              |           |          |             |
|CGA        |1         |CGAC0         |4          |320x200   |CGA.BGI      |
|           |          |CGAHi         |2          |640x200   |             |
|EGA        |3         |EGALo         |16         |640x200   |EGAVGA.BGI   |
|           |          |EGAHi         |16         |640x350   |             |
|VGA        |9         |VGALo         |16         |640x200   |EGAVGA.BGI   |
|           |          |VGAHi         |16         |640x350   |             |

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

2. Инициализация  және графикалық режимнен шығу
Мүмкін графикалық режимдердің біреуін орнататын  функция.
initgraph(&d,&m,p);

мұндағы d –драйверді береді, m –режимді береді, p –  драйвер  файлына  жолды
береді, яғни BGI  кеңейтіліміндегі  сәйкес  файлға  (Ескерту:  Егер  драйвер
файлы ағымдағы каталогта болса, онда жол ретінде келесіні береді "").

Мысал:

initgraph(9,VGALo,"c:\");

Бұл функция 16 әр түрлі  түстерді  көрсету  мүмкіндігімен  640х200  пикселді
рұқсатымен режимді орнатады.

Ескерту: Сонымен қатар, Detect  стандартты   константасы  бар.  Оны  драйвер
түрінде  көрсеткенде   автоматты  түрде  қажетті  драйверді  және  мониторға
сәйкес келетін режимді орнатады.

Мысал:
Графикалық режимді инициализациялау

int d,m;

d=DETECT;
initgraph(&d,&m,"");
Графикалық режимнен шығу үшін closegraph функциясы қолданылады;

3. Координат жүйесі
Бейнені экранда бейнелеу үшін координат жүйесі қолданылады.












Графикалық режимде көрініп тұратын курсор жоқ,  бірақ  көрінбейтін  ағымдағы
нұсқағыш бар. Ағымдағы нұсқағыштың орынын ауыстыру үшін келесі  функцияларды
қолдануға болады:

moveto(x,y); - ағымдағы нұсқағышты (x,y)координатындағы нүктеге әкеледі
 moverel(x,y); - ағымдағы нұсқағышты горизонтал бойынша х нүктеге,  вертикал
бойынша  у нүктеге әкеледі.

Орнатылған режимге рұқсаты бар вертикал және горизонтал бойынша  нүктелердің
максималды санын анықтау үшін келесі функцияларды қолдануға болады:

getmaxx() – Орнатылған режим үшін х-тің  максималды мүмкін мәнін анықтайды.
  getmaxy()  -  Орнатылған  режим  үшін  у-тің   максималды   мүмкін   мәнін
анықтайды.

4. Негізгі фигураларды құру
1. putpixel(x,y,c);
 (x,y) координаттарымен нүкте салу, c түсті білдіреді.

2. Сызық салу
line(x1,y1,x2,y2);
 (x1,y1)нүктесінен  (x2,y2) нүктесіне дейін сызық сызады.

lineto(x,y);
ағымдағы көрсеткіштен (x,y)нүктесіне дейін сызық сызады.

Сызықтың түсі келесі функциямен беріледі
setcolor(c);

Сызықтың стилі келесі функциямен беріледі
setlinestyle(l,p,t);

l тұрған жерге сызықтың стилін береді;

                          Сызық стилдерінің кестесі
|Константа аты            |Константа мәні           |Жазылуы                  |
|SolidLn                  |0                        |                         |
|DottedLn                 |1                        |                         |
|CrnterLn                 |2                        |                         |
|DashedLn                 |3                        |                         |
|UserBitLn                |4                        |Қолданушы типі           |

t сызықтың қалыңдығын көрсетеді;

                        сызықтың қалыңдығының кестесі
|Константа аты            |Константа мәні    |Жазылуы                        |
|NormWidth                |1                 |орташа(1 пиксель)              |
|ThickWidth               |3                 |қалың (3 пикселя)              |

P үлгіні береді

Егер қолданушы стандартты стиль қолданылса, онда р-ның мәні 0-ге тең.
Егер қолданушы өз стильін қолданса, онда р-ның мәні 4-ке тең.

3. Төртбұрыш салу

rectangle(x1,y1,x2,y2);
Боялмаған тіктөртбұрыш салу, мұндағы





Төртбұрыштың  сызығын  бояу  үшін   setcolor   функциясын   қолданамыз,   ал
қалыңдығы мен стилін өзгерту үшін  setlinestyle функциясын қолданамыз.

bar(x1,y1,x2,y2);
Боялған тіктөртбұрыш салу
Бояғанда келесі функциямен өрнектелетін шаблон және түс қолданылады:
setfillstyle(n,c);

мұндағы, n- толтыру стилі,  c – түсі.

                            толтыру стилі кестесі
|Константа аты            |Константа мәні           |жазылуы                  |
|EmptyFill                |0                        |Фон түсімен боялады      |
|SolidFill                |1                        |Ағымдағы түспен боялады  |
|LineFill                 |2                        |                         |
|LtslashFill              |3                        |                         |
|SlashFill                |4                        |                         |
|BkslashFill              |5                        |                         |
|LtbkslashFill            |6                        |                         |
|HatchFill                |7                        |                         |
|XhatchFill               |8                        |                         |
|InterLeaveFill           |9                        |                         |
|WideDotFill              |10                       |                         |
|CloseDotFill             |11                       |                         |
|UserFill                 |12                       |Қолданушының анықтауы    |
|                         |                         |бойынша толтырылады      |

4. Параллелепипед салу

bar3d(x1,y1,x2,y2,d,t);

мұндағы,
d    үш   өлшемді   контурдың   тереңдігін   береді,   t   тік   төртбұрышты
параллелепипедке төбені қосу(t=1)  керек пе, жоқ (t=0) па соны анықтайды.












Сызықтың түсі setcolor функциясымен анықталады. Сызықтың стилі  setlinestyle
функциясымен анықталады. Бояудың стилі мен  түсі  setfillstyle  функциясымен
анықталады.

5. Дөңгелек,дога,, эллипс салу

circle(x,y,r);
радиусы r, центрі (x,y) нүктесінде орналасқан дөңгелек салу.
түс setcolor функциясымен беріледі.

arc(x,y,b,e,r);
b  бастапқы бұрыштан e соңғы бұрышына дейін,
 радиусы r, центрі (x,y) нүктесінде орналасқан
дога салу.
 Ескерту: Егер b=0, e=360 болса, онда дөңгелек сызылады.
ellipse(x,y,b,e,xr,yr);
b   бастапқы  бұрыштан  e  соңғы  бұрышына  дейін(x,y)   нүктесінде   центрі
орналасқан эллипс салу, xr – X  бойынша радиус, yr –Y бойынша радиус.

6. Бояу түсі және фон түсі

setbkcolor(c);
Графикалық режимде фонның түсін анықтайды.

cleardevice();
Графикалық режимде экранды тазалау функциясы.

floodfill(x,y,c);
setfillstyle функциясымен анықталатын ағымдағы түспен және толтыру  стилімен
белгіленген аймақты бояйды.
(x, y) – белгіленген аймақтың  ішінде  орналасқан  нүкте,  c  –  белгіленген
аймақтың шекарасының түсі.

7. Графикалық режимде мәтін шығару

outtext(s);
Нұсқағыштың ағымдағы орынынан бастап мәтіннің жолын шығарады.
s – жолдық типтің айнымалысы немесе тұрақтысы.

outtextxy(x,y,s);

(x, y) – мәтіннің басы орналасатын  нүкте.
Ескерту: Экранға  сандық  берілгендерді  шығару  үшін  алдымен  санды  жолға
айландыру қажет.

Өзін-өзі тексеруге арналған сұрақтар
1. Экранмен жұмыс істеуге арналған қандай графикалық режимдер бар?
2. Графикалық обьектілерді сызуға арналған қандай функциялар бар?

8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер,
1995
2.  Подбельский  В.В.,  Фомин  С.С.  Программирование  на  языке  СиЖ  Учеб.
пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание /  Под  ред.  С.В.  Симоновича.  –
СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984

                            2. практикалық сабақ
1 апта
                          №1, №2 практикалық сабақ
1 тақырып. Дербес компьютердің программалық құралдары
2 тақырып. Программалаудың методологиясы
Сабақтың мақсаты:
1. Түсініктермен танысу:
 • программалық қамтамасыз ету;
 • ПҚ түрлері;
 • программалау тілі;
 • программалау тілдерінің классификациясы;
 • трансляция, трансляторлар: компиляторлар, интерпретаторлар;
 • программалау тілдерінің ұрпағы;
 • алгоритмдік  программалау;
 • обьектілі-бағытталған программалау;
 • программалау жүйелері;
 • программаны өңдеу этаптары.
2. Түсінікті қайталау:
 • алгоритм;
 • алгоритм қасиеті;
 • алгоритмдерді жазудың әдістері;
 • алгоритм типтері.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. программа деген не?
2. ДК дің ПҚ-уы деген не?
3. ПҚ-дың қандай түрлері бар?
4. Программалау тілі деген не?
5. "төмен дәрежелі тіл" және "жоғары дәрежелі тіл"  терминдерінің  мағынасын
   анықта?
6. Трансляция, трансляторлар деген не?
7. компиляторлар мен интерпретаторлардың айырмашылығы?
8. Прогаммалау тілдерінің қандай ұрпақтары бар?
9. Программалау жүйесі деген не?
10. Программаны өңдеудің қандай этаптары бар?
11. Алгоритмдік программалау деген не?
12. Құрылымдық программалау деген не?


Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.

СОӨЖ, СӨЖ сұрақтары
1. Программаны өңдеуге арналған техникалық тапсырма.
2. Программаны техникалық проектілеу этабы.
3. Алгоритмдердің құрылымдық сызбасын өңдеу.
4. Берілгендерді ұйымдастыру.

2 апта
                          №3, №4 практикалық сабақ
3 тақырып. Программалау технологиясының негізі
Сабақтың мақсаты:
1Түсініктермен танысу:
 • ПҚ-ды проектілеу әдісі;
 • құрылымдық  программалау;
 • модульдік программалау;
 • программалау стилі;
 • жөндеу және программаны сынақтан өткізу
 • программаның сапасын бақылау.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Құрылымдық программалау деген не?
2. Программалаудың экономикалық аспектілері қандай?
3. өңдеу периодына қандай этаптар кіреді?
4. Программаның сапасын тексеру этабында не болады?


Сабақтың жүруі:
   1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.


СОӨЖ, СӨЖ сұрақтары
1. Программаны құжаттау.
2. ГОСТ пен мақұлданған программалық құжаттау түрі.
3. Программалық құжаттаудың бірлік жүйесі.


3 апта
                          №5, №6 практикалық сабақ
4 тақырып. Си тілінің жалпы сипаттамасы. Си программалау жүйесіне кіріспе.
Сабақтың мақсаты:
1. Си тілінің алфавитімен танысу.
2. Түсініктермен танысу:
 • идентификатор;
 • айнымалылар және константалар;
 • берілгендер типі;
 • препроцессор директивалары.
3. Си тілінің берілгендерінің стандартты типтерімен танысу.
4. Берілгендер типін анықтауды үйрену.
5. Си тіліндегі программаның құрылымымен танысу.
6. Си программалау жүйесі ортасында жұмыс істеуге үйрену .

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Си тілінің алфавитіне қандай символдар кіреді?
2. Идентификатор деген не? Идентификаторларды рәсімдеудің  қандай  ережелері
   бар?
3. Константа деген не?
4. Айнымалылар деген не?
5. Си тілінде берілгендерінің қандай  стандартты типтері бар?
6. Препроцессор директивасы деген  не?  Препроцессордың  қандай  директивасы
   бар ?
7. Си тіліндегі программаның құрылымы қандай?
8. Си программалау жүйесінің файылдарының құрамы қандай?


Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.



4 апта
                          №7, №8 практикалық сабақ
5 тақырып. Меншіктеу операторы. Енгізу-шығаруды ұйымдастыру.
Сабақтың мақсаты:
1. Түсініктермен  танысу:
 • өрнек;
 • операциялар;
 • меншіктеу операциялары;
 • стандартты функциялар.
2. Си тілінде математикалық өрнектерді жазуды үйрену.
3. Логикалық өрнектердің мәнін анықтауды үйрену.
4. Түсініктермен танысу:
 • оператор;
 • операторды жазу форматы.
5.  Меншіктеу  операцияларын,  енгізу  функцияларын,   шығару   функцияларын
   қолдануды үйрену.
6. Сызықты құрылымды программаларды құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Өрнек деген не?
2. Берілгендерге қандай операциялар қолданылады?
3. Қандай меншіктеу операциялары бар?
4. Меншіктеу операторының жазылу форматы мен  тағайындауы қандай?
5. Типтерді келтірудің қандай түрлері бар?
6. Берілгендерді енгізу және шығару деген не?
7. Қандай енгізу функциялары бар?
8. Қандай шығару функциялары бар?


Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.


СОӨЖ, СӨЖ сұрақтары
Есептеу жүргізу үшін қандай формулаларды қолдануға болады:
 • Сандардың дәрежесі;
 • ctg x
 • arcsin x
 • arccos x
 • arcctg x
 • loga x
5 апта
                          №9, №10 практикалық сабақ
6 тақырып. Шартты және шартсыз өту операторлары
Сабақтың мақсаты:
1. Түсініктермен танысу:
 • құрама оператор;
 • белгі.
2. Операторларды қолданудың  жазу  форматымен  және  ережесін  тағайындаумен
   танысу:
 • goto
 • if…then…else…
 • таңдау операторы
3. тармақталған құрылымдағы программаны құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. тармақталған алгоритм деген не?
2. Белгі деген не?
3. goto шартсыз өту операторының  тағайындалуы және жазылу форматы қандай?
4. if… шартты өту операторының  тағайындалуы және жазылу форматы қандай?
5. Қысқа формада жазылған шартты өту операторы қалай жұмыс істейді?
6. Толық формада жазылған шартты өту операторы қалай жұмыс істейді?
7. Қарапайым оператор деген не?
8. Құрама оператор деген не? Құрама оператор не үшін қолданылады?
9. Таңдау операторының тағайындалуы және жазылу форматы қандай?

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.

СОӨЖ, СӨЖ сұрақтары
1. Кездейсоқ өлшем түсінігі.
2. Кездейсоқ өлшеммен жұмыс істеуге арналған процедуралар мен функциялар.






















6 апта
                         №11, №12 практикалық сабақ
7 тақырып. Цикл операторлары
Сабақтың мақсаты:

1. Жазу форматымен және  операторларды  қолдану  ережесімен,  тағайындауымен
   танысу:
 • while …
 • do …
 • for …
2. Циклдік құрылымдағы программа құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар

1. Циклдік алгоритм деген не?
2.  Шарты алдын ала берілген циклдік операторының тағайындалуы  мен  жазылу
   форматы қандай?   Шарты алдын ала берілген циклдік  операторы  жұмысының
   блог –схемасын қалай көрсетуге болады?
3.    Шарты соңынан  берілген циклдік операторының тағайындалуы мен  жазылу
   форматы қандай? Шарты соңынан берілген циклдік операторы жұмысының  блог
   –схемасын қалай көрсетуге болады?
4.    Параметрлік цикл операторының тағайындалуы мен жазылу форматы қандай?
   Параметрлік цикл операторының  жұмысының  блог –схемасын қалай көрсетуге
   болады?

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.



7 апта
                         №13, №14 практикалық сабақ
8 тақырып. Функции
Сабақтың мақсаты:
1. Ішкі программа ұғымымен танысу.
2. Функцияны жазу ережесімен танысу.
3. Түсініктермен танысу:
 • Формалды және фактлік параметрлер;
 • Глобальді және локальді айнымалылар.
4. Негізгі программаға функцияны шақыру әдістерімен танысу.
5. Ішкі программаны қолдану арқылы программа құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Ішкі программа деген не?
2. Функция деген не?
3. Функцияны қалай жазады?
4. Негізгі программаға функцияны шақыруды қалай жүзеге асырады?

Сабақтың жүруі:
   1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
   2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
TP және Си программаларының қолданылуын салыстыру.

8 апта
                         №15, №16 практикалық сабақ
9 тақырып. Жады кластары
Сабақтың мақсаты:
1. Түсініктермен танысу:
 • Жады кластары;
 • Автоматты айнымалылар;
 • статистикалық айнымалылар;
 • сыртқы айнымалылар;
 • регистрациялық айнымалылар;
 • нұсқағыштар және адрестік арифметика.
2. Жадының әр түрлі класының обьектілерімен программа құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Жадының қандай кластары бар?
2. Автоматты жады деген не?
3. Динамикалық  жады деген не?
4. Статистикалық ішкі жады деген не?
5. Жады кластарының қандай спецификациясы қолданылады?
6. Автоматты айнымалы деген не?
7. Статистикалық айнымалы деген не?
8. Ішкі айнымалы деген не?

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.

СОӨЖ, СӨЖ сұрақтары
Программа құру.
9 апта
                         №17, №18 практикалық сабақ
10 тақырып. Берілгендердің күрделі типі: массивтер
Сабақтың мақсаты:
1. Түсініктермен танысу:
 • массив;
 • массивті;
 • массивті жазудың әдістері.
2. Бір өлшемді массивті қолдану арқылы программалар құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Массив деген не?
2. Массивтің өлшемі деген не?
3. Программада бір өлшемді, екі өлшемді массивтерді қалай жазамыз?
4. Массив элементіне қалай рұқсаталамыз?
5. Массивті қалай толтырамыз?
6. Массивті экранға қалай шығарамыз?
7. бір өлшемді  массив және нұсқағыштар.

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.


СОӨЖ, СӨЖ сұрақтары
Программа құру.







10 апта
                         №19, №20 практикалық сабақ
10 тақырып. Берілгендердің күрделі типі: массивтер
Сабақтың мақсаты:
1. Берілгендер типімен танысу: шектелген, диапазондық.
2. Шектелген және диапазондық типтердің жазылу  әдісімен танысу  .
3. Түсініктермен танысу:
 • массив;
 • массивтің өлшемі;
 • массивтің жазылу әдісі.
4. Бір өлшемді массивті қолдану арқылы программалар құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Екі өлшемді массив қалай жазылады?
2. Екі өлшемді массивтің элементіне қалай рұқсат аламыз?
3. Екі өлшемді массивті қалай толтырады?
4. Екі өлшемді массивті экранға қалай шығарады?
5. Екі өлшемді массивке нұсқағыш  қалай қолданады?

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.

СОӨЖ, СӨЖ сұрақтары
Программа құру.






11 апта
                         №21, №22 практикалық сабақ
11 тақырып. Жолдар
Сабақтың мақсаты:
1. Жолдық берілгендермен танысу.
2. Жолдық берілгендерді жазудың әдісмен танысу.
3. Жолдармен жұмыс істеуде стандартты функциялармен танысу.
4. Жолдық берілгендерді қолдану арқылы программа құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
1. Жол деген не?
2. Жолды программада қалай жазуға болады?
3. Жолды берілгендерде қандай операциялар рұқсат етілген?
4. Жолдың жеке символына қалай рұқсат алуға болады?
5. Жолдармен жұмыс істеуге арналған қандай функциялар бар?
6. Екі жолды қалай салыстырады?
7. Жолдық айнымалыға мәнді қалай меншіктейді?
8. Жолдың ұзындығын қалай анықтайды?

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.

СОӨЖ, СӨЖ сұрақтары
Программа құру.
12 апта
                         №23, №24 практикалық сабақ
12 тақырып. Берілгендер құрылымы
Сабақтың мақсаты:
1. Берілгендердің құрылымдық типімен және осы типтің  прогрммада  жазылуымен
   танысу.
2. Құрылымды пайдалану арқылы программа құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Берілгендердің құрылымдық типі қайда қолданылуы мүмкін?
2. Құрылымды қалай анықтайды?
3. Құрылымды жазу типі мен  құрылымдық  айнымалының  арасындағы  айырмашылық
   неде?
4. Құрылым элементіне қалай?
5. Құрылымда бір типтің элементтері болуы мүмкін бе?


Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.

13 апта
                         №25, №26 практикалық сабақ
13 тақырып. Файлдар
Сабақтың мақсаты:
1. Файл түсінігімен танысу.
2. Файлдармен жұмыс істеу функцияларымен танысу.
3. Ішкі файлдарды қолдану арқылы программа құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Файл деген не?
2. Берілгендер файлын өңдеу үшін қолданудың қандай артықшылықтары бар?
3. Программаларда файлға нұсқағыш  не үшін қолданылады?
4. Файлдың ашылуы және жабылуы қалай орындалады?
5. Файлдармен жұмыс істеу үшін қандай енгізу және шығару функциялары бар?
6. Файлды жаңа берілгендермен қалай толықтырады?
7. Файлдардың тестілік және екілік форматтары.
Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
14 апта
                         №27, №28 практикалық сабақ
14 тақырып. Модулдер
Сабақтың мақсаты:
Модуль және стандартты модуль ұғымымен танысу.

Практикалық сабаққа дайындалуға арналған сұрақтар
1. Модуль деген не?
2. Қандай стандартты модульдер бар және олар неге арналған?

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
TP және Си модульдерінің қолданылуын салыстыру.
Программа құру.
15 апта
                         №29, №30 практикалық сабақ
15 тақырып. Графика
Сабақтың мақсаты:

1. Графикалық бейнелерді салуға арналған функциялармен танысу.
2. Графикалық бейнелерді салу және қозғалту программаларын құруды үйрену.

Практикалық сабаққа дайындалуға арналған сұрақтар
3. Экранмен жұмыс істеуге арналған қандай графикалық режимдер бар?
4. Графикалық обьектілерді сызуға арналған қандай функциялар бар?

Сабақтың жүруі:
1. Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
2. Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.

СОӨЖ, СӨЖ сұрақтары
Программа құру.




3. студенттердің өздік жұмыстары тақырыптарының тізімі:


                              СОӨЖ тапсырмалары
СОӨЖ №1. Программаны өңдеуге арналған техникалық тапсырма.
СОӨЖ №2. Программаны техникалық проектілеу этабы.
СОӨЖ №3. Алгоритмдердің құрылымдық сызбасын өңдеу.
СОӨЖ №4. Берілгендерді ұйымдастыру.
СОӨЖ №5. Программаны құжаттау.
СОӨЖ №6. мақұлданған программалық құжаттау түрі.
СОӨЖ №7. Программалық құжаттаудың бірлік жүйесі.
СОӨЖ №8. Есептеу жүргізу үшін қандай формулаларды қолдануға болады:
Сандардың дәрежесі;
ctg x
arcsin x
arccos x
arcctg x
loga x

СОӨЖ №9. Кездейсоқ өлшем түсінігі.
СОӨЖ №10. Кездейсоқ өлшеммен жұмыс істеуге арналған процедуралар мен
функциялар.
СОӨЖ №11. TP және Си программаларының қолданылуын салыстыру.
СОӨЖ №12. Программа құру.
СОӨЖ №13. Программа құру.
СОӨЖ №14. Программа құру.
СОӨЖ №15.   Программа құру.



                              СӨЖ тапсырмалары
СӨЖ 1. Сызықтық программалау есебі түсінігіне анықтама беру.
СӨЖ 2. Конструктивті және сапалы есептер.
СӨЖ 3. Берілгендер түсінігі.
СӨЖ 4. Ақпарат туралы түсінік.
СӨЖ 5. Ақпарат моделі.
СӨЖ 6. Ақпарат типі. Ақпарат өлшемі.
СӨЖ 7. Түрлендіру: логикалық, структуралық, процедуралық
СӨЖ 8. Представление знаний правилами и логический вывод.
СӨЖ 9. Білім тілі
СӨЖ 10. Объектті-бағыттау программалауда берілгендер және білім
анықтамалары
СӨЖ 11. Білім технологиясы
СӨЖ 12. Білім түсінігі проблемасы
СӨЖ 13. Берілгендермен білімнің арасындағы қатынас
СӨЖ 14. Білім түсінігін құру






 “Программалау тілдерінің технологиясы” пәні  бойынша емтиханға дайындалуға
                         арналған  сұрақтар тізімі.

1. Дербес компьютердің программалық ортасы.
2. Программалау әдісі.
3. Программалау технологиясының негізі.
4. Си тілінің жалпы сипатталуы. Си программалау жүйесіне кіріспе.
5. Меншіктеу операторы. Енгізу-шығаруды ұйымдастыру.
6. Шартты және шартсыз өтуоператорлары.
7. Цикл операторлары.
8. Функциялар.
9. Жады кластары.
10. Берілгендердің күрделі типі: массивтер.
11. Жолдар.
12. Берілгендердің құрылымы.
13. Файлдар.
14. Модулдер.
15. Графика.
-----------------------
Жоқ



Иә



                                Өрнек ақиқат?



                                  оператор1



Жоқ



Иә



                                Өрнек ақиқат?



                                  оператор1



                                  оператор2



Жоқ



Иә



                          Өрнек мәні_шарт ақиқат ?



                                 Цикл денесі



Иә



Жоқ



                         өрнек_шартының мәні ақиқат?



                                 Цикл денесі



Жоқ



Иә



                                   өрнек_1



                        Өрнек _шартының мәні ақиқат?



                                 Цикл денесі



                                   өрнек_3



                               Функция денесі



[pic]



X



Y



(0,0)



(x1,y1)



(x2,y2)



t=0



[pic]



d



(x1,y1)



(x2,y2)



t=1



0



90



180



270




Пәндер