АЛМАТЫ ЭНЕРГЕТИКА ЖӘНЕ БАЙЛАНЫС ИНСТИТУТЫ

 

Инженерлік кибернетика кафедрасы

 

 

 

 

 

Информатика. С++ тілінің негіздері

5 бөлім

Зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар

 (барлық мамандықтың студенттері үшін)

 

 

 

 

 

 

 

Алматы 2006

 

ҚҰРАСТЫРУШЫЛАР: Л.К.Ибраева, Н.В.Сябина. Информатика. С++ тілінің негіздері. 5 бөлім. Зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар  (барлық мамандықтың студенттері үшін). - Алматы: АЭжБИ, 2006.- 36 б.

 

«Ақпараттану» пәнінің әдістемелік нұсқаулары 6 бөлімден тұрады: 1 және 2 бөлімдер Windows операциялық жүйемен, MS Word, MS Excel, MS Access офистық қолданбалармен, сызбалық Correl Draw  редакторымен, Интернетпен жұмыс жасаудың әдістемелік нұсқауларынан тұрады. Қалған бөлімдер бағдарламалау негіздерін қарастырады: 3 және 4 бөлімдер – Turbo Pascal тілінде бағдарламалауды, 5 және 6 бөлімдер – С++ тілінде бағдарламалауды.

Ұсынылып отырған зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар (5-ші бөлім) ақпараттану және бағдарламалаудың технологиялары пәндерінде оқылатын «Бағдарламалаудың негіздері» бөлігін бірінші курс студенттеріне өз бетінше оқуға көмек ретінде өңделген және әртүрлі алгоритмдерді бағдарламадауды практикалық үйренуге бағытталған.  Әрбір зертханалық жұмыста оны орындауға арналған, нақты мысалдармен бекітілген және қажетті түсіндірмелер, сонымен қатар тапсырмалар нұсқалары мен бақылау сұрақтары көрсетілген теориялық мағлұматтар беріледі. Қосымшада барлық қажетті материалдар бар.

Әдістемелік нұсқаулар  барлық мамандықтың студенттеріне арналған. 

 

Без. 1, кесте. 7, библиогр. – 10 атау.

 

 

 

 

 

Пікір беруші: тех. ғыл. канд., доц. Имангалиев Ш.И.

 

 

 

 

 

            Алматы энергетика және байланыс институтының 2006 ж. жоспары

бойынша баспаға басылады.

 

 

 

                                          © Алматы энергетика және байланыс институты, 2006 ж.

 

 

 

Кіріспе

 

С++ бағдарламалау тілі нысанды-бағытталған тіліне қажетті құралдармен С бағдарламалау тілін кеңейту мен қосу нәтижесінде АҚШ-та Bell Laboratories компаниясының қызметкері Бьерн Страуструппен (Bjarne Stroustrup) 80-ші жылдардың (20 ғ.) басында өңделген.  Коммерциялық бағдарламалық өнімдерді қолданатын қазіргі тілдер арасында С++ тілі басты және әмбебап тілі болып табылады. Тек қана Java тілі оған бәсекелес бола алады деп есептеуге болады. С++ тілінің бір түрі Microsoft фирмасымен желілік платформаға өңделген С# тілі болады. Кейбір принципиалды айырмашылықтарына қарамай С++ пен С# тілдері 90% -ға сәйкес болады.

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

Тілдің негізгі  ерекшеліктері:

- көбісі машиналық бұйрықтарға сәйкес, сондықтан тікелей машиналық шарттаңбаларға аударылатын, С++ тілінің көптеген операциялар жиынтығы бар; олардың түрлері көп болғандықтан, нәтижелі шарттаңбаны минималдау үшін әртүрлі жиындарды таңдауға болады;

-          С++-тің мәліметтерінің базалық типтері Ассемблер тілінің базалық типтерімен бірдей, типтерді түрлендіруге аз шектеулер қойылады;

-          С++ тілінің көлемі зор емес, себебі барлық орындалатын функциялар қосындыланатын библиотека түрінде дайындалған; сонымен бірге С++ тілі құрамдық бағдарламалау технологиясын толық сүйемелдейді және сәйкес операторлардың толық жиынтығын қамтамасыздандырады;

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

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

Қазіргі кезде Borland International фирмасы С++-тің бірнеше компиляторын өңдеген. Бірақ тілдің ерекшеліктерін оқу үшін компилятордың ең соңғы версиясы қажет емес, ол тек қана күрделі, үлкен бағдарламаларды жазуға қажет.

Ұсынылып отырған зертханалық жұмыстарды орындауға әдістемелік нұсқаулар (екі бөлімде шығарылады) ақпараттану және бағдарламалау технологиялары пәндерінде оқылатын «Бағдарламалау негіздері» бөлігін бірінші курстағы студенттер өз бетінше үйренуге көмек болады. С++ тілінде бағдарламалаудың негіздерімен бірге мысалдар және қажетті түсініктемелер қарастырылады және 90-шы жылдары Turbo Pascal 7.0 бағдарламасымен бағдарламалық өнімдер нарығында бірге пайда болған С++ компиляторының 3.1 версиясына негізделген. Қосымшаларда барлық қажетті анықтама ақпарат орнатылған.

Жақсы нәтижеге жету үшін ұсынылған тақырыптарды оқу кезінде келесі жалпы талаптар мен кеңестерді орындау қажет:

-                      зертханалық сабаққа дайындалып, оны орындаған кезде студенттер блок-сұлбаларды жасауды және практикалық бағдарламалауды үйренді, тіл операторларын тиімді қолдануды, алынған нәтижелерді талдауды үйренді;

-                      зертханалық жұмысты орындау алдында студент оның бейнелеуімен ұқыпты танысып, ұсынылатын теориялық тақырыптарды оқиды (қажет болса, қосымша әдебиетті қарап шығу керек), отчет бланкі дайындалады, оған орнатылған түрі бар титулды бет, жұмыс мақсаты, тапсырма вариантының мәтіні, блок-сұлба, бағдарлама листингі, бақылау сұрақтарға жауаптар кіреді. Тапсырма вариантын мұғалім береді. Жұмысқа дайындалмаған студенттер зертханалық жұмысқа кіргізілмейді;

-                      компьютерде жұмысты орындаған кезде студент алынған нәтижелерді талқылап, жауаптарын нәтижелерді тіркеу кестесіне енгізеді. Отчет мұғаліммен қабылданады, егер де ол орнатылған талаптарға сәйкес болмаса, студентке жөндеуге қайтарылады;

-                      студенттің жасалынған отчеты мұғаліммен келісілсе, студент зертханалық жұмысты қорғайды; зертханалық жұмысты қорғау түрі кафедра кепілдемелеріне қарай мұғалімнің өзімен таңдалынады.

 

 

1 № 1 зертханалық жұмыс. Тілдің негізгі түсініктемелері. Мәліметтердің стандартты типтері. Меншіктеу операторы

 

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

 

1.1  С++ тілінің негізгі түсініктемелері

С++ тілінде бағдарламаны жазғанда келесі түсініктемелер қолданылады: алфавит, тұрақтылар, идентификаторлар, қызмет сөздер, түсініктемелер, директивалар.

Тілдің барлық конструкцияларын құрамдастыратын осы тілдің символдар жиынын алфавит деп аталады. С++ тілі келесі символдар жиынын қолданады;

- латын үлкен және кіші әріптер (А, В, С, ..., х, у, z);

- араб цифрлары (0, 1, 2, ..., 7, 8, 9);

- астынан сызып қою символы («_»);

- арнайы символдар (С++ тілінің арнайы символдар тізімі А1-кестеде келтірілген);

- бөлгіш символдары (бос орын, түсініктемелер, жол аяқталуы, т.б.).

Аталып кеткен символдар көмегімен аттар, кілттік (қызмет) сөздер, сандар, символдар жолдары және белгілер құрастырылады.

Идентификаторлар (аттар) бағдарламаға енгізілетін барлық нысандарды (айнымалылар аттары, тұрақтылар, функциялар, типтер, белгілер, т.б.) белгілеу (идентификациялау) үшін қолданылады. Аттар міндетті түрде латын әріпінен немесе астынан сызып қою символынан «_» басталады, олардан кейін кез-келген комбинацияда латын әріптері мен цифрлер орнатылады. С++ үлкен және кіші әріптерді бөледі. Аттарда арнайы символдарды және бөлгіш символдарды қолдануға болмайды. Мысалы,

_х, В12, Stack              - дұрыс;

Label.4, Root-3             - дұрыс емес.

Идентификаторларда үлкен және кіші әріптерді қолдану туралы кейбір келісімдер бар. Мысалы, айнымалылар аттары тек қана кіші әріптерден, тұрақтылар мен макростар – үлкен әріптерден тұрады. Астынан сызып қою символынан әдетте жүйелік резервіленген айнымалылар мен тұрақтыларының аттары және библиотекалық функцияларда қолданатын аттар басталады. Сондықтан мүмкін болатын конфликттерден сақталу және библиотекалық аттармен сәйкеспес үшін астынан сызып қою символын аттың бірінші символы ретінде қолданбаңыз.

Компиляторға арнайы мәні бар кейбір идентификаторлар кілттік сөздер ретінде қолданылады. Оларды қолдану тура анықталған, олар басқа жерде қолданылмайды. С++ тілінің резервіленген сөздер тізімі А2-кестеде келтірілген. Әр компилятор кілттік сөздердің санын көбейте алады, себебі өзі міндеттелген компьютердің қосымша мүмкіндіктерін есепке алады.

Көшу белгілері символдық-цифрлық конструкция болады, мысалы, metkal, pass, cross. С++ тілінде белгілер жарияланбайды.

Символдар жолы  - қос тырнақшаға алынған символдар тізбегі. Мысалы, «Символдар жолы».

Компилятор есепке алмайтын, бағдарламаның бастапқы мәтіні оқуға ыңғайлы болу үшін орнатылатын бағдарламаның бөлігі - түсініктеме болады (белгілі ережемен орнатылған түсініктемелеу мәтін). Компиляция кезінде түсініктеме бос жолмен алмастырылады, сондықтан ол бағдарламаның бос жол рұқсат етілген кез-келген жерінде орнатылады.  С және С++ тілдерінде кез-келген /* */ шектеу жақшаларға алынған символдар тізбегі көпжолды түсініктеме ретінде қарастырылады, Мысалы,

/*Бас бағдарлама*/.

С++ тілінде қосымша тағы бір – бір жолды түсініктеме түрі бар: // (екі слеш) белгісінен кейін орнатылған барлық символдар  түсініктеме ретінде қабылданады, мысалы,

//Бас бағдарлама.

Бағдарламалаушылардың көбісі С++ тілінің (//) түсініктемесін қолданады, ал С тілінің түсініктемесі (/* */) бағдарламаның үлкен бөліктерін уақытша өшіру үшін қолданады. Бірақ түсініктемелер бағдарлама шарттаңбасының аудармасы болмау керек, ал түсінікті жерді түсіндіретін түсініктемелердің пайдасы жоқ. Түсініктемелер операторларды емес, олар не үшін бұл жерде қолданылатынын түсіндірулері керек.

Бүтін және нақты мәндерді көрсететін сандар ондық есептеу жүйеде жазылады. Кез-келген санның алдында «+» немесе «-» болуы мүмкін. Нақты санды оның бүтін бөлігі бөлшек бөлігінен нүктемен бөледі. Ондық нүктесі бар нақты санның нүктесінің алдында немесе одан кейін ең кемінде бір цифр болуы керек.

Препроцессор директивасы – С-бағдарламаның бастапқы мәтінінде жазылған, препроцессормен орындалатын нұсқау.

 

1.2           С++ тіліндегі бағдарламаның құрамы

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

С++ тіліндегі бағдарламаның құрамы 1.1 - суретте келтірілген.

С++ тілінде кез-келген бағдарлама басты файлды (*.h) қосатын  #include директивасынан басталады. Басты файл компиляторға функцияның синтаксисі туралы хабар беретін функциялардың прототиптерінен тұрады, мысалы,

# include   <iostream.h>

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

Кез-келген С++ тіліндегі бағдарлама ең кемінде бір main ()  функциядан тұрады. Бұл функция бағдарламаны жұмысқа қосқанда автоматты түрде шақырылады және бағдарламаның басқа функцияларын шақыра алады. Функция келесі түрде жазылады:

void main ( )

Әдетте функцияны шақыру (оған қатысу) шарттаңба орындалған кезде бағдарламадан орындалады. main () функциясы операциялық жүйемен шақырылады, оған бағдарлама шарттаңбасынан қатысу мүмкін емес. Void сөзі бағдарлама белгілі мәнді қайтармайтынын белгілейді. Егер де мән операциялық жүйеге қайтарылуы керек болса, main () функциясының алдында int сөзі, ал функция денесінің соңында return() немесе return0 өрнегі орнатылады.

Басты функцияны анықтағаннан кейін топтастыратын { } жақшаларда бағдарлама операторлары орнатылады. Әр оператор үтірлі нүктемен (;) аяқталады. Бағдарлама жолдар бойынша олардың бастапқы шарттаңбада орнатылу ретімен тізбектеліп орындалады, орындалу әлдеқандай функция кездескенше жалғасады, кері жағдайда басқару осы функцияның жолдарына тапсырылады. Функция орындалып болғаннан кейін басқару функцияны шақыру жолдан кейінгі бағдарламаның жолына тапсырылады. Функциялар толық кейінірек қарастырылады.

        

#include <имя.h>

Басты файлдарды қосу

function1 ( )

{

  оператор;

}

 

function2 ( )

{

  оператор;

}

Бағдарламаның функцияларын анықтау

void main ( )

Басты функцияны анықтау

{

Бас функцияның денесінің басы

  оператор 1;

  оператор 2;

 

  оператор 3;

Функцияның операторлары

function1 ( );

function2 ( );

Бағдарлама функцияларын шақыру

}

Бас функциясының денесінің соңы

1.1 сурет. С++ тіліндегі бағдарламаның құрамы

 

1.3 Мәліметтердің стандартты типтері

1.3.1 Мәліметтердің базалық типтері мен олардың көлемі

Мәліметтерді анықтағанда компиляторға олардың типтері туралы ақпаратты беру қажет. Осы ақпаратқа байланысты компилятор мәліметтерді сақтауға қажет орын көлемін анықтайды және онда қандай мән болатынын біледі.

С++ тілінде мәліметтердің бес базалық типтері анықталған: символдық (char), бүтін (int), жылжымалы үтірі бар нақты (float), екі еселі ұзындығы бар жылжымалы үтірі бар нақты (double) және бос, мәні жоқ тип (void).

Аталып кеткен типтер негізінде барлық қалғандары құрастырылады. Сәйкес типтің алдында қойылатын типтердің модификаторларын қолдану құрастырудың қарапайым әдісі болады: белгілік (signed), белгісі жоқ (unsigned), ұзын (long) және қысқа (short). А3-кестеде модификаторларының әртүрлі комбинацияларымен, өзгеру диапазонымен және байтпен көрсетілген алатын орын өлшемімен мүмкін болатын типтердің барлығы келтірілген.

Бағдарламада қайта-қайта мәліметтер типтерінің модификаторларының әртүрлі комбинацияларын, мысалы,  unsigned short int қайта-қайта қолданғанда синтаксис қателер жеңіл пайда болуы мүмкін. Оларды жою үшін С++ тілінде typedef қызмет сөзі көмегімен псевдонимдерді (синонимдерді) жасау мүмкіндігі бар. Мысалы, typedef unsigned short int USHORT; жолы жаңа USHORT псевдонимді құрастырады, ол unsigned short int жолды жазу керек болатын барлық жерде қолданылады.

1.3.2 Айнымалылар, тұрақтылар, символдар

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

Типі <айнымалылар_тізімі>;

Бұл жариялауда: типі – бар болатын типтердің біреуі; <айнымалылар_тізімі>  жалғыз немесе үтірлермен бөлінген бірнеше айнымалылардан тұрады. Мысалы;

int x, e, z;

float radius;

long double integral;

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

int min=15; float p1=1.35;

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

-         екі ауқымды айнымалының аттары бірдей болмауы керек;

          -  бірдей емес функциялардың жергілікті айнымалыларының аттары бірдей болуы мүмкін;

- бір блоктың екі жергілікті айнымалыларының бірдей аттары болмауы керек.

Бағдарламалау тілдерде мәліметтер тұрақтылар түрінде көрсетілуі мүмкін.  Кейбір айнымалының мәнін бағдарламада өзгертуге болмаса тұрақтылар қолданылады. Тұрақтыны анықтау үшін әдетте мәтіндік ауыстыруды орындайтын #define қызмет сөзін қолдануға болады. Мысалы,

#define StudentsOfGroup 15

Мысалда StudentsOfGroup тұрақтының белгілі мәні жоқ, препроцессор осы атты кездескен сайын оны 15 литералға алмастырады. Препроцессор компилятордан бұрын жұмысқа қосылатын болғандықтан, компилятор тұрақтыны көрмейді, тек 15 санын көреді.

Тұрақтыны анықтаудың ең ыңғайлы жолы келесі:

const типі  тұрақты _аты = тұрақты _мәні;

Бұл әдіс қателерді қақпайлайды және бағдарламаның жанамалауын жеңілдетеді. Тұрақтыны жариялауда оның типі орнатылады, сондықтан компилятор оның айтылған типі бойынша қолдануын аңдыйды. Мысалы,

const int Diapazon=20;

Тікелей бағдарлама мәтініне енгізілетін мәндер литералдық тұрақтылар (литералдар) болып табылады. Компиляциядан кейін литералдардың мәндерін өзгертуге болмайды, сондықтан оларды да тұрақтылар деп атайды. Мысалы,

int MyAge=19; өрнекте MyAge аты int типті айнымалы болады, ал 19 саны – литералды тұрақты, оған ешқандай басқа мәнді меншіктеуге болмайды.

Символдық тұрақты апострофтар (жалғыз тырнақшалар) ішіндегі жалғыз символдан тұрады: ‘q’, ‘2’, ‘$’. Мысалы,

const char month=’December’;

Символдық тұрақтыларға арнайы символдар қатысады (соның ішінде тізімі А1-кестеде келтірілген басқару символдары).

Жолдық тұрақтылар тырнақшаға алынған, нөлдік байтпен аяқталатын, ASCII шарттаңба символдарының тізбектерінен тұрады. Символдық жолдың соңы (нөлдік байт) NULL ('\0') символымен белгіленеді.

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

enum тұрақты_аты {тұрақтының_мәндер_тізімі};

Тұрақтылардың мәндері мәндер тізімінде үтірмен бөлінеді. Мысалы,

enum COLOR {RED, BLUE, GREEN, WHITE, BLACK};

Санап шығу тұрақтының әр элементіне белгілі мән сәйкес болады. Үнсіз келісім бойынша бірінші элементтің мәні 0 болады, ал әрбір келесі элемент бірге көп. Тұрақтының әр элементіне кез-келген мәнді меншіктеуге болады, онда келесілердің мәндері алдыңғы элементтің мәнінен бірге көп болады. Мысалы,

enum COLOR {RED=100, BLUE, GREEN=200, WHITE=300, BLACK};

Бұл мысалда RED=100, BLUE=101, GREEN=200, WHITE=300, BLACK=301 болады.

Суффикстер көмегімен тұрақтылардың типтерін ашық беру механизмі бар. Бүтін типті тұрақтылар үшін суффикстер ретінде u, l, h, L, H, ал орнын өзгертетін нүктесі бар сандар үшін -  l, L, f, F әріптерін қолдануға болады.  Мысалы,

12h 34H                                 - short int

23L -273l                               - long int

23.4f 67.7E-24F                     - float

89uL 89Lu 89ul 89 LU                  - unsigned short

 

          1.3.3 Өрнектер, операциялар, операторлар

С++ тілінде операциялар мен операндтардың (тұрақтылар, айнымалылар және функциялар) кейбір рұқсат етілген комбинациясы өрнек болады. С++ тілінің операциялар тізімі А4-кестеде келтірілген. Бөлу операциядан басқасының бәрі дәстүрлі әдісімен орындалады. Бөлу операцияның ерекшелігі келесіде болады: егер де операндтардың екеуі де бүтін типті болса, нәтижесі бүтін типті болады, мысалы 3/2 нәтижесі 1. Нақты нәтижені алу үшін, операндтың ең кемінде біреуі нақты типті болуы керек, мысалы, 3/2.0 нәтижесі 1.5.

Тілдің әрбір операциясы үшін операндтар саны белгіленген:

)                     белгіні өзгертетін унарлық операциясы үшін – жалғыз операнд; мысалы, унарлық минус –х; 

)         бинарлық операциясы үшін – екі операнд; мысалы қосу операциясы х+у;

)         Шарт ?:  операциясы үшін – үш операнд; бұл операция жалғыз.

Әрбір операцияның операндтарының белгілі типі болады. Әрбір бинарлық операцияның белгілі орындау тәртібі бар: солдан оңға немесе оңнан солға. Сонымен бірге әр операцияның өзінің приоритеті бар. Операциялардың приоритеті мен орындау тәртібі А4-кестеде келтірілген.

INCLUDE каталогында орнатылған math.h библиотекасындағы С++ тілінің математикалық функциялары өрнектерде жиі қолданылады. Осы функцияларды пайдалану үшін бағдарлама басына #include <math.h> бас файлын қосу керек. Негізгі математикалық функциялар А5-кестеде келтірілген.

Барлық өрнектер операторлар болып табылады.

С++ тілінде операторлар әрекеттерді бейнелеуге негізделген. Кез-келген оператор белгімен белгіленуі мүмкін. Операторлар бір-бірінен үтірлі нүктемен (;) бөлінеді.

Бағдарламаның кез-келген жалғыз оператор орнатылатын жеріне, блок деп аталатын құрамды операторды орнатуға болады. Блоктың бейнелі жақшаларға алынған ({}), бірақ үтірлі нүктемен (;) аяқталмайтын бір оператор ретінде орындалатын бірнеше операторы болады.

Айнымалыны жариялау - бұл компьютер жадысында оған орын бөліп қою. Ал бағдарлама тек қана мәліметтермен әрекет жасауға мүмкіндік береді. Бұл процесте меншіктеу операторы өте маңызды. Оның түрі:

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

Мешіктеу операторы «=» белгісінің сол жағындағы операнд мәнін, оң жақтағы есептелген мәнмен алмастырады. Сонымен бірге ашық емес типтерді түрлендіру орындалуы мүмкін. С++ тілінде «=» белгісі теңдікті емес, меншіктеуді білдіреді.

Басқа бағдарламалау тілдерінде меншіктеу – анықтама бойынша оператор болады, С++ тілінің ерекшелігі – бұл тілде «меншіктеу операциясы» және  «меншіктеу операторы» түсініктемелері бар.  Егер өрнек соңында үтірлі нүкте орнатылса, операция операторға «түрленеді», мысалы  ++x – өрнек болып табылады, ал ++х; - оператор болады. Меншіктеу операторды айнымалыны инициализациялаған кезде қолдану ыңғайлы, мысалы, j=k;. Сонымен бірге С++ тілінде меншіктеу операторды құрамдарында салыстыру немесе логикалық операторлары бар өрнектерде қолдануға болады, мысалы,

if ((x=x+5)>0) cout<<"Шығару";

Бұл мысалда әуелі айнымалының мәні 5-ке көбейеді, содан кейін оның мәні нөлмен салыстырылады.

Меншіктеу операторының С++ тілінде қолданудың тағы бір ерекшелігі оңнан солға қарай орындалатын көпретті меншіктеуді қолдану мүмкіншілігі. Мысалы, 2*k мәнін бірнеше айнымалыларға меншіктеу үшін, келесі меншіктеу операторын қолдануға болады: x=y=z=2*k.

С++ тілінде қосымша меншіктеу операторлары бар: +=, -=, *=, /= и %=.  Бұл операторларда оң жақтағы мән сол жақтағы мәнге қосылады (алынады, көбейтіледі, бөлінеді немесе модуль бойынша бөлінеді). Мысалы, х=х+5; оператордың орнына х+=5;  деп жазуға болады. х+=5 операциясы х=х+5 операциясынан тез орындалады.

Бағдарламаларда жиі қолданылатын әрекет - айнымалыларға бір мәнін қосу немесе алу. С++ тілінде бірлікке өсіру инкремент (++), ал бірлікті алу – декремент (--) деп аталады. Мысалы, с=с+1; операторы с++; операторына, ал

с=с-1; операторы с--; операторына эквивалентті.

Инкремент және декремент операторлары екі вариантта болады: префиксті және постфиксті.

Префиксті операциялар айнымалының мәнін бірге өсіреді (немесе кемітеді), содан кейін алынған мәнді қолданады. Мысалы, х=++у; операторы келесі у=у+1; х=у; екі операторды орындағанға эквивалентті. Бұл мысалда, әуелі у мәні бірге өседі, содан кейін алынған мән х айнымалысына меншіктеледі.

Постфиксті операциялар әуелі айнымалы мәнін қолданады, содан кейін оны өсіреді (кемітеді).  Мысалы, х=у--; операторы х=у; у=у-1; операторларды орындағанға эквивалентті. Мысалда х айнымалысы у мәнін қабылдайды, содан кейін у мәні бірлікке кемиді.

 

1.3.4 Типтерді түрлендіру

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

)                     мәндерінің кіші диапазондары бар операндтар үлкен диапазондары бар операндтарға автоматты түрде түрленеді, себебі бұл кезде ақпарат жойылмайды;

)                     мағынасы жоқ өрнектер (мысалы, индекс рөліндегі орны өзгеретін нүктесі бар сан) компилятормен трансляциялау кезінде жіберілмейді;

)                     ақпарат жойылуы мүмкін болатын өрнектер (мысалы, ұзын бүтін мәндерді қысқа мәндерге немесе нақты мәндерді бүтін мәндерге меншіктегенде) ескертулерді (warning) тұдырады, бірақ оларға рұқсат бар.

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

(тип аты) өрнек;

Мысалы,  (int) i=2.5*3.2;

Бірақ бұл операторды тек қана түрлендірудің мақсаты мен оның салдарлары түсінікті болса қолдануға болады.

 

1.4 Зертханалық жұмысқа тапсырма

Turbo С++ ортасының (немесе C++ Builder консолді қолданбалы ортасының) ерекшеліктерін оқып, сол ортада бағдарламаның келесі дайындамасын теріңіз:

#include <math.h>

#include <math.h>

void main ()

{

// айнымалыларды инициализациялау

// өрнекті есептеу

cout<<”Result=”<<y;

// нәтижелік айнымалыға операцияны қолдану

cout<<”Result operation”<<y;

}

          1.4.1 Стандартты математикалық функциялар библиотекасын қолданып вариант бойынша (1.1-кестесі) арифметикалық өрнекті жазыңыз.

1.4.2 Мәліметтердің белгілі типтерін қолданып барлық кіріс айнымалыларды инициализациялаңыз, шығудағы айнымалыларды жариялаңыз. 

1.4.3 Айнымалылар мен өрнекті бағдарлама дайындамасында орнатыңыз.

1.4.4 Нәтижелік айнымалыға вариантта көрсетілген операцияны қолданыңыз.

 

1.1 кестесі. Тапсырмалар варианттары

Вариант№

Арифметикалық өрнек

Кірістегі айнымалылар

Тұрақ-

тылар (const)

Операция

1

a, b

c

инкремент

2

x, z

a

декремент

3

x, z

a

*= const

4

a, b

c

-=const

5

x, z

a

+=const

6

a, b

x

/=const

7

x, z

a

декремент

8

x, z

b

декремент

9

a, b

x

*= const

10

a, b

x

-=const

11

x, z

a

+=const

12

x, z

b

/=const

13

x, z

b

инкремент

14

x, z

b

декремент

15

x, z

a

*= const

16

a, b

x

-=const

17

x, z

b

+=const

1.1-кестенің жалғасы

18

a, b

x

/=const

19

a, b

x

инкремент

20

x, z

a

инкремент

21

x, z

a

*= const

22

x, z

a

-=const

23

a, b

x

+=const

24

a, b

c

/=const

25

a, b

x

инкремент

26

a, b

x

декремент

27

a, b

x

*= const

28

x, z

a

-=const

29

a, b

c

+=const

30

x, z

a

/=const

 

 

 

1.5 Бақылау сұрақтары

1.5.1 Айнымалыларды идентификациялау кезінде тілдің қандай ерекшелігін есепке алу керек? Айнымалы қалай инициализацияланады?

1.5.2 Қажетті библиотекалар қалай қосылады? Олар қай жерде орнатылады?

1.5.3 С++ тілінде түсініктемелердің қандай типтері бар, олардың айырмашылығы?

1.5.4 main() функцияның ерекшеліктері неде?

1.5.5 Мәліметтердің базалық типтерін келтіріңіз. Жаңа типтерді алу үшін қандай модификаторлар қолданылады?

1.5.6 С++ тілінің меншіктеу операторының ерекшелігі.

1.5.7 #define директива орнына const қызмет сөзін қолданудың артықшылығы?

1.5.8 Санап шығатын тұрақтылар деген не, олар қалай жарияланады?

1.5.9 Өрнектер мен операциялар деген не? Операндтардың қандай типтері болады?

1.5.10 Типтерді түрлендіру қандай мақсатпен орындалады және түрлендіргенде қандай ережелерді орындау қажет?

 

 

2 №2 зертханалық жұмыс. Сызықты құрылымды және тармақталып   құрылған алгоритмдерді бағдарламалау

 

Жұмыс мақсаты – мәліметтерді енгізу-шығару және басқаруды беру операторларымен сонымен бірге сызықты және тармақталып   құрылған алгоритмдерді бағдарламалау ерекшеліктерімен танысу.

 

2.1 Сызықты құрылымды алгоритм және енгізу-шығару операторлары

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

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

Форматты енгізу-шығаруды орындау үшін #include <stdio.h> басты файл көмегімен қосылатын printf және scanf екі функциясы жиі қолданылады. С++ тілінде бұл функцияларды қолдану С тілінен қалған.

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

printf (“басқару_жолы”, аргументтер_тізімі);

Тұрақтылар, айнымалылар және өрнектер тізбегі аргументтер_тізімі болады. Олардың мәндері әдетте аргументтерінің санын және типін белгілейтін басқару жол форматына сәйкес экранға шығарылады; басқару жолдың келесідей нысандары болады:

 - экранға өзгертілмей шығарылатын әдеттегі символар;

 - түрлендірудің спецификациялары; әдетте олардың әрқайсысы

аргументтер тізімінен ретті аргументті экранға шығарады;

 - басқару символдық тұрақтылар (жиі қолданылатын тұрақтылар тізімі А1-кестесінде келтірілген).

Түрлендіру спецификациялары % символынан басталады және түрлендіру символымен (А6-кестесі) аяқталады, олар арасында келесі символдар орнатылуы мүмкін:

  - шығарылатын мәтін сол жақ шегімен түзетілуін көрсететін «минус» белгісі, үнсіз келісімдер  бойынша түзетілу оң жақтағы шекте болады;

- шығару өрісінің минималды өлшемін анықтайтын цифрлер жолы;

- бөліндіруді көрсететін нүкте;

- шығару дәлдігін көрсететін цифрлер жолы;

- сәйкес аргументтің типі long болатынын көрсететін l символы.

 Мысалы,

 printf ("\nЭриктің жасы - %d. Оның табысы $%.2f ", age, income);

Бұл мысалда age (жасы) бүтін және income (табысы) нақты айнымалыларына кейбір мәндер меншіктелген деп есептелінеді.  \n символдар тізбегі көрсеткішті жаңа жолға түсіреді, сондықтан «Эриктің жасы» символдар тізбегі жаңа жолдың басынан шығарылады. %d символдар age айнымалының форматын түрлендіру символдары (спецификациялары) болады. Одан соң «Оның табысы $» литерлық жолы және %.2f  символдары (income айнымалының мәндерінің спецификациясы) символда орнатылады және ондық нүктеден кейін екі цифрдs шығару керек деген формат көрсетіледі.

Шығару функциясы scanf енгізу printf функциясы сияқты бейнеленеді:

scanf (“басқару_жол”, аргументтер_тізімі);

Осы scanf  функцияның аргументтері сәйкес мәндерге көрсеткіштер болып табылады (көрсеткіштер кешірек толық қаралады), осы мақсатымен айнымалы алдында & символы орнатылады. Басқару жолы printf  функциясындағыдай түрлендіру спецификацияларынан тұрады және аргументтер санымен типтерін орнатуға қолданылады. Бұл жолда енгізгенде есепке алынбайтын бос жолдар, табуляция символдарын және жаңа жолға көшу символын қолдануға болады. Басқару жолда түрлендіру спецификациялары пернетақтадан енгізгенде қолданатын символдармен бөлінуі керек. Мысалы,

scanf (“%d %f %c”, &i, &a, &ch);

1.1 мысалы – Берілген сыртқы R және ішкі r радиустерін қолданып, бос шардың бетінің аймағын S және көлемін V есептейтін бағдарламаны құрастырыңыз. S және V есептеу формулалары S = 4p (R2-r2), V = 4/3p (R3-r3).

#include <stdio.h>                                    //басты файлдарды қосу

#include <math.h>

#define Pi 3.1415926                                // Pi тұрақтысын анықтау

void main ( )

{

double S, V;

float R, r;

printf (“Сыртқы R және ішкі r радиустерді енгізіңіз:”);

scanf (“S=%g,V=%f\n”,S=4*Pi*(R*R-r*r),V=4/3*Pi*(pow(R,3)-pow(r,2)));

}

С/С++ тілдердегі бағдарламалар құрылғылар және файлдармен емес, ағындармен жұмыс істейді. Ақпаратты енгізу кірістегі ағыннан, шығару – шығудағы ағыннан орындалады, ал ағындар құрылғымен немесе файлмен байланысты болады. С++ тілінде құрылғыдан тәуелсіз енгізу-шығарудың концепциясы нысанды-бағытталған iostream енгізу-шығарудың библиотекасы ретінде әрі қарай дамыды. Осы библиотекаға мәліметтерді экранға шығаруға негіздеген cout және  ақпаратты енгізуге негізделген cin нысандары орнатылған.

Шығару cout операторының түрі келесідей болады:

cout<<1айнымалы<<...<<Nайнымалы;

<<” белгісі шығу ағынына символдарды қосатын қоспалау операциясы деп аталады. Курсорды жаңа жолдың басына көшіру үшін cout операторында endl (жол соңы) символы жиі қолданылады, мысалы, cout<<xl<<endl;. Шығару операторында арнайы символдарды қолдануға болады, егер де олар өз бетінше қолданылса, апострофқа орнатылуы керек, мысалы, соut<<'\а'<<"Қоңырау";. Егер де арнайы символар тырнақшалардың ішінде орнатылса, апострофтар қолданылмайды. Мысалы, cout<<"Шығару\tx="<<x<<endl;

Үнсіз келісім бойынша, С++ тілінде сандар ондық санау жүйесімен шығарылады. Сегіздік немесе оналтылық санау жүйесін қолдану үшін шығу ағында oct немесе hex модификаторларын орнату қажет. Ондық санау жүйеге қайту үшін dec модификаторы қолданылады.

Мысалы,

cout<<”8-cc:    <<oct<<x<<endl;

cout<<”16-cc:  “<<hex<<x<<endl;

cout<<”10-cc:  “<<dec<<x<,endl;

Сандардың форматты шығаруын cout операторы көмегімен орындау үшін, бағдарламаға #include <iomanip.h> басты файлын қосып,  iomanip библиотекасы ұсынатын функцияларды қолдануға болады:

)                     санға бөлінетін позицияларының санын (шығару енін) setw модификаторы көмегімен нақты түрде көрсетуге болады, мысалы,

cout<<"Сан"<<setw (10)<<5<<endl;

Бұл оператор орындалу нәтижесінде дисплей экранына келесілер шығарылады:

Сан          5

Осы нәтижені cout.width функция көмегімен алуға болады:

cout<<"Сан";

cout.width (10);

cout<<5<<endl;

)                     setw модификатор көмегімен мәліметтерді шығарғанда cout операторының немесе cout.width функциясының бос кеңістікті толтыратын бос орын орнына қолданатын символдарын cout.fill функциясымен көрсетуге болады, мысалы,

cout. fill ('.') ;

cout<<"Сан"<<setw (10)<<5<<endl;

Операторларды орындау нәтижесінде дисплей экранына келесі шығады:

Сан…..5

)                     сандарды шығару форматын басқару үшін, ондық нүктеден кейін цифрлер санын анықтайтын setprecision манипуляторды қолдануға болады, мысалы,

float   x=3.14159265359;

cout<<setprecision(5)<<x<<endl;

Оператордың орындалу нәтижесінде экранда 3.14159 орнатылады;

)                     экранға мәтін символдарын кезекпен шығару үшін cout.put функциясы қолданылады, мысалы,

char с[ ]="С++";

cout.put (c[0]);

cout.put (c[2]) ;

cout.put (c[3]);

         Блоктың операторларын орындау нәтижесінде: C++ мәтіні орнатылады.

         Енгізу cin операторы келесі түрде болады:

cin>>1айнымалы>>...>>Nайнымалы;

>>белгісі шығару операциясы деп аталады, бұл операция аталған айнымалыға мәнін меншіктеп, мәліметтерді кірудегі ағынынан шығарады.  Енгізілетін айнымалылардың мәндері жариялау операторларында көрсетілген айнымалылар типтеріне сәйкес болуы керек, ал пернетақтадан енгізгенде, бір- бірінен ең кемінде бір бос орынмен бөлінеді, мысалы 1.5 2.15 -1.1 25.

Символдық айнымалылар мен жолдардың мәндері кірудегі ағынында апострофсыз және тырнақшасыз жазылады. Оларды енгізу үшін С++ тілі қосымша екі функцияны ұсынады: cin.get және cin.getline. Егер де жалғыз символдан оқу қажет болса, cin.get функциясы қолданылады, мысалы, cl=cin.get();. Онда char cl деп жарияланған айнымалы пернетақтадан енгізілген символдың мәнін қабылдайды. Егер де пернетақтадан символдар жолын енгізу қажет болса, cin.getline функциясы қолданылады, символдық   жол аты және оның ұзындығы (нөлдік байтты есепке алып) көрсетіледі, мысалы, cin.getline(c2,11);. Бұл кезде char с2 [64] деп жарияланған символдық жолға пернетақтадан енгізілген 10 символ жазылады.

2.2 мысал - x және y сандардың бөлінуінің бүтін мәнін және қалдығын есептеңіз.

#include <iostream.h>  //басты файлдарды қосу

void main ( )

{

int x, y;                         /* бөлудің қалдығын бүтін сандарға қолданылатын  

                                                      % операциясы береді, және бүтін сандарды

                                                     бөлгенде, бөлшектері есепке алынбайды,                   

                                                     сондықтан х және у айнымалылар бүтін деп

                                                     жарияланған */

cout<<“ х және  у мәндерін енгізіңіз:”<<endl;

cin>>x>>y;

cout<<’\n’<<”Бөлудің бүтін саны:”<<x/y<<endl;

cout<<’\n’<<”Бөлудің қалдығы:”<<x%y<<endl;

}

Бағдарламаның сыртқы түрін суреттеу үшін #include <conio.h> басты файлда жарияланатын функцияларды қолдануға болады, мысалы,

         а) мәтіннің фонының бояуын орнату келесі функция көмегімен орындалады:

void textbackground (int bkcolor);

мұнда bkcolor (фон түсі) –0-ден 7-ге дейінгі сан немесе  келесі тұрақтылардың (BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY) біреуі;

         б) символдар бояуы келесі функциямен орнатылады:

void textcolor (int txcolor);

мұнда txcolor (мәтін бояуы) 0-ден 15-ке дейінгі бір сан немесе келесі тұрақтылардың (BLACK, …, LIGHTGRAY, DARKGRAY, LIHGTBLUE, …, LIGHTMAGENTA, YELLOW, WHITE) біреуі;

         в) экранды немесе ағынды мәтіндік терезені тазарту үшін келесі функция қолданылады:

void clrscr ();

 

2.2 Тармақталып құрылған алгоритмдер және басқаруды беру операторлары

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

Басқаруды беру операциялары болып басқа бағдарламалау тілдерде аналогтары бар (мысалы, Pascal тілінде) шартсыз өту, шартпен өту, (вариантты) таңдау операторлары және үштік шартты оператор табылады.

Шартсыз өту операторының түрі келесі болады:

goto  белгі;

Өту белгісі бағдарламадағы басқару берілетін операторды көрсетеді. Goto операторы орындалғанда өту шартсыз орындалады. Мұндай өтулер бағдарламаның құрамымен есептеулердің құрамы арасындағы байланыстарды бұзады, соның себебінен бағдарламаның анықтылығы жойылып, есепті дәлелдеуі күрделіленеді сондықтан шартсыз өту операторын тек амалсыздан қолдануға болады.

Шартпен өту операторы кейбір тексерілетін шарттың мәніне қарай есептеудің екі вариантынан біреуін таңдауға негізделген, оның толық түрі келесідей:

if (шарт) 1оператор; else 2оператор;

Шарт ретінде орындалатын операторды таңдау шартын беретін кейбір кез-келген өрнек қолданылады; 1оператор мен 2оператор қарапайымда күрделіде болуы мүмкін. Егер де шарт ақиқат болса (TRUE немесе кез-келген нөл емес мән), 1оператор орындалады, ал егер де шарт жалған болса (FALSE немесе нөл), 2оператор орындалады. Мысалы, if (x==3) b=1; else b=0;

Шартты өту оператордың қысқаша түрі:

if (шарт) оператор;

Бұл кезде, егер де шарт ақиқат болса, опера­тор орындалады, кері жағдайда басқару бағдарламаның келесі операторына беріледі. Мысалы, if (x==3) b=1; х=у;

Көбінесе шарт операндтармен операциялар белгілерінен тұратын логикалық өрнек болып табылады. Логикалық өрнекте операциялар ретінде біріншіден салыстыру (==, !=, <, >, <=, >=) операциялары қолданылады.  Олардан басқа логикалық өрнектерді құратыру үшін логикалық операцияларды (!, ||, &&) қолдануға болады. Логикалық өрнектің мәні онда көрсетілген оперцияларды приоритетіне және орнатылған жақшаларға қарай орындаумен есептелінеді, мысалы,

(abs(x)<=2)х-тің модуль бойынша мәні 2-ден артық емес;

((х>=1)&&(х<=2))нүкте [1,2] аралықта жатыр;

(х*х+у*у<1) - (х, у) координаттары бар нүкте ортасы координаттар басында орнатылған, радиусы бірге тең шеңберде жатыр.

С++ тілінде ақиқат нөл емес мәнмен, ал жалған нөлмен көрсетілетін болғандықтан, шартпен өту операторының басқа да қолдануы бар:

х = мән;

if (x) оператор;

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

Ішкі оператор есебінде if операторда кез-келген операторларды қолдануға болады, сондықтан іште орнатылған кұрамдарды жасауға болады:

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

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

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

                               else үнсіз_келісім_бойынша_операторы;   // міндетті емес

Бірақ бағдарламада қателер кетпес үшін ішкі блоктар үшін бейнелі жақшаларды қолданған жөн, осындай құрамда else қызмет сөзі алдындағы жақын if операторымен байланысады.

Егер де бағдарламада көп варианттың арасында таңдау керек болса, if операторының ішкі құрамдарының орнына таңдау немесе вариант операторы деп аталатын switch қайта қосу операторын қолданған дұрыс. Бұл оператордың түрі:

switch (өрнек)

{

case n1 : 1оператор; break;

case n2 : 2оператор; break;

case nk : Коператор; break;

default :  Nоператор; break;

}

Таңдау операторды орындау өрнектің (селектордың) мәнін есептеуден басталады. Содан кейін таңдау операторы осы мәнге сәйкес болатын тұрақты тұрған операторға басқаруды береді. Егер де сәйкестік табылмаса, default операторынан кейін орнатылған оператор орындалады. Мысалы,

switch (i)

{

case l: x=0; break;

case 2: x=2*x; break;

case 100: x=sin (x); break;

default: x=cos(x); break;

}

z=x; …

Мысалда, i селекторы, мысалы, 100 мәнін қабылдаса, x=sin(x) операторы орындалады, содан кейін басқару z=x операторға беріледі.

Таңдау switch операторында default операторын орнатпауға болады. Оператордың әр тармағында орнатылған break операторы ағынды операторды аяқтап басқаруды бағдарламаның келесі операторына беруді білдіреді. Егер де break операторы болмаса, бағдарлама break операторы кездескенше немесе switch операторының аяғына дейін орындалады.

Шартпен өту операторының альтернативасы болып С++ тілінде үштік шартты ?: операторы болады. Бұл үш операндпен жұмыс жасайтын жалғыз оператор. Бұл оператор үш өрнекті қабылдап, мәнді қайтарады:

(1өрнек) ? 2өрнек: 3өрнек;

Операторды орындау 1өрнек-ті есептеуден басталады. Егер де өрнек ақиқат болса, нәтижесі 2өрнек болады, кері жағдайда нәтижесі 3өрнек болады. Мысалы, mах = (х>у) ? х: у; операторы екі х және у сандардың максималдысын анықтайды.

 

2.3 Зертханалық жұмысқа тапсырма

2.3.1 Берілген мәнді есептеудің блок-сұлбасымен бағдарламасының екі түрін (stdio және iostream библиотекасын қолданып) құрастырыңыз. Бағдарлама мәтінінде барлық қажетті түсініктемелерді орнатыңыз, сонымен бірге, көрнекті және ыңғайлы пайдаланушының интерфейсін жасау үшін түсініктемелері бар форматты енгізу-шығаруды қолданыңыз.

1. Параллелограмм ауданын есептеу.

2. Параллелепипед көлемін есептеу.

3. Нүкте радиусы R шеңбер бойынша тұрақты at тангенцалды үдеумен қозғалады. Қозғалу басталған соң қанша уақыттан кейін нүктенің an нормалды үдеуі оның тангенцалды үдеуінен үлкен болатынын есептеу.

4. Негізі мен биіктігінің өлшемдері берілген болса үшбұрыштың ауданын есептеу

5. Үшбұрыштың екі бетінің ұзындығы мен олардың арасындағы бұрыштың мәні бойынша оның ауданын табу.

6. Екі тізбектеліп қосылған кедергілері бар электр тізбектің жалпы кедергісін есептеу.

7. Кернеу мен кедергіге берілген мәндер бойынша электрлік тізбектің тоқ күшін есептеу.

8. Масштабты есепке алып, картада белгіленген екі елді мекеннің арасындағы қашықтығын есептеу.

9. Белгілі коэффициенттері бойынша квадратты теңдеудің түбірлерін есептеу (дискриминанты оң таңбалы).

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

11. Белгілі өлшемдері бар пирамиданың көлемін есептеу.

12. Шар бетінің ауданын есептеу.

13. Тең бүйірлі тік бұрышты үш бұрыштың гипотенузаға түсетін h биіктігі белгілі; оның беттерін есептеу.

14. Берілген бүйір мәні бойынша тең қабырғалы үш бұрыштың биіктігін есептеу.

15. n санының цифрларының қосындысын табу.

16. Екі параллель қосылған кедергілерден тұратын электр тізбектің кедергісін есептеу.

17. k санының цифрларының көбейтіндісін табу.

18. Автомобиль жолдың бірінші жартысын v1 жылдамдылықпен, екінші жартысын - v2  жылдамдылықпен қозғалады. Орта жылдамдылығын есептеу.

19. Бұрыштың мәнін берілген радиан бірліктерден градус бірліктерге түрлендіру.

20. Жел жылдамдылығы «бір секундтағы метр» бірліктерімен өлшенген, оны «бір сағаттағы километр» бірлігіне түрлендіру.

21. Берілген температураны Кельвин бірліктерінен Фаренгейт және Цельсий бірліктеріне түрлендіру

22. Метрлермен берілген қашықтықты орыс метрикалық емес бірліктерге (версталар мен саженьдерге) түрлендіру.

23. Берілген мәнді келесі - фемто, нано, микро, гекто  префикстары бар метрикалық бірліктерге түрлендіру.

24. Уақыт интервалы минуттармен берілген, оны секундтарға түрлендіру.

25. Салмақты (кг берілген) фунт және унциялар бірліктеріне түрлендіру.

26. Берілген қашықтықты (км) келесі - миля, ярд бірліктеріне түрлендіру.

27. Қуаттылықты (Вт-пен берілген) ат күші және эрг/сек бірліктеріне түрлендіру.

28. Жұмыс шамасын (Дж-мен берілген) килокалория және Вт*сағ бірліктеріне түрлендіру.

29. Қысымды (сынап бағанының мм берілген) физикалық атмосфера (атм) және су бағанының мм бірліктеріне түрлендіру.

30. Квадратты метрмен берілген ауданды  ар мен гектарларға түрлендіру.

 

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

1. Екі санның бөлімін анықтаңыз; егер бөлімі нөлге тең болса, онда қатені  хабарлау.

2. Кедергілердің тізбектеліп немесе параллель қосылғанын есепке алып, екі кедергісі бар электр тізбегінің жалпы кедергісін есептеу.

3. Теңөлшемді немесе тең айнымалы қозғалысты есепке алып, S қашықтықты t уақытта жүретін автомобильдің v қозғалыс жылдамдығын табу.

4. Сенбі мен жексенбідегі 20% жеңілдікті есепке алып, телефон сөйлесулерінің бағасын есептеу; сөйлесу уақыты мен күнді пайдаланушы енгізеді.

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

6. Айнымалы коэффициенттері бойынша берілген квадрат теңдеудің нақты түбірлерін есептеу, дискриминант теріс болса хабарлау.

7. Қолданушымен енгізілген айнымалы тізбектен модулі берілген А санына тең болатын сандар қосындысын есептеу. 

8. Қалааралық телефон сөйлесулердің бағасын есептеу. Бағдарлама мәліметтері қала коды мен сөйлесу уақыты болып саналады, шығару үшін қосымша мәліметтер – қала аты мен тариф болады.

9. Егер бастапқы екі цифр түскен жылды, келесі үш цифр – факультет пен мамандық кодын, соңғы екі цифр – оның мамандық тізімдегі нөмірін анықтаса, онда студенттің сынақ кітапшасының шифрын есептеу.

10. Қозғалыс уақытының бір бөлігін v1 жылдамдылықпен, ал басқа бөлігін  v2 жылдамдылықпен жүрген автомобильдің орташа жылдамдылығын есептеу. Қандай шартта орта жылдамдылық v2 мәнінен артық болмайды.

11. Студенттің 5 емтиханнан алған бағасын есепке алып, оған берілетін шәкіртақы көлемін есептеу: қосынды балл 25-32 болғанда шәкіртақы k тенге болады, 33-39 балл болғанда шәкіртақыға 25%, 40-45 балл болғанда - 50% қосылады. Экранға әрбір емтиханның нәтижесін және студенттің қосынды балын шәкіртақымен бірге шығару керек.

12. a, b және c жақтарының ұзындығы белгілі болса, үшбұрыштың типтерін анықтау (тең қабырғалы, тең бүйірлі немесе әр түрлі қабырғалы).

13. Тең өлшемді немесе тең айнымалы қозғалысты есепке алып, t уақытта v жылдамдылықпен қозғалыстың S қашықтығын есептеу.

14. Үздік үлгерімге (30%), нашар отбасынан шыққандарға (25%), жетімдерге (50%) берілетін жеңілдіктерді есепке алып, студенттің келісілген оқу түріне төлейтін ақысын есептеу.

15. Пайдаланушымен енгізілген 4 санның ішінен кішісін табу.

16. Үлгерімді, жатақханаға және профсоюзға төлейтін ақыны, балаларға компенсация мен басқа да ұсталынатын ақыларды есепке алып студент шәкіртақысын есептеу.

17. Әр транспорттарға мезгіл жеңілдіктерін есепке алып, студенттің жол ақысын есептеу.

18. Пернетақтадан енгізілген 4 саннан үлкенін табу.

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

20. Егер a<=b+c; b<=a+c; c<=a+b үшбұрыштың жақтарына қойылатын шарттары болса, енгізілген a, b және c сандары үшбұрыштың жақтары болатынын анықтау.

21.Өлшемдері  a x b x c болатын қорапты r x s x t өлшемді посылкаға салуға болатынын анықтау. «Бұрышпен» жатқызуға болмайды.

22. Пайдаланушымен енгізілген санның 9 санына бөліктендігін тексеру.

23. Ені бір мәнді сандардың көбейтісіне мысал, пайдаланушы жауабын сұрау және хабар бере отырып енгізілген жауаптың дұрыстығын тексеру.

24. Пайдаланушымен енгізілген санның жұптығымен бірге терістігін тексеру.

25. Енгізілген N санның жетілдірген екенін яғни өзінің қарапайым бөлгіштерінің қосындысына тең болғандықтығын анықтау (мысалы, 6=1+2+3).

26. N санның жұп екендігін және 5-ке бөлінетіндігін есептеу.

27. Пайдаланушымен енгізілген А санның бір уақытта оң болатынын және 2-ге бөлінетіндігін есептеу.

28. a, b және c жақтары бар кірпіш r мен s жақтары бар тікбұрыш тесігінен өтеді ме?

29. Пайдаланушымен енгізілген санның 3-ке бөлінетінін есептеу.

30. a-да b метрлі тікбұрышты аймағына, оның жақтарына параллель болатын p-да q және r-де s метрлі екі үйді орналастыру болады ма?

 

2.4 Бақылау сұрақтары

2.4.1 Мәліметтерді енгізу-шығару үшін С++ тілінде қандай операторлар қолданылады?

2.4.2 Шығару және енгізу операциялары деген не?

2.4.3 С++ тілінде форматты және форматсыз шығару қалай орындалады?

2.4.4 Бағдарламаның сыртқы көркін бейнелеу үшін қандай функциялар қолданылады?

2.4.5 Шешім қабылдау құрылымына тілдің қандай құрылымдары қатысты?

2.4.6 Теріс сандар TRUE немесе FALSE бола ма?

2.4.7 Шартты өрнек қалай құрастырылады?

2.4.8 Таңдау операторында break операторы қандай мақсатпен қолданылады?

2.4.9 Бағдарламаларда goto операторын неге қолданбаған жөн?

2.4.10 Үш жағынан шартты оператор деген не?

 

3 №3 зертханалық жұмыс. Циклді құрылымды алгоритмді бағдарламалау

 

Жұмыс мақсаты - циклдық құрылымды алгоритмдерді бағдарламалаудың ерекшеліктерімен танысу.

 

3.1 Циклдық құрылымды алгоритмдер. Цикл операторлары.

Егер де алгоритмде көп рет қайталанатын іс-әрекеттер тізбегі болса, алгоритм циклдық құрылымды алгоритм,  ал қайталанатын іс-әрекеттер тізбегі – цикл деп аталады. Циклдық алгоритм бағдарлама  көлемін азайтады. С++ тілінде циклдық операторлардың үш түрі қолданылады: алдын-ала қойылатын шарты бар цикл, соңынан қойылатын шарты бар және параметрі бар цикл.

Алдын-ала қойылатын шарты бар цикл базалық құрылымдарға жатады және де берілген шарт орындалғанша қайталанатын әрекеттерді орындай береді. Бұл циклдің түрі келесі:

while (шарт)                 немесе                 while (шарт)

{                                                                 оператор;                                                1оператор;

2оператор;                                                       

Nоператор;

}

Мұндағы шарт дегеніміз - кез-келген С++ тілінің қарапайым немесе күрделі өрнегі болады; оператор – кез-келген рұқсат етілген оператор немесе операторлар блогы (цикл денесі).

Шарт мәні TRUE болғанша цикл қайталана береді. Мән жалған (FALSE) болған кезде цикл жұмысы аяқталады, бағдарлама басқаруды бағдарламаның келесі операторына береді.

3.1 мысалы – Айнымалының мәні 11-ден үлкен болғанша counter айнымалының мәндерін экранға шығарып тұру керек.

#include <iostream.h>

void main()

{ int counter;

cout <<”1-ден 10-ға дейінгі сандарды шығару”<<endl;

counter=1;                                        // айнымалының бастапқы мәні 1-ге тең

while (counter<=10)                         // counter мәні 11-ді аспағанша

{                                                     //   цикл денесінің басы

       cout<<counter<<endl;           // экранға мәнін шығару

       counter++;                             // counter мәнін 1-ге өсіру

}                                                     // цикл денесінің соңы

}

Тексерілетін шарт while циклында кез-келген С++ тілінде рұқсат етілген өрнек болуы мүмкін, сондықтан true өрнегін қолдануға болады. Бірақ, бұл кезде цикл аяқталмайды, шексіз қайталана береді. Шексіз циклдерді байқап қолданып, ұқыпты тексеру керек. Егер де талқыланатын шарт басынан жалған болса, цикл денесін құрастыратын операторлардың біреуі де орындалмайды, цикл толығымен өткізіледі.

Егер де цикл операторларының ең кемінде бір рет орындалуын талап етсек, соңынан қойылатын шарты бар цикл операторын қолдану керек. Оның синтаксисі:

do                                  немесе                                do {

           { оператор;}                                                              1оператор;

while (шарт);                                                                 2оператор;

                                                                                       Nоператор;

                                                                                      } while (шарт); 

Егер де цикл денесінде тек қана жалғыз оператор болса, операторлық жақшалар while операторының себебінен туатын түсінбеушіліктерді жою үшін орнатылады. Оператор анықтайтын әрекеттер шарт жалған немесе нөл болғанша орындала береді. Циклді жалғастыратын шарт және операторлар міндеттері while оператордың міндетіне сәйкес.

3.2 мысал – ‘A’ –дан  ‘Z’-ке дейін өзгеретін с айнымалысының мәдерін экранға шығарыңыз:

#include <iostream.h>

void main()

{ int c;

cout <<”Алфавит”<<endl;

c=’A’;                                                 // c айнымалының бастапқы мәні ’A’

                                                              //  болып меншіктеледі

do {                                                  // цикл денесінің басы                                              cout<<c<<endl;                       // экранға c мәнін шығару

     c++;                                          // c мәнін 1-ге өсіру

} while (c<’Z’);                                  // циклды жалғастыру шарты, цикл соңы

}                                                               

Соңынан қойылатын шарты бар циклдың денесінде while операторынын жағдайындағыдай, өрнекті орындаудың нәтижесіне әсер ететін әрекеттері болуы керек, олар циклге кіру-шығудың шарты болады, кері жағдайда цикл шексіз болады, мысалы,

counter=1;                                                                  

do                                                                                                            

{                                                      // цикл денесінің басы

    cout<<counter<<endl;             

// counter++;                                   //циклдан шығу шартына әсер ететін 

                                                          // инкремент  операторын сөндіргенде

                                                       // бағдарлама  шексіз орындалады

 } while (counter<=10)                      // цикл денесінің соңы

С++ тілінде қолданылатын цикл операторының біреуі – параметрі бар цикл операторы, оның түрі келесі:

for (инициализациялау; тексеру; өсімшелеу)

оператор;

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

Егер де орнатылған болса инициализацияланатын өрнек әрқашан орындалады. Егер де шарт басынан жалған болса, соңғы мән (тексеру) есептелмеуі мүмкін. Әдетте, өсімшелеу цикл параметрінің өзгеру заңын анықтайды, бірақ міндетті түрде емес. Сонымен бірге, С++ тіліндегі цикл классикалық түрдегі цикл емес: цикл параметрі нақты болуы мүмкін. Цикл параметрінің, мысалы,  геометриялық заңмен өзгеруін орнатуға болады:

    

for (d=1; d<15; d=d*5)

    cout<<d;

   

for циклында бір немесе бірнеше өрнектерді өткізіп кетуге болады, бірақ «;» символдарын қалдыруға болмайды. Тек қана цикл оператор денесіне оның жұмысын аяқтайтын бірнеше операторларды орнату қажет, мысалы,

 a=1;

for (n=2; a<15;)

a=a*n;  

 

Цикл денесі

  for ( ; ; )

cout<<”Шексіз цикл”<<endl;

шексіз орындалады, себебі бос шарт әрқашан ақиқат болып есептелінеді. Бұл цикл цикл параметрін орнатпайды, басқару өрнегі жоқ, ешқандай әрекеттерді орындамайды. Осындай циклдер ашық деп аталады.

3.3 мысалы – y айнымалының барлық мәндерін экранға шығарыңыз.

#include <iostream.h>

void main()

{ int k, y;

for (k=1;k<=10;k++)

   {                                                     // цикл денесінің басы

y=y*k;                                                                            

   cout<<y<<endl;                         // y мәнін экранға шығару

   }                                                    // цикл денесінің соңы

 }

Циклдің орындалуын үзудің немесе цикл денесінің операторларының орындалу тәртібін бұзудың бірнеше әдістері бар. Кейбір кезде цикл денесінің барлық операторларының орындалуы бітпей цикл басына көшу керек болады. Бұл кезде барлық операторларды жіберіп, цикл басына көшуді орындайтын continue; операторы қолданылады.

3.4 мысалы – 1-ден 100-ге дейінгі 5 санына еселі барлық сандарды экранға шығарыңыз.

#include <iostream.h>

void main()

{ int k;

for (k=1;k<=100;k++)

   {                                           // цикл денесінің басы

       if          (k%5) continue;             // k 5-ке еселі болмаса,

 // for циклының басына көшу керек                                           

     cout<<k<<endl;              // экранға 5-ке еселі k-нің мәндерін шығару

 }                                           // цикл денесінің соңы

}

Кейбір кезде цикл орындалу шартын тексермей цикл денесінен шығу қажет болады. Ол үшін break операторын қолданады, бұл оператор барлық операторларды жіберіп (сонымен қатар жабатын бейнелік жақшаны да) циклдан шығуды орындайды.

3.5 мысалы – 60-тан аспайтын y мәндерін экранға шығарыңыз.

#include <iostream.h>

void main()

{ int k, y;

for (k=1;k<=10;k++)

   {                                                    // цикл денесінің басы

if (y*y-5>60) break;                 //егер y>60 болса, for циклынан шығу

    cout<<y*y-5<<endl;                 // y мәндерін экранға шығару

 }                                                    // цикл денесінің соңы

}

Бірақ continue  және break операторларын өте байқап қолдану қажет, себебі оларды қолдану while қарапайым циклының өзін жаңылдыруы мүмкін. Бұлар goto операторынан кейін ең қауіпты операторлар.

 

3.2 Зертханалық жұмысқа тапсырмалар

1.          Егер бастапқы капиталы k тенге, әр айдағы пайдасы - n%, жалға ақысы m тенге болса, онда жалғаға алушы неше жылдан кейін берілетін орынды сатып алатын S қосындыны жинай алады?

2.          Пернетақтадан енгізілген санның факториалын есептеу.

3.          Пернетақтадан енгізілген бөлшек сандар тізбегінен арифметикалық орташасын есептеу; сандардың өлшемін пайдаланушы береді.

4.          Егер r түтікше радиусы, ρ сұйық тығыздығы, беттің тартылыс коэффициенті α  берілсе, ал θ шеткі бұрышы 0-ден π-ге дейін өзгерсе, онда капиллярлы түткішдегі көтерілу биіктігін есептеу.

5.           сан қатарының бөлек қосындыларының мәні мүшелерінің жеткілікті көп санын қосындылағанда π/4 мәніне жақындайтынын есепке алып, пайдаланушы берген дәлдікпен π санын есептеу.

6.          Екі бүтін санның ортақ бөлгіштерінің үлкенін есептеу.

7.          Берілген А амплитудамен, Т тербеліс периоды және алғашқы φ фазамен t уақыты 0,5 секунда қадаммен 0-ден 10 секундқа дейін өзгергендегі гармоникалық тербелістер нүктелерінің тепе-теңдік жағдайдан барлық ығысуларын есептеу.

8.          Егер нүкте қозғалысының теңдеуі мына түрде:  болса, нүктенің максималды үдеуіне жететін t уақыт кезін есептеу.

9.          0-ден 50-ге дейінгі диапазондағы тудырылған кездейсоқ k сандардың тізбегінен максималды мәнді есептеу.

10.     Егер өткізгіштің ρ меншікті кедергісі, S кесінді ауданы белгілі болса (пайдаланушымен беріледі), ал оның L ұзындығы 1-ден 20 см-ге дейін өзгерсе, онда өткізгіш кедергісін есептеу.

11. Егер қозғалыс теңдеуі мына түрде:  болса, онда нүктенің максималды жылдамдығына жететін  t уақыт кезін есептеу.

12. 0-ден 100-ге дейінгі диапазондағы тудырылған кездейсоқ k сандардың тізбегінен минималды мәнді есептеу, осы сандарды экранға шығару.

13. Берілген А амплитудамен, Т тербеліс периодымен және t-ның 0-ден 10 секундқа дейін 0,5 сек қадаммен  өзгеруіндегі тербеліс көзінен L қашықтықта қалып қоятын  с таралу жылдамдығымен өшпейтін тербелістерді тарату кезіндегі нүктелердің барлық ығысуын.

14. 1-ден 10-ға дейінгі диапазондағы тудырылған кездейсоқ 10 сандардың тізбегінен орташа геометриялық мәнді есептеу, осы сандарды экранға шығару

15. Z санының дәреже кестесін (нөліншіден бастап k-ға дейін) шығару; k дәреже саны пайдаланушымен беріледі.

16. Өлшемі пернетақтадан енгізілетін берілген t уақыт аралығы біткенде таймер дыбыс сигналын беру бағдарламасын құрастыру.

17. Пайдаланушы берген n санға көбейту кестесін құрастыру.

18. Шахмат тақтасын шығару: қара шаршыларын «жұлдызшамен», ақ шаршыларын – бос орынмен көрсету.

19. Кез келген клавишаны басқанда жұмыс істейтін «электронды сағатты» жасау.

20. Бірінші m бүтін оң таңбалы сандардың квадраттарының кестесін жасау.

21. Пайдаланушы көбейту кестесін білуін тексеру; k мысалдарды шығарып, баға қою: дұрыс бағалар 90-100% болса, «өте жақсы», 75-89%  - «жақсы», 55-74% «қанағаттандырылған», 55%-дан кем болса - «қанағаттандырылмаған».

22. Пайдаланушы енгізген k бүтін сан жәй сан немесе жәй еместігін тексеру.

23.  функция аргументі х келесі [0;5T] интервалында өзгереді, ал периоды  Т=2π.  Функцияның периодтық немесе периодтық емес болатындығын тексеру.

24. Компьютер 1-ден 10-ға дейінгі диапазонда тудыратын бүтін санды пайдаланушы 5 әрекеттен соң таба алатын бағдарламаны құру керек.

25-30 варианттарда теңдіктің дұрыстығына көз жеткізу керек; ол үшін пайдаланушы беретін х аргументінің мәнінде өрнектің сол жағын, сонымен бірге берілген дәлдікпен оң жақтағы жіктеуін  есептеп, салыстырады.

25. .

26.

27.

28.

29.

30.

3.3 Бақылау сұрақтары

3.3.1 С++ тілінде қандай цикл операторлары бар?

3.3.2 while және do-while циклдардың айырмашылығы?

3.3.3 while цикл көмегімен басқа циклдарды қалай үлгілеуге болады?

3.3.4 ашық деп қандай циклды атайды?

3.3.5 Шексіз циклды қалай ұйымдастыруға болады?

3.3.6 С++ тіліндегі for циклының басқа тілдердегі осындай циклдерден қандай айырмашылығы бар?

3.3.7 for циклының ішінде while циклін орнатуға болады ма?

3.3.8 Циклдың орындалуын қандай әдістермен тоқтатуға болады?

3.3.9 Циклды таңдағанда қандай кепілдемелерді қолдану қажет?

    3.3.10 while (true) және for ( ; ; ) циклдар арасындағы айырмашылық қандай?

 

 

 

А қосымшасы

С++ тілінің негізгі элементтері

А1 кесте. Арнайы және басқару символары        

 

Бейне

Аты

Бейне

Аты

Арнайы символдар

+

Қосу

|

Сызық

++

Өсімше

||

Логикалық НЕМЕСЕ

-

Алу

!

Леп белгісі

--

Азайту

->

Стрелка

*

Жұлдызша

=

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

/

Қисық сызық

= =

Теңдік белгісі

\

Кері слеш

!=

Тең емес

//

Екі слеш

>

Үлкен

.

Нүкте

<

Кіші

,

Үтір

<=

Кіші немесе тең

:

Қос нүкте

<<

Солға жылжу

::

Рұқсат

>>

Оңға жылжу

;

Үтірлі нүкте

< >

Бұрыш жақшалар

Апостроф

( )

Дөңгелек жақшалар

Тырнақша

[ ]

Квадратты жақшалар

^

«Төбе»

{ }

Бейнелік жақшалар

%

Пайыз белгісі

/* */

Түсініктеме жақшалары

&

Амперсанд

#

Нөмір белгісі

&&

Логикалық ЖӘНЕ

~

Тильда

Басқару символдары

\a

Динамик сигналы

\t

Горизонталды табуляция

\b

BS, символды жою

\v

Вертикалды табуляция

\f

Жаңа бет

\\

Кері қисық

\n

Жаңа жол

\0

Нольдік символ (байт)

\r

Жаңа жолға көшу

\000

Сегіздік тұрақты

\”

Тырнақша

\xhhh

Ое алтылық тұрақтысы

\’

Апостроф

\?

Сұрақ белгісі

 

А2 кесте. C++ тілінің резервіленген сөздері

and

char

false

int

private

switch

virtual

and_eq

class

float

long

protected

template

void

asm

compl

for

mutable

public

this

volatile

auto

const

else

namespace

register

throw

while

bitand

continue

enum

new

return

true

xor

bitor

default

explicit

not

short

try

xor_eq

bool

delete

friend

not_eq

signed

typedef

 

break

do

goto

operator

sizeof

typename

 

case

double

if

or

static

union

 

catch

extern

inline

or_eq

struct

unsigned

 

А3 кесте. Мәліметтердің мүмкін болатын типтері

Типі

Өзгеру диапазоны

Байтпен (битпен) көрсетілген өлшемі

бастап

дейін

void

-

-

0

char (signed char)

-128

127

1 (8)

unsigned char

0

255

1 (8)

wchar_t

0

65535

2 (16)

bool

True

False

1 (8)

int (signed int, short int, signed short int)

-32768

32767

2 (16)

unsigned int (unsigned short int)

0

65535

2 (16)

long int (signed long int)

-2147483648

2147483647

4 (32)

unsigned long int

0

4294967295

4 (32)

float

3.4E-38

3.4E+38

4 (32)

double

1.7E-308

1.7E+308

8 (64)

long double

3.4E-4932

3.4E+4932

10 (80)

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

 

А4 кестесі – Операциялар тізімі, олардың приоритеті және орындалу тәртібі

Деңгей

Оператор

Реті

Деңгей

Оператор

Реті

1

( ) . [ ] -> ::

Þ

9

&

Þ

2

* & ! ~ ++ -- + - sizeof new delete

Ü

10

^

Þ

3

. * -> *

Þ

11

|

Þ

4

* / %

Þ

12

&&

Þ

5

+ -

Þ

13

| |

Þ

6

<< >>

Þ

14

?:

Ü

7

< <= > >=

Þ

15

= *= /= += -= %= <<= >>= &=  ^=  |=

Ü

8

== !=

Þ

16

,

Þ

Ескертулер -

1 Операторлар приоритеттері 1-ден 16-ға дейін кішірейеді.

2 Þ белгісі операциялардың солдан оңға қарай орындалуын, ал Ü белгісі – оңнан солға қарай орындалуын білдіреді.

3 Екінші деңгейдегі (+) және (-) унарлық операциялардың приоритеттері 5 деңгейдегі арифметикалық (+) және (-) операциялардан жоғары. 2 деңгейдегі & символы адрес бойынша қатысу операторы, ал 9 деңгейдегі & - AND операторы. 2 деңгейдегі * символы – көрсеткішке қатысу операторы, ал 4 деңгейдегі * символы – көбейту операторы.

4 Дөңгелек жақша болмаса, бір деңгейдегі операторлар орналасуы бойынша солдан оңға қарай өңделеді.

А5 кесте. Негізгі математикалық функциялары

Функцияның аты

Функция

Типі

Басты файл

нәтиженің

аргументтің

Абсолютті мәні

abs(x)

cabs(x)

fabs(x)

int

double

float

int

double

float

<stdlib.h>

<math.h>

<math.h>

Арккосинус

acos(x)

double

double

<math.h>

Арксинус

asin(x)

double

double

<math.h>

Арктангенс

atan(x)

double

double

<math.h>

Косинус

cos(x)

double

double

<math.h>

Синус

sin(x)

double

double

<math.h>

Экспонента ex

exp(x)

double

double

<math.h>

Дәрежелі функция xy

pow(x,y)

double

double

<math.h>

Натурал логарифм

log(x)

double

double

<math.h>

Ондық логарифм

log10(x)

double

double

<math.h>

Квадратты түбір

sqrt(x)

double

double

<math.h>

Тангенс

tan(x)

double

double

<math.h>

 

А6 кесте. Енгізу-шығару функцияларындағы түрлендіру типтері

Шығару

форматы

Мәні

Енгізу

форма-ты

Мәні

%c

символды шығару (char)

%c

символды оқу (char)

%d

бүтін ондық сан (int)

%d

бүтін ондық сан (int)

%i

бүтін ондық сан (int)

%i

бүтін ондық сан (int)

%e (%E)

х.хх е+хх  (х.хх Е+хх ) түріндегі сан (float/double)

%e

float/double типті санды оқу

%f (%F)

хх.хххх белгілі үтірі бар float/double саны

%h

short int типті санды оқу

%g (%G)

мәніне байланысты f (F) немесе е(E) түрдегі сан

%o

сегіздік санды оқу

%s

символдар жолы

%s

символдар жолын оқу

%o

Сегіздік түрдегі бүтін сан (int)

%x

оналтылық санды оқу (int)

%u

белгісі жоқ ондық сан (unsigned int)

%p

көрсеткішті оқу

%x (%X)

оналтылық түрдегі бүтін сан  (int)

%n

үлкейтілген форматта көрсеткішті оқу

%p (%n)

көрсеткіш

 

 

Ескерту – Форматтарға l және h, модификаторларын қолдануға болады, мысалы,  %ld (ондық түрдегі long), %lo (сегіздік түрдегі long), %lu (unsigned long), %lx (оналтылық түрдегі long), %lf (тұрақты нүктесі бар long float), %le (экспоненталық түрдегі long float), %lg (мәніне байланысты f немесе е түріндегі long float).


Әдебиеттер тізімі

 

1. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов и программ. Обозначения условные, графические. – М.: Издательство стандартов,1990.

         2. Ю.Аляев, О.Козлов. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.

3. Дж.Либерти. Освой самостоятельно С++ за 21 день. – М.: Издательский дом «Вильямс», 2001.

4. И.В.Ашарина. Основы программирования на языках С и С++. – М.: Горячая линия-Телеком, 2002.

5.   Б.И,Березин, С.Б.Березин. Начальный курс С и С++. – М.: ДИАЛОГ-МИФИ, 1999.

6.   А.Б.Крупник. Самоучитель С++. – СПб.: Питер, 2005.

7.   Дж.Бентли. Жемчужины программирования. - СПб.: Питер, 2003.

8.   А.Л.Марченко. С++. Бархатный путь. - М.: Горячая линия-Телеком, 2002.

9.   А.Я.Архангельский. C++ Builder 6. Справочное пособие. Книга 1. Язык С++. – М.: Бином-Пресс, 2002.

         10. Культин Н.Б. Самоучитель С++Builder. – СПб.: БХВ-Петербург, 2004.

 

 

Мазмұны

 

Кіріспе............................................................................................................ ..3

1 №1 зертханалық жұмыс. Тілдің негізгі түсініктемелері. Мәліметтердің

стандартты типтері. Меншіктеу операторы......................................................4

2 №2 зертханалық жұмыс. Сызықты құрылымды және тармақталып  

құрылған алгоритмдерді бағдарламалау...........................................................15

3 №3 зертханалық жұмыс. Циклді құрылымды алгоритмді бағдарламалау...25

А қосымшасы....................................................................................................32

Әдебиеттер тізімі............................................................................................ .35

 

 

 

 

 

                                                                        2006  ж. жиындық жоспары, реті 20

 

 

Лида Куандыковна Ибраева

Наталья Валерьевна Сябина

 

 

 

 

 

 

 

 

Информатика. С++ тілінің негіздері

5 бөлім

Зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар

 (барлық мамандықтың студенттері үшін)

 

 

 

 

 

 

 

Редакторы Ж.А. Байбураева 

 

 

 

 

 

 

Басуға қол қойылады __. __. __.                             Қалпы 60х84  1/ 16

Басылымы  600 экз.                                             №1 типографиялық қағаз

Көлемі 2,3 оқу-баспа табағы                                   Тапсырыс __бағасы 126 тг 

 

 

 

Алматы энергетика және байланыс институтының

көшірмелі-көбейткіш бюросы

050013 Алматы, Байтұрсынов, 126