ҚАЗАҚСТАН РЕСПУБЛИКАСЫ БІЛІМ ЖӘНЕ ҒЫЛЫМ МИНИСТРЛІГІ
Семей қаласының шәкәрім атындағы семей мемлекеттік университеті
|
3 деңгейлі СМЖ құжаты
|
ПОӘК
|
ПОӘК 042-39. 1.115/01- 2013
|
ПОӘК
«Программалау» пәні бойынша оқу-әдістемелік материалдар
|
Редакция №____от_____
|
5В011100 – «Информатика» мамандығына арналған
«Программалау 3»
ПӘНІНІҢ ОҚУ-ӘДІСТЕМЕЛІК КЕШЕНІ
ОҚУ-ӘДІСТЕМЕЛІК МАТЕРИАЛДАР
Семей
2016
МАЗМҰНЫ
Глоссарий
Дәрістер
Практикалық және зертханалық жұмыстар
Студенттің өздік жұмысы
ГЛОССАРИЙ
Глоссарий
Арнайы символдарға пунктуация және арифметикалық операция (амалдар) белгілері жатады.
Арифметикалық амал белгілері (+) қосу; (*)көбейту; (-) азайту; (/) бөлу.
Атау — идентификатор (identification — объектінің белгілі бір символдар тіркесіне сәйкестігін бекіту) программаны және программадағы тұрақтыларды, типтерді, айнымалыларды, функцияларды, файлдарды т.б. белгілеп жазу үшін қажет.
Айыру белгілеріне бос орын, барлық басқару символдары,тыныс белгілері, ENTER (келесі жолға көшіру) пернесін басу белгісі және түсініктемелер жатады.
Айнымалылар деп программаның орындалу барысында әр түрлі мәндерді қабылдай алатын шамаларды айтады.
Деректер — сан мәндері мен мәтін түріндегі сөз тіркестерін мән ретінде қабылдай алатын тұрақтылар (константалар), айнымалылар т.б. осы тәрізді құрылымдар немесе солардың адрестері.
Дерек енгізу — бастапқы деректерді пернетақтадан, дискіден немесе енгізу-шығару порттарынан енгізу арқылы жүзеге асырылады.
Диапазондық немесе ауқьмдық тип. Мұнда көрсетілген шама қабылдай алатын мәннің алғашқысы (ең кіші) мен соңғысы (ең үлкен) екі нүкте арқылы бөлініп көрсетіледі.
Жергілікті (локальды) блок - блок ішіндегі блок – жергілікті (локальды) блок деп аталады. Жергілікті блоктарға процедуралар мен функциялар кіреді, олар кейбір программаларда болмауы да мүмкін.
Қатынас таңбалары немесе салыстыру белгілері: = (тең), <> (тең емес), < (кіші), > (үлкен), < = (үлкен емес, < таңбасының орнына), > = (кіші емес, > таңбасының орнына).
Көмекші программа — алдын- ала қандай да бір атаумен аталған командалар тобы. Олар программаның кез - келген жерінен оның атауын көрсету арқылы шақырылып атқарыла береді.
Логикалық амал белгілері:
AND — және (логикалык көбейту) операциясы;
OR — немесе (логикалык қосу) операциясы;
NOT — емес (терістеу немесе жоққа шығару) операциясы;
XOR — арифметикалық немесе амалы;
SHL — биттер (1 мен 0-дер) тіркесін солға ығыстыру;
SHR — биттер (1 мен 0-дер) тіркесін оңға ығыстыру.
Логикалық типтегі (BOOLEAN) шамалар, негізінен, екі мән қабылдайды — TRUE (ақиқат) және FALSE (жалған), олар компьютер жадында бір байт орын алады.
Негізгі блок – негізгі программа блогы, сондықтан ол басқа блоктарға кірмеуі тиіс.
Нақты сан түріндегі типтер - ондық сандар бүтіні мен бөлшегін бөлетін үтірі жылжымалы және тұрақты түрде жазылады. Үтірі тұрақты ондық сандар кәдімгі математикадағыдай жазылады, бірақ үтір орнына нүкте қойылады. Мысалы, 25.48, -127.25, 0.67, -8.0. Үтірі жылжымалы ондық сандар дәрежелік көрсеткіші берілген экспотенциалды түрде жазылады, мысалы, -1.25Е + 12 (1,25*1012), 1.3Е-05 (1,3*105) т.б.
Нәтиже алу (шыгару) — аралық немесе қорытынды мәліметтерді экранға, дискіге немесе енгізу-шығару порттарына жазу.
Операциялар немесе амалдар — берілген және есептелген мәндерді меншіктеу, соларды өңдеу, салыстыру операцияларын орындайды.
Ондық цифрлар. 0,1, 2, 3, 4, 5, 6, 7, 8, 9 сан таңбалары.
Оналтылық цифрлар ондық цифрлардан және А-дан Ғ-қа (немесе а-дан f-қа) дейінгі латын әріптерінен тұрады.
Программа болгы - блоктар екі бөлімнен тұрады, олардың алғашқысы-мәліметтерді сипаттау бөлімі, ал екінші-сол мәліметтерді пайдаланып, әр түрлі іс-әрекеттерді (операцияларды, амалдарды) атқару бөлімі. Мәліметтерді сипаттау бөлімінің болуы міндетті емес, ал екінші негізгі бөлімнің болуы болуы мүмкін.
Сандар мен айнымалылар бүтін және нақты болып бөлінеді. Бүтін сандар: +4, -100, 15743, 0 т.б. Разрядтылығы 16 биттен тұратын дербес компьютер үшін қолданылатын бүтін сандар (ағылшынша INTEGER) -32768-ден +32767 дейінгі аралықта ғана жазылады, бұдан үлкен сандар нақты сандарға айналдырылады.
Символдық типтегі (CHAR) шамалар мән ретінде тек бір таңбаны ғана қабылдай алады. Мәннің символ екендігін көрсету үшін оны апостроф ішіне алып жазады. Мысалы, ‘а’ , ‘һ’ , ‘5’, ‘*’, т.б.
Саналатын тип стандартты типке жатпайды, ол параметрлердің мәніне сәйкес келетін атаулар (идентификаторлар) тізімінен тұрады. Атаулар тізімі үтір арқылы ажыратылып, жай жақша ішіне жазылады. Мысалы:
атау = (1-идентификатор, 2-идентификатор,..., n-идентификатор);
kynder = (‘дүйсенбі’, ‘ сейсенбі ‘, ... , ' жексенбі ‘);
Идентификаторлар орналасқан орны бойынша 0-ден бастап нөмірленеді. Бір идентификатор тек бір ғана саналатын типті көрсетеді.
Тұрақты немесе константа деп программаның орындалу барысында мәндері өзгеріссіз қалатын шамаларды айтады.
Түсініктеме — программа жолдары соңында немесе оның түйінді сөздері арасында қазақша (орысша) түсінік беретін пішінді жақшаға алынып жазылған сөз тіркестері. Олар программа операторларының орындалуына ешқандай әсер етпейді.
Тіркестік типтегі шамалар (STRING) апостроф ішіне алынған символдар тізбегін қабылдайды. Мысалы, "компьютер", "университет", "main", "#&*" т.б.
Цикл — белгілі бір шарттар орындалған (кейде егер орындалмаса) жағдайда көрсетілген командалар жиыны бірнеше рет қайталанып атқарылады. Қайталау саны бүтін санмен беріледі.
Шартты турде атқарылу — белгілі бір көрсетілген шарттың орындалуына байланысты (ақиқат болса), командалар жиыны атқарылады, әйтпесе олар аттап өтіледі немесе басқа командалар жиыны орындалады.
ДӘРІСТЕРДІҢ ҚЫСҚАША КОНСПЕКТІСІ
Дәріс №1
Тақырыбы: С++ программалау тілі.
Мақсаты: С++ тілінде кілттік сөздер мен идентификаторларда пайдаланылатын символдар, ESC-тізбектер туралы ұғымды енгізу. Тұрақты шамалар, идентификатор, кілттік сөздер, программа мәтінінде түсініктемелерді (комментарийлерді) пайдалану ұғымдарын енгізу.
Си тілі қазіргі күнгі компьютерлердің мүмкіндіктерін ашып береді. Си тіліндегі программалар ықшамдылығмен, жылдамдығымен ерекшеленеді. Тілдің құрылымы төменгі деңгей программалауын, құрылымдық программалауды, модульдік программалауды қолдануға дағдыландырады. Cи тілінің көп трансляторлары – компилятор болып келеді. Программалау жүйесіне - препроцессор, компилятор, байланыс редакторы, кітапханасы, текстік редактор, отладчик және интегралды басқару ортасы кіреді.
Әріптер мен сандар
1. Кілттік сөздерді (ключевое слово) және идентификаторларды құруға пайдаланылатын символдар (1-кесте). Бұл топқа ағылшын алфавитінің бас және кіші әріптері, сонымен қатар астын сызу символы да кіреді (2-кесте). Бірдей бас және кіші әріптер әр түрлі символдар болып есептеледі. Себебі олардың кодтары әр түрлі.
1-Кесте
Латын алфавитінің бас әріптері
|
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
|
Латын алфавитінің кіші әріптері
|
A b c d e f g h I j k l m n o p q r s t u v w x y z
|
Астын сызу символы
|
_
|
2. Орыс алфавитінің бас және кіші әріптерінің тобы және араб цифрлары (2-Кесте).
2-Кесте
Орыс алфавитінің бас әріптері
|
А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Ш Щ Ы Ь Э Ю Я
|
Орыс алфавитінің кіші әріптері
|
а б в г д е ж з и к л м н о п р с т у ф х ц ч ш щ ы ь э ю я
|
Араб цифрлары
|
0 1 2 3 4 5 6 7 8 9
|
3. Нөмірлеу белгілері мен арнайы символдар (3-Кесте). Бұл символдар бір жағынан есептеу процесін ұйымдастыру үшін, ал екінші жағынан белгілі бір нұсқау жиынтығын компиляторға тапсыру үшін пайдаланылады.
3-Кесте
Символ
|
Аталуы (наименование)
|
Символ
|
Аталуы (наименование)
|
,
|
үтір
|
)
|
оң жақ дөңгелек жақша
|
.
|
нүкте
|
(
|
сол жақ дөңгелек жақша
|
;
|
үтір нүкте
|
}
|
оң жақ фигуралық жақша
|
:
|
қос нүкте
|
{
|
сол жақ фигуралық жақша
|
?
|
сұрақ белгісі
|
<
|
кіші
|
‘
|
апостроф
|
>
|
үлкен
|
!
|
леп белгісі
|
[
|
квадрат жақша
|
|
|
тік сызық
|
]
|
квадрат жақша
|
/
|
бөлшек сызық
|
#
|
нөмір
|
\
|
кері сызық
|
%
|
процент
|
~
|
тильда
|
&
|
амперсанд
|
*
|
жұлжызша
|
^
|
логикалық жоқ
|
+
|
плюс
|
=
|
тең
|
-
|
минус
|
“
|
тырнақшалар
|
Бұл тізімде көрсетілмеген белгілер тек жолдық литералдарда, тұрақты-символдарда және комментарийлерде қолданылуы мүмкін.
ESC-тізбектер
Бұл топтағы арнайы символдық комбинациялар жолдарда және символдық тұрақтыларда тікелей пернетақтадан енгізуге болмайтын символдарды көрсету үшін пайдаланады. Мысалы: бос орын (пробел), табуляция символдары, жолды көшіру, каретканы қайтару символдары, жаңа бет және жаңа жол.
ESC-тізбектер (\) кері бөлшек сызықтан (міндетті бірінші символ) кейін (‘ “) - тыныс белгілері немесе цифрлар комбинациясынан тұрады (4-кесте).
Басқарушы тізбектер кең пайдаланылады, яғни ақпаратты енгізу және шығару функцияларында пайдалынылатын арнайы символдық комбинациялар.
4-Кесте
Тізбек
|
Аталуы
|
Функциясы
|
\a
|
Қоңырау
|
Дыбыс береді
|
\b
|
Backspase
|
Бір қадамға қайтару
|
\t
|
Табуляция
|
Табуляцияның келесі позициясына өту
|
\n
|
Жаңа жол
|
Жаңа жолдың басына көшу
|
\v
|
Тік табуляция
|
Курсорды бірнеше жолға төмен түсіреді.
|
\r
|
Каретканы қайтару
|
Ағымдағы жолдың басына қайтару.
|
\f
|
Жаңа бет
|
Жаңа экранның басы
|
\’’
|
Тырнақшалар
|
Тырнақшаны шығарады.
|
\’
|
Апостроф
|
Апострофты шығарады.
|
\\
|
Кері бөлшек сызық
|
Кері бөлшек сызықты шығару.
|
\ddd
|
Сегіздік көріністегі ДЭЕМ-нің кодтарының жиынтығының символы
|
|
\xddd
|
Оналтылық көріністегі ДЭЕМ-нің кодтарының жиынтығының символы
|
|
\ddd және \xddd (мұндағы d цифрды көрсетеді ) түріндегі тізбектер ДЭЕМ-дегі кодтар жиынынан алынған символды сәйкесінше сегіздік немес оналтылық цифрлар тізбегі ретінде көруге мүмкіндік береді. Мысалы, каретканы қайтару символы әр түрлі әдістермен көрсетілуі мүмкін:
\r – жалпы басқарушы тізбек,
\015 – сегіздік басқарушы тізбек,
\x00D – оналтылық басқарушы тізбек.
Жолдық тұрақты шамаларда әрқашан барлық үш цифрды басқарушы тізбек түрінде жазу міндетті екенін ескеру керек. Мысалы, \n (жаңа жолға көшу) жеке басқарушы тізбекті \010 немесе \xA түрінде көрсетуге болады, бірақ жолдық тұрақтыларда барлық үш цифрды жазу қажет, кері жағдайда басқарушы тізбектен кейінгі символ немесе символдар оның жетіспейтін бөлігі ретінде қарастырылады. Мысалы, “ABCDE\x009FGH” берілген жолдық команда Си тілінің белгілі функцияларын пайдалану арқылы сегіз бос орынмен бөлінген ABCDE FGH екі сөз түрінде басып шығарылады, бұл жағдайда егер “ABCDE\x09FGH” толық емес басқарушы тізбекті көрсетсе, онда баспаға ABCDE=|=GH деп шығады, себебі компилятор \x09F тізбегін “=+=” символ түрінде қабылдайды.
Егер кері бөлшек сызық басқарушы тізбекте жоқ (яғни 4-кестеге енгізілмеген) және цифр болмайтын символдың алдында болса, онда бұл сызық ескерілмейді, ал сызықтың өзі әріп (литерал) түрінде көрсетіледі. Мысалы, \h символы жолдық немесе символдық тұрақтыда h символымен көрсетіледі. (\) Кері бөлшек сызық символы басқарушы тізбекті анықтаудан басқа жалғастыру символы ретінде де пайдаланылады. Егер (\)-тан кейін (\n) болса, онда екі символ да ескерілмейді, ал келесі жол бұрынғының жалғасы болады. Бұл қасиет ұзын жолдарды жазуға пайдаланылады.
Тұрақты шамалар
Тұрақты шама деп программадағы шамалардың саналуы аталады. Си тілінде тұрақты шамалардың төрт түрін қарастырады: бүтін тұрақты шамалар, қалқыма нүктесі бар тұрақтылар, символдық тұрақты шамалар және жолдық литералдар.
Бүтін тұрақты шама: бұл бүтін шаманы ондық, сегіздік немесе оналтылық түрдің біреуімен көрсететін ондық, сегіздік немесе оналтылық сан.
Ондық тұрақты шама бірінші цифры нөл болмайтын (керіжағдайда сан сегіздік сан ретінде қабылданады) бір немесе бірнеше ондық цифрдан тұрады.
Сегіздік тұрақты шама міндетті нөлден және бір немесе бірнеше сегіздік цифрдан (цифрлардың ішінде 8 және 9 болмауы керек, себебі бұл цифрлар сегіздік санау жүйесіне кірмейді).
Оналтылық тұрақты шама 0x және 0X міндетті тізбегінен басталады және ол бір немесе бірнеше оналтылық цифрлардан (оналтылық санау жүйесінің цифрлар жиынын көрсететін цифрлар: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F).
Бүтін тұрақты шамаларға мысал:
Ондық тұрақты шама |
Сегіздік тұрақты шама
|
Оналтылық тұрақты шама
|
16
|
020
|
0х10
|
127
|
0117
|
0х2В
|
240
|
0360
|
0хF0
|
Егер теріс бүтін тұрақты шаманы жазу керек болса, онда тұрақты шаманың алдына (унарлы минус деп аталатын) “-” белгісін пайдаланады. Мысал: -0x2A, -088, -16.
Әрбір бүтін тұрақты шамаға түрлендірулерді анықтайтын тип меншіктеледі. Түрлендірулер орындалуы керек, егер тұрақты шама өрнектерде пайдаланылса. Тұрақты шаманың типі келесідей анықталады:
ондық тұрақты шамалар белгісі бар шамалар ретінде қарастырылады және оларға тұрақты шаманың мәніне сәйкес int (бүтін) немесе long (ұзын бүтін) типі меншіктеледі. Егер тұрақты шама 32768-ден кіші болса, онда оған int типі кері жағдайда long типі меншіктеледі.
сегіздік және оналтылық тұрақты шамаларға 5-кестеге сәйкес тұрақты шаманың мәніне байланысты int, unsigned int (белгісі жоқ бүтін), long немесе unsigned long типі меншіктеледі.
5-Кесте
Оналтылық тұрақтылардың диапазоны
|
Сегіздік тұрақтылардың диапазоны
|
Типі
|
0x0 – 0x7FFF
|
0 – 077777
|
int
|
0X8000 – 0XFFFF
|
0100000 - 0177777
|
unsigned int
|
0X10000 – 0X7FFFFFFF
|
0200000 - 017777777777
|
long
|
0X80000000 – 0XFFFFFFFF
|
020000000000 - 037777777777
|
unsigned long
|
Кез келген бүтін тұрақты шаманы long типімен анықтау үшін тұрақты шаманың соңына “l” немесе “L” әрпін қою жеткілікті. Мысал: 5l, 6l, 128l, 0105l, 0X2A11L.
Қалқыма нүктесі бар тұрақты – ондық нүктесі немесе экспонентасы бар нақты шама түрінде көрсетілген ондық сан.Форматы мына түрде болады: [цифрлар].[цифрлар] [E |e[+|-]цифрлар ].
Қалқыма нүктесі бар сан бүтін және бөлшек бөліктерден және экспонентадан тұрады. Қалқыма нүктесі бар тұрақтылар екі еселенген дәлдіктің оң шамасын көрсетеді (double типін қабылдайды).
Теріс шаманы анықтау үшін минус белгісінен және оң тұрақты шамадан тұратын тұрақтылық өрнегін құру қажет. Мысалдар: 115.75, 1.5Е-2, -0.025, .075, -0.85Е2 .
Символдық тұрақты шама – апострафқа алынған символдармен көрсетіледі. Басқарушы тізбек жеке символ ретінде қарастырылады. Ол символдық тұрақты шамаларда пайдаланылады. Символдық тұрақты шаманың мәні болып символдың сандық коды саналады. Мысалдар:
‘ ’ – бос орын,
‘Q’ – Q әрпі,
‘\n’ – жаңа жол символы,
‘\\’ – кері бөлшек сызық,
‘\v’ – тік табуляция (вертикальная табуляция).
Символдық тұрақты шамалар int типін қабылдайды және типтердің түрлендірілуі кезінде белгімен толықтырылады.
Жолдық тұрақты шама (литерал) – тырнақшаға (‘’) алынған символдардың тізбегі (орыс және латын әріптерінің бас және кіші әріптерін, сонымен қатар цифрларын қосқанда). Мысал: “№17 мектеп”, “Семей қаласы”, “YZPT KOD”.
Барлық басқарушы символдар, (‘’) тырнақша, (\) кері бөлшек сызық және жолдық литералдағы және символдық тұрақты шамадағы жаңа жол символы сәйкес басқарушы тізбектермен көрсетіледі. Әрбір басқарушы тізбек бір символ ретінде көрсетіледі. Мысалға, “№35\n мектеп” деген литералды баспаға шығару кезінде оның “№35” деген бөлігі бір жолға, ал екінші бөлігі “ мектеп ” келесі жолға шығады.
Жолдық литерал символдары оперативті жады облысында сақталады. Әрбір жолдық литералдың соңына компилятор \0 басқарушы тізбекпен көрсетілетін 0-дік символ қосады.
Жолдық литерал char[] типті болады. Бұл жолдың символдар массиві түрінде қарастырылатынын білдіреді. Маңызды ерекшелікті байқайық. Массив элементтерінің саны плюс 1 жолындағы символдар санына тең, өйткені нөлдік символ (жол соңының символы) сонымен қатар массив элементі болып табылады. Барлық жолдық литералдар компилятор арқылы әр түрлі объектілер ретінде қарастырылады. Жолдық литералдар бірнеше жолдарда орналасуы мүмкін. Мұндай литералдар кері бөлшек сызықты және енгізу пернесін пайдалану негізінде жасалады. Кері сызығы бар жаңа жол символы ескерілмейді. Бұл мынаған әкеледі: келесі жол өткен жолдың жалғасы болады. Мысал:
“белгісіз жол \n
ұзындығы”
мына литералға толығымен ұқсас
“белгісіз жол ұзындығы”.
Жолдық литералдардың тұтасуы үшін бос орын символын (символдарын) пайдалануға болады. Егер программада тек бос орындармен екі немесе одан да көп жолдық литералдар кездессе, онда олар бір символдық жол ретінде қарастырылады. Бұл принципті бір жолдан көп орын алатын жолдық литералдарды жасауға пайдалануға болады.
Идентификатор
Идентификатор деп цифрлар және әріптер тізбегі, сонымен қатар бірінші әріп немесе арнайы символ тұратын жағдайдағы арнайы символдар тізбегі аталады. Идентификаторларды жасау үшін латын алфавитінің бас және кіші әріптері пайдаланыла алады. Арнайы символ ретінде астын сызу (подчеркивание) ( _ ) символы пайдаланылады. Жасалуына сәйкес бас және кіші әріптер пайдалынылатын екі идентификатор әр түрлі деп есептеледі. Мысал: abc, ABC, A128B, a128b.
Маңызды ерекшелік компилятор идентификаторға символдардың кез келген санын беруге рұқсат береді. Дегенмен, маңызды болып бірінші 31 символ саналады. Идентификатор айнымалыларды, функцияларды, құрылымдарды жариялау кезеңінде құрылады, содан кейін оны жасалатын (разрабатываемый) программаның келесі операторларына пайдалануға болады. Идентификаторды таңдау кезінде мынандай маңызды ерекшеліктер бар:
Біріншіден, идентификатор кілттік сөздермен, белгіленген сөздермен (зарезервированные слова) және Си тілінің компилятор библиотекасының функция аттарымен сәйкес келмеуі керек.
Екіншіден, ( _ ) астын сызу символының идентификатордың бірінші символы ретінде пайдаланылуына ерекше көңіл аудару керек. Осылай құрылған идентификатор бір жағынан жүйелік функциялардың және немесе айнымалылардың аттарымен сәйкес келуі мүмкін, екінші жағынан мұндай идентификаторларды пайдалану кезінде программалар басқа орынға апарыла алмауы мүмкін, яғни оларды басқа типті компьютерлерде пайдалануға болмайды.
‡шіншіден, ішкі айнымалыларды анықтау үшін пайдаланылатын идентификаторларға пайдаланылатын байланыс редакторы жасайтын шектеулер салынуы тиіс (байланыс редакторының немесе әр түрлі редакторлардың әр түрлі версияларын пайдалану ішкі айнымалылардың аттарына талаптар қоятынын ескерейік).
Кілттік сөздер
Кілттік сөз – бұл белгілі бір мағынасы бар белгіленген (зарезервированный) идентификаторлар. Оларды Си тілінің компиляторына белгілі тек мағынасына сәйкес пайдалануға болады.
Кілттік сөздердің тізімін келтірейік
auto double int struct break else long switch
register typedef char extern return void case float
unsigned default for signed union do if sizeof
volatile continue enum short while
Сонымен қатар Си тілінің жүзеге асуының қарастырылатын версияларында белгіленген сөздер болып мыналар саналады:
_ asm, fortran, near, far, cdecl, huge, pascal, interrupt .
far, huge, near кілттік сөздері жады облысында көрсеткіш өлшемдерін анықтауға мүмкіндік береді. _ asm, cdelc, fortran, pascal кілттік сөздері басқа тілдерде жазылған функциялармен байланыс ұйымдастыру үшін қызмет етеді. Сонымен қатар Си тіліндегі құрылатын программа денесіндегі ассемблер тілінің командаларын пайдалану үшін де қолданылады. Кілттік сөздер идентификаторлар ретінде пайдаланыла алмайды.
Программа мәтінінде түсініктемелерді (комментарийлерді) пайдалану.
Түсініктеме – бұл символдар жиыны. Бұл символдар жиынына келесі шектеулер қойылады. Түсініктемені көрсететін символдар жиынының ішінде түсініктемелердің сәйкес (/* және */) басы мен соңын анықтайтын арнайы символдар болуы мүмкін емес.
Түсініктемелер бір жол ретінде де бірнеше жол ретінде де болатынын ескерейік. Мысал:
/* программаға түсініктеме */
/* алгоритм басы */
немесе
/* түсініктемелерді келесі түрде жазуға болады, бірақ компилятор арқылы ескерілмейтін тізбектің ішінде программа операторлары (ол да ескерілмейді) болмауын абайлау керек */
Түсініктемелердің қате белгіленуі
/* алгоритмге Түсініктеме /* шеттік есепті шешу */ */
немесе
/* шешу алгоритміне Түсініктеме */ шеттік есепке */
Бақылау сұрақтары:
С++ тілінде кілттік сөздер мен идентификаторларда пайдаланылатын символдады ата.
ESC-тізбектер деген не?
Тұрақты шамалар қалай сипатталады?
Идентификатор қалай жазылады?
Кілттік сөздерді ата.
Программа мәтінінде түсініктемелерді (комментарийлерді) қалай пайдаланады?
Дәріс №2
Тақырыбы: C++ тіліндегі программаның құрылымы. Енгізу-шығару функциялары.
Мақсаты: Сипаттаушы, тип идентификаторы, бастаушы, жады класының спецификаторы ұғымдарын енгізу. Ең жиі қолданылатын директивалар #include және #define, негізгі функцияның тақырыбы, айнымалылыарды жариялау, амалдар мен операторлар бөлімін қарастыру. Шығару, енгізу функцияларының форматтары, олардың құрамына енетін түрлендіру амалдары, басқарушы символдар туралы ұғым енгізу.
Си тілінің басқа тілдерден (PL1, FORTRAN, және т.б.) маңызды айырмашылығы программада пайдалнылатын барлық айнымалыларды (оларға сәйкес типтерін көрсету арқылы) жариялауға әкелетін жасыру принципінің (принцип умолчания) болмауында.
Айнымалыны жариялау мына түрде болады:
[жады класының спецификаторы] сипаттаушы (описатель) типіндегі спецификатор [=бастаушы (инициатор)]
[.сипаттаушы [=бастаушы] ] ...
Сипаттаушы – қарапайым айнымалының идентификаторы не тік жақшамен, дөңгелек жақшамен немесе жұлдызшамен (жұлдызшалар жиыны) берілген.
Тип идентификаторы – жарияланатын айнымалының типін анықтайтын бір немесе бірнеше кілттік сөздер. Си тілінде стандартты мәліметтер типінің жиынтығы бар. Оны пайдаланып мәліметтердің жаңа бірегей (уникальный) типін құруға болады.
Бастаушы – жариялау кезінде айнымалыға меншіктелетін бастапқы мәнді немесе бастапқы мәндердің тізімін береді.
Жады класының спецификаторы – Си тілінің төрт кілттік сөздерінің бірімен анықталады (auto, extern, register, static) және бір жағынан жарияланатын айнымалыға жады қалай үлестірілетінін көрсетеді, екінші жағынан осы айнымалының көруге болатын облысы, яғни оған программаның қандай бөліктерімен көрінуге болады.
Мәліметтер типінің категориялары.
Мәліметтердің негізгі типін анықтайтын кілттік сөздер
Бүтін типтер: Қалқыма (плавающие) типтер:
char float
int double
short long double
long
signed
unsigned
Кез келген типті айнымалы модификацияланбаған түрде жариялана алады. Бұл const кілттік сөзінің тип спецификаторына қосылуымен жүзеге асады. const типті объектілер тек оқу үшін пайдалылатын мәліметтерді көрсетеді, яғни бұл айнымалыға жаңа мән меншіктеле алмайды. Егер const сөзінен кейін тип спецификаторы жоқ болса, онда int типті спецификатор деп түсінілетінін ескерейік. Егер const кілттік сөзі құрама типтерінің (массив, құрылым (структура), қоспа, санап шығу (перечисление)) жариялануның алдында тұрса, онда бұл әр сол сияқты элемент модификацияланбаған болуына әкеледі, яғни оған мән бір-ақ рет меншіктелуі мүмкін.
Мысалдар:
const double А=2.128Е-2ж
const B=286; (const int В=286 деп түсініледі)
Құрама мәліметтердің жариялануы төменде көрсетілетін болады.
Мәліметтердің бүтін типі.
Бүтін типті мәліметтерді анықтау үшін мәліметтер диапазонын және айнымалыға бөлінетін жады облысының өлшемін анықтайтын әр түрлі кілттік сөздер пайдаланылады.
7-Кесте
Типі
|
Жады өлшемі (байтпен)
|
|
Char
|
1
|
-128-ден 127-ге дейін
|
Int
|
IBM XT, AT, SX, DX 2
|
|
Short
|
2
|
-32768-ден 32767-ге дейін
|
Long
|
4
|
-2 147 483 648-ден 2 147 483 647-ге дейін
|
Unsigned shar
|
1
|
0-ден 255-ке дейін
|
Unsigned int
|
IBM XT, AT, SX, DX 2
|
|
Unsigned short
|
2
|
0-ден 65535-ке дейін
|
Unsigned long
|
4
|
0-ден 4 294 967 295-ке дейін
|
signed және unsigned кілттік сөздері міндетті емес екенін ескере кетейік. Олар жарияланатын айнымалының нөлдік битінің қалай түсіндірілетінін көрсетеді, яғни егер unsigned кілттік сөзі көрсетілсе, онда нөлдік бит санның бөлігі ретінде түсініледі, кері жағдайда нөлдік бит таңба (знак) ретінде түсініледі. unsigned кілттік сөзі жоқ болған жағдайда бүтін айнымалы таңбалы деп саналады. Сол жағдайда, егер тип спецификаторы signed немесе unsigned кілттік типтерінен тұрса және әрі қарай айнымалының идентификаторы тұрса, онда ол int типті айнымалы ретінде қарастырылады. Мысалы:
unsigned int n;
unsigned int b;
int c; (signed int с деп түсініледі);
unsigned d; (unsigned int d деп түсініледі) ;
signed f; (signed int f деп түсініледі).
char типті модификатор символды (символдардың массивтен көрінуі) көрсету үшін немесе жолдық әріптерді (литералдарды) жариялау үшін пайдаланылатынын ескерейік. char типті объектінің мәні болып көрсетілетін символға сәйкес код (1 байт өлшемімен) саналады. Орыс алфавитінің символдарын көрсету үшін мәліметтер идентификаторының типінің модификаторы unsigned char түрінде болатындықтан, орыс әріптерінің кодтары 127 өлшемінен асып кетеді.
Ескерту: Си тілінде жадыдағы көрініс және int unsigned int типті модификаторлы идентификаторлар үшін мән диапазоны анықталмаған. signed int типті модификаторлы айнымалы үшін жады өлшемі әр машинада әр түрлі өлшемде болатын машина сөзінің ұзындығымен анықталады. Осылай 16-разрядты машиналарда сөз өлшемі 2 байтқа тең, 32-разрядты машиналарда сәйкесінше 4 байтқа, яғни int типі пайдаланылатын ДЭЕМ-нің архитектурасына байланысты short int немесе long int типтеріне эквивалентті. Осылайша сол бір программа бір компьютерде дұрыс, ал басқа компьютерде қате жұмыс істеуі мүмкін. Орын алатын айнымалының жады ұзындығын анықтау үшін көрсетілген тип модификаторының ұзындығының мәнін қайтаратын Си тілінің sizeof операциясын пайдалануға болады.
Мысалға:
a=sizeof(int);
b=sizeof(long int);
c=sizeof(unsigned long);
d=sizeof(short).
Сонымен қатар сегіздік және оналтылық тұрақтылар да unsigned модификаторына ие бола алады. Бұл u немесе U префиксін (бұл префикссіз тұрақты таңбалы деп саналады) тұрақтыдан кейін көрсету арқылы орындалады.
Мысалға:
0xA8C (int signed);
01786l (long signed);
0xF7u (int unsigned).
Қалқыма типті мәліметтер (данные плавающего типа).
Қалқыма нүктесі бар санды көрсететін айнымалылар үшін келесі тип модификаторлары пайдаланылады: float, double, long double (Си тілінің кейбір жүзеге асыруларында long double жоқ). float типті модификатордың өлшемі 4 байт орын алады. Оның 1 байты таңба үшін, 8 биті артық экспонентаға және 23 биті мантисса үшін кетеді. Мантиссаның үлкен биті әрқашан бірге тең екенін ескерейік, сондықтан ол толтырылмайды, осыған байланысты қалақыма нүктесі бар айнымалының мәнінің диапазоны шамамен 3.14Е-38-ден 3.14Е+38-ге дейін.
Double типінің өлшемі жадыдан 8 бит орын алады. Оның форматы float форматына ұқсас. Жадының биттері келесі түрде үлестіріледі: 1 бит таңба үшін, 11 бит экспонента үшін және 52 бит мантисса үшін. Мантиссаның үлкен битінің түсірілуінің есебінен мән диапазоны 1.7Е-308-ден 1.7Е+308-ге дейін болады.
Мысалдар:
float f, a, b;
double x, y.
Си тілінде жазылған программа препроцессорлар директивасынан, бас айнымалыларды жариялаудан, бір немесе бірнеше функциядан(ішінде біреуі негізгі –main), функция программаның жұмысын басқарады.
Программаның жалпы құрылымы мынадай:
< препроцессорлар директивасы >
< typedef қолданушының типін анықтау>
< функция прототиптері >
<бас объектілерді анықтау>
<функциялар>
Функциялар өз алдына мынадай құрылыммен жазыладыу:
<жады класы> <тип> < функция аты> (<параметрлерді жариялау>)
{ - функция басы
<локальндық объектілерді жариялау>
<амалдар мен операторлар>
} - функция соңы
Негізгі бөлімдерінің жалпы құрылымдарын қарастырайық.
Си тіліндегі программаны компиляциялау кезінде алдымен (препроцессорная) автоматты түрде программаның текст өңделеді. Препроцессорлар директивасының көмегімен программаның тексін өңдеу жолдары беріледі.
Директивалар мынадай тәртіппен жазылады:
барлық препроцессорлы директивалар # символынан бастап жазылады.
Барлық директивалар бірінші позициядан басталады.
# символынан кейін бірден препроцессордың жұмысын тағайындайтын директива аты жазылады.
Ең жиі қолданылатын директивалар #include және #define.
#include директивасы стандартты функцияларды жариялауға мүмкіндік беретін тақырып файлдарын қосуға қолданылады. Файлдың аты үшбұрышты жақшаға < > алынған жағдайда сол файл стандартты директориядан (каталог) ізделінеді. Файлдың аты тырнақшаға “аты” алынғанда файл ағымдағы директориядан ізделінеді.
Мысалы:
#include - файлдық енгізу-шығарудың стандартты функцияларын жариялайтын файлды қосады.
#include - консольмен жұмыс істеу функцияларын қосады;
#include - графиктік функцияларды қосады.
#include - математикалық жункцияларды қосады.
#define (определить) директивасы макроконстанта құрады және оның әсері бүкіл файлға беріледі.
Мысалы: #define PI 3.1415927
Препроцессорлық өңдеу кезінде PI идентификаторы 3,1415927 шамасымен ауыстырылады. .
Программа мысалы:
#include
#include < conio.h> /* препроцессор директивасы */
#define PI 3.1415927
void main() // Негізгі функцияның тақырыбы
{ // функция басы
int num; // num айнымалысын жариялау
num=13 ; // меншіктеу амалы
clrscr(); // экранды тазарту
printf(" \n Тұрақты pi=%7.5f\n %d – бақытты \n”, PI, num);
} // функция соңы
Нәтижесі:
Тұрақты pi =3.1415927
13 – бақытты сан
Программаның тексінен көріп отырғанымыздай амалдар мен операторлар жиыны үтірлі нүктемен аяқталып отырады. Түсініктемелер /* */ символдарының арасына немес // символынан басталып жолдың соңына дейін жазылады.
Шығару функциясы
Информацияны шығару үшін Си тілінде мына функциялар қолданылады.
putchar() функциясы бір орынды сиволды басады.
puts() функциясы символдар жолын шщығарып, курсорды жаңа жолға көшіреді.
printf() функциясы форматталған мәндерді шығарады. Оның форматы:
рrintf (<басқарушы жол>, <агументтер тізімі>);
Басқарушы жол тырнақшаға алынып, компиляторға шығарылатын информацияның типін білдіреді. Оның құрамына түрлендіру амалдары, басқарушы символдар кіруі мүмкін. Тү.рлендіру форматы:
% <флаг> <өріс өлшемі. Дәлдігі> спецификация
мұндағы флаг мына мәндерді қабылдауы мүмкін:
- шығатын санның сол жағына түзулеу;
+ оң сан таңбасы;
өріс ұзындығы – санның ұзындығы, санға орын жетпегенде автоматты түрде ұзарады.
Дәлдік –санның бөлшек бөлігінің ұзындығы;
Спецификация- шығатын информация түрі. Баспаға шығару функциясының негізгі форматтарын келтірейік:
6-Кесте
Формат
|
Информации типі
|
%d
|
Ондық бүтін сан (десятичное целое число)
|
%c
|
Бір символ
|
%s
|
Символдар жолы
|
%e
|
Жылжымалы үтірлі сан (экспоненциалдық жазылуы)
|
%f
|
Жылжымалы үтірлі сан (ондық жазылуы)
|
%u
|
Таңбасыз ондық сан
|
%o
|
Таңбасыз сегіздік сан.
|
%x
|
Таңбасыз оналтылық сан
|
Ұзын сандар(long, double) үшін қосымша l форматы қолданылады .
Мысалы: %ld – ұзын бүтін, %lf – екі еселі дәлдікпен нақты сан.
% символының өзін шығару қажет болғанда оны екі рет жазу қажет.
Мысалы: printf("Жалақының %d%% салыққа кетеді.\n",30);
Нәтижесі: Жалақының 30% салыққа кетеді.
Басқарушы жолға мына басқарушы символдар қатыса алады:
\n – жаңа жолға көшу;
\t – көлденең және \v –тік табуляция;
\b – бір символ кейін;
\r – жолдың басына қайту;
\f – қағазды жаңа парақтың басына қайтару;
\a – дыбыстық сигнал;
\ddd – 8-дік ASCII-код;
\xhhh – 16-тылық код;
\? – сұрақ белгісі.
Аргументтер тізімі – баспаға шығарылатын объектілер қатарын тұрақтылар, айнымалылар, өрнектер жатады. Мәндері алдын ала есептеледі. Аргументтер саны мен типтері басқарушы жолдағы форматқа сәйкес болуы тиіс.
Мысалы:
#include
#define PI 3.1415926
main()
{
int number=5, cost=1000, s=-777;
float bat=2500, x=12.345;
printf ("%d студент %f стипендия алады.\n", number, bat);
printf ("pi саны тең%f.\n", pi);
printf ("Си тілін оқы.\n");
printf ("Заттың бағасы %d%s.\n", cost,"Тенге.");
printf ("x=%-8.4f s=%5d%8.2f ", x, s, x);
}
Енгізу функциялары
getch () функциясы бір орынды символды енгізуге қолданылады.
gets () функиясы символдар жолын ENTER басылғанша енгізеді. scanf функциясы кез-келген типті информацияны форматтап енгізуге қолданылады. Жалпы түрі:
scanf (<басқарушы жол>, <адрестер тізімі>);
scanf үшін де printf () функциясы сияқты басқарушы жол жазылады. Обірақ scanf()функциясы адрестер тізімінде айнымалылардың көрсеткішін қамтиды. Көрсеткішті белгілеу үшін & белгісі айнымалының алдына жазылады. Символдар жолын енгізу үшін & белгісі қолданылмайды. %s форматын қолданғанда жол бірінші пробелға дейін қабылданады. Мәндерді бір жолда пробел арқылы немесе әр жолда енгізуге болады.
Енгізу ерекшелігін мына программа үзіндісімен көрсетейік.
int course;
float grant;
char name[20];
printf ( "Оқитын курсынды, стипендияңды, атыңды көрсет, \n");
scanf ( "%d%f", &course, &grant);
scanf ( "%s", name); /* & символдар жолы үшін жазылған жоқ */