Коммерциялық емес акционерлік қоғам

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

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

 

 

 

 

ПРОГРАММАЛАУДЫҢ ТЕХНОЛОГИЯЛАРЫ 

5B070200 - Автоматтандыру және басқару мамандығының

барлық оқу түрінің студенттері үшін зертханалық жұмыстарды орындауға арналған әдістемелік нұсқаулар

 

 

 

 

Алматы 2011 

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

               

         Ұсынылып отырған әдістемелік нұсқаулар «Программалаудың технологиялары» пәні бойынша 8 зертханалық жұмыстан тұрады. Жұмыстар 1 курстың студенттеріне жоғарғы денгейлі С++ тілінде программаларды өңдеудің практикалық дағдыларын алуға көмек береді. Әр зертханалық жұмыстың соңында келтірілген бақылау сұрақтары алынған теориялық білімдерді бекітуге мүмкіндік береді.

         Қосымшада қажетті анықтама мағлұматтар орнатылған.

         Әдістемелік нұсқаулар 5В070200 – Автоматтандару және басқару мамандығының барлық оқу түрлерінің студенттеріне арналған.

         Кесте 9, қосымша 1, әдебиет – 15 атау.

 

 

         Пікір беруші: 

        

“Алматы энергетика және байланыс институты” коммерциялық емес акционерлік қоғамының  2007 ж. қосымша баспа жоспары бойынша басылады.

 

  

                 ©        «Алматы энергетика және байланыс университеті» КЕАҚ, 2011 ж.

 

Мазмұны

 

1 Зертханалық жұмыс. Есептерді шығаруға С++ тілінің негізгі және

қосымша құрылымдарын қолдану. Программалаудың сипатты амалдары      4

2 Зертханалық жұмыс. Есептерді сандық әдістерімен шешкенде

С++ тілінің құрылымдарын қолдану                                                                9

3 Зертханалық жұмыс. Массивтер. Массивтерді өңдеу                                 14

4 Зертханалық жұмыс. Массивтерді реттеудің әдістері                                   18

5 Зертханалық жұмыс. Символдық мәліметтерді өңдеу                                  22

6 Зертханалық жұмыс. Құрылымдар және бірлестіктермен жұмыс жасау      25

7 Зертханалық жұмыс. Файлдар және олармен жұмыс істеу                         29

8 Зертханалық жұмыс. Функциялар. Рекурсия                                               30

А Қосымша                                                                                                     34

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

 


1 Зертханалық жұмыс. Есептерді шығаруға С++ тілінің негізгі және қосымша құрылымдарын қолдану. Программалаудың сипатты амалдары

 

Жұмыс мақсаты: жоғарғы деңгейлі С++ тілінде есептерді шешуге Информатика пәнінде алынған білімдерін практикалық қолдануды үйрену, стандартты алгоритмдерімен практикалық жұмыс жасауға дағдылану.

 

1.1 Жалпы мәліметтер

 

1.1.1 Кез келген күрделі алгоритмді үш негізгі басқару конструкцияны қолданып көрсетуге болады.

Негізгі болып келесілер табылады:

а)     тізбектелу  - әрекеттерді тізбектеп орындауын анықтайды;

б)    тармақталу -  әрекеттердің екі нұсқасынан біреуін таңдау;

в)    цикл-әзірше – орындалуы цикл басында тексерілетін кейбір шарт бұзылғанша қайталанатын әрекеттерді анықтайды.

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

а)     таңдау – кейбір шаманың мәніне қарай бірнеше нұсқадан біреуін таңдау;

б)    цикл-болғанша - циклдағы әрекеттері аяқталғаннан кейін орындалуы тексерілетін кейбір шарт орындалғанша қайталанатын әрекеттерді анықтайды;

в)    қайталану саны берілген цикл (санаулы цикл) – кейбір әрекеттерді белгіленген сан рет қайталау.

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

Құрылымдық программалардың алгоритмдерін бейнелеу үшін келесілер қолданылады:

1) блок-сұлбалар;

2) псевдокодтар;

3) Flow-формалар;

4) Насси-Шнейдерман диаграммалары.

А.1 кесетеде алгоритмдерді бейнелеудің әртүрлі амалдарының сәйкестігі көрсетілген.

 

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

Қарастырылған әр басқару конструкциясы үшін С++ тілінің операторын сәйкестіруге болады. Мысалы, негізгі деп келесілерді атауға болады:

а) меншіктеу операторы   айнымалы = өрнек;

б) шартты көшу операторы:

- толық түрі    if (шарт) оператор1; else оператор2;

- қысқаша түрі   if (шарт) оператор;

в) алдын-ала қойылған шарты бар цикл операторы

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

{                                                                 оператор;

оператор1;

оператор2;

операторN;

}

Қосымша конструкцияларға келесілер сәйкестіріледі:

а) ауыстырып қосқыш  switch операторы (таңдау  немесе нұсқа операторы)

switch (өрнек)

{

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

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

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

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

}

б) үш  шарт операторы

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

в) соңынан тексерілетін шарты бар цикл операторы

do                                 немесе        do {

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

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

                                                        Nоператор;

                                                        } while (шарт);   

г) параметрі бар цикл операторы

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

{1оператор;

2оператор;

Nоператор; }

 

1.1.3 Әртүрлі есептеулерді орындағанда жиі жағдайларда бір-ақ стандартты алгоритмдер қолданылады, мысалы, кейбір құрылымның қосындысын, көбейтіндісін, элементтер санын, максималды немесе минималды мәнін табу есептерінде. Осы алгоритмдер программалаудың сипатты амалдары деп есептеледі. Практикада оларды іске асыру келесі жолмен орындалады:

- циклды ашу алдында ізделінетін параметрдің болжанатын немесе бастапқы мәні орнатылады;

- цикл ішінде жинақталу немесе ізделіну орындалады.

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

 

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

 

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

 

1.1 к е с т е  Тапсырма нұсқалары

Нұсқа

Тапсырма

Есептеңіз:

1

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

2

Нүктенің қозғалу теңдеуі келесі түрде берілген: .

Нүкте максималды жылдамдылығына жететін уақыттың t моментін.

3

(0, 100) диапазонында генерацияланған k кездейсоқ сандарының тізбегіндегі минималды мәнін.

4

Мүшелер саны көп болған кезде қосындысы π/4 мәніне түйісетін

қатарын қолданып, пайдаланушы берген дәлдікпен π санын.

5

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

6

Клавиатурадан еңгізілген санның факториалын.

7

, n – клавиатурадан еңгізілген бүтін сан.

8

Жалға алушының бастапқы капиталы k теңге, ай сайынғы табысы n%, жәйді жалға алу m теңге. Өз жәйін сатып алуға жалға алушы неше жылдан кейін S сомасын жинайды.

9

a0  = -20, ai = ai-1 + i/2 болатыны белгілі. Осы тәртіп бойынша жасалған тізбектің бірінші оң таңбалы элементін.

10

Екі бүтін сандарының ең үлкен жалпы бөлгішін.


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

11

(0, 50) диапазонында генерацияланған k кездейсоқ сандарының тізбегіндегі максималды мәнін.

12

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

13

a0 =15, ai = ai-1 i/2 болатыны белгілі. Осы тәртіп бойынша жасалған тізбектің бірінші теріс таңбалы элементін.

14

(-100, 100) диапазонында генерацияланған N кездейсоқ сандарының тізбегіндегі бірінші саннан үлкен болатын сандар көлемін. Барлық сандарды экранға шығарыңыз.

Экранға  шығарыңыз:

15

2-нің дәрежелер кестесін. Дәреженің n мәні пайдаланушымен анықталады.

16

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

17

Пайдаланушы анықтайтын n санының көбейту кестесін.

18

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

19

Берілген уақыттың t аралығы біткеннен кейін дыбыс сигналды беретін таймерді. t мәні клавиатурадан еңгізіледі.

20

Шахмат тақтаның бейнесін: қара торларды жұлдызшамен, ақ торларды бос орынмен белгілеңіз.

21

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

Тексеріңіз:

22

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

23

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

24

(1,10) диапазонында компьютер генерациялаған бүтін санды  5 талапта болжап білуді пайдаланушыға ұсыну.

25

Пайдаланушы еңгізген k бүтін сандар жәй сандар болады ма?

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

26


1.1 кестенің соңы

27

28

29

30

 

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

1.3.1                  Алгоритмдік құрылымдардың қандайы негізгі болып табылады? Қандайы қосымша болады? Негізгі және қосымша құрылымдардың мысалдарын келтіріңіз.

1.3.2       Алгоритмдердің сұлбалары графикалық түрде қалай бейнеленеді? Flow-формалар мен Насси-Шнейдерман диаграммаларының артықшылықтары не де? Блок-сұлбалардың артықшылықтары мен кемшіліктері?

1.3.3                  Оператор мен операция арасындағы айырмашылық? Операциялардың қандай түрлері бар? С++ тіліндегі меншіктеу операцияларды атаңыз.

1.3.4       Форматты еңгізу шығарудың ерекшеліктерін атаңыз.

1.3.5       С++ тілінің қандай операторлары тармақталуды іске асырады? Ерекшеліктері не де? Пайдаланудың мысалдарын келтіріңіз.

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

1.3.7       Циклдарды С++ тілінің қандай операторлары іске асырады? Ерекшеліктері не де? Пайдаланудың мысалдарын келтіріңіз.

1.3.8       while циклы көмегімен қалай for циклын имитациялауға болады?

1.3.9       а1, а2, а3 …а10  тізбегінің элементтерінің орта арифметикалық мәнін табу алгоритмін келтіріңіз. Осы тізбектің орта геометриялық мәнін іздеу алгоритмінің қандай айырмашылығы болады?

1.3.10  а1, а2, а3 …а10  тізбегінің элементтерінің максималды мәнін табу алгоритмін келтіріңіз.

 

2 Зертханалық жұмыс. Есептерді сандық әдістермен шешкенде С++ тілінің құрылымдарын қолдану

 

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

 

2.1   Жалпы мәліметтер

Қазіргі кезде математикалық әдістері адам қызметінің әртүрлі салаларында табысты қолданылады. Бірақ жиі жағдайда ізделінетін шамалардың берілген шамалармен байланысуын анық түрде (формулалар түрінде) көрсете алмайтын есептер кездеседі. Осындай есептерді шешу үшін әдетте ізделінетін нәтижеге түйісетін шексіз процесті алуға болады. Осындай процесс табылған болса, қадамдардың тек қана кейбір санын орындап (одан кейін есептеулерді тоқтатып), есептің жуықтаған мәнін табуға болады. Бұл процедураның еңбек сыйымдылығы өте үлкен және де есептеулерді анықталған алгоритмдермен орындауын талап етеді. Компьютерлік техника негізінде сандық әдістерін қолдану жолымен толығымен болжау жасауға мүмкіндік беретін математикалық есептер класын кеңейтуге болады.

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

Егер де берілген тізбектің элементінің алдыңғы мәні бойынша ағынды мәнін есептеу әдісі анықталған болса, тізбек элементін есептеудің рекурренттік формуласы берілген деп есептеледі. Анықтаудың осындай әдісінде міндетті түрдегі атрибуты бар – осы тізбектің бастапқы мәні анық түрде беріледі. Осындай рекурентті берілген тізбектің элементтерін табуға цикл операторларының кез келгенін қойылған есепке қарай қолдануға болады.

Алгебралық теңдеулердің түбірлерін берілген ε дәлдігімен есептегенде итерациялар, жанама (Ньютон), дихотомия (кесіндіні тең бөлу) әдістері табысты қолданылады. Анықталған интегралдарды есептеуге тікбұрыш және Симпсон әдістері қолданылады.

Аталған әдістерімен есептеу алгоритмдері толық [1, 12] әдебиетте қарастырылған.

 

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

 

2.2.1 Пайдаланушы берген ε дәлдігімен қосындыларды есептеңіз (2.1 кестені қараңыз).

 

 

 

 

2.1кестеТапсырма нұсқалары

Нұсқа

Тапсырма

1

, |x| < 1;

2

;

3

4

5

, |x| < 1;

6

7

8

9

10

11

12

13

14

15


2.1 кестенің соңы

16

17

18

19

20

21

, |x| < 1;

22

23

24

25

26

27

28

29

30

 

2.2.2 Нұсқа бойынша есептеулерді орындаңыз (2.2 кесте).

 

2.2 кесте    Тапсырма нұсқалары

Нұсқа

Жуықтаған мәнін есептеңіз

Әдіс

Дәлдік, ε

1

[0.5,1.5] аралығында х32-3=0 теңдеудің түбірін

кесіндіні тең бөлу

0.00001

2

 интегралын

тікбұрыш

0.001

3

[0,0.5] аралығында 2х3+3х-1=0 теңдеудің түбірін

кесіндіні тең бөлу

0.0001

4

 интегралын

тікбұрыш

0.001

5

[0.7,1.0] аралығында х5-х-0.2=0 теңдеудің түбірін

итерациялар

0.00001

6

 интегралын

Симпсон

0.001

7

 интегралын

Симпсон

0.001

8

 интегралын

Симпсон

0.001

9

[0,0.8] аралығында х3+3х-1=0 теңдеудің түбірін

итерациялар

0.00001

10

 интегралын

тікбұрыш

0.001

11

 интегралын

Симпсон

0.001

12

 интегралын

тікбұрыш

0.001

13

[0.9,1.1] аралығында х5-х-0.2=0 теңдеудің түбірін

кесіндіні тең бөлу

0.0001

14

[0.1,1.2] аралығында х4-2х3-х-1=0 теңдеудің түбірін

итерациялар

0.0001

15

 интегралын

тікбұрыш

0.001


2.2 кестенің соңы

16

 интегралын

тікбұрыш

0.001

17

[0,1.2] аралығында х32+1=0 теңдеудің түбірін

кесіндіні тең бөлу

0.0001

18

 интегралын

тікбұрыш

0.001

19

 интегралын

Симпсон

0.001

20

Симпсон

0.0001

21

[0,0.9] аралығында х43-1=0 теңдеудің түбірін

итерациялар

0.0001

22

 интегралын

Симпсон

0.001

23

 интегралын

Симпсон

0.0001

24

а[0,1.0] аралығында х4-2х3-х-1=0 теңдеудің түбірін

кесіндіні тең бөлу

0.00001

25

[0.9,1.9] аралығында х32-3=0 теңдеудің түбірін

итерациялар

0.0001

26

 интегралын

Симпсон

0.001

27

 интегралын

Симпсон

0.0001

28

 интегралын

тікбұрыш

0.001

29

[0,1.0] аралығында х4+х-1.5=0 теңдеудің түбірін

кесіндіні тең бөлу

0.00001

30

 интегралын

тікбұрыш

0.0001

 

 

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

2.3.1   Қандай есептеу процестері итерациялық болып саналады?

2.3.2   Қандай формулалар рекурренттік деп аталады?

2.3.3   Итерациялық циклдарда не үшін шарттар қолданылады?

2.3.4   Интегралдаудың сандық әдістерінің артықшылықтары?

2.3.5   Интегралдаудың сандық әдістерін қандай жағдайларда қолданған дұрыс?

2.3.6   Дихотомия әдісін түсіндіріңіз.

2.3.7   Тікбұрыш әдісінің алгоритмін келтіріңіз.

2.3.8   Итерациялар әдісін түсіндіріңіз.

2.3.9   Симпсон әдісінің алгоритмін түсіндіріңіз.

2.3.10 Жанама әдісінің ерекшеліктерін атаңыз.

 

 

3 Зертханалық жұмыс. Массивтер. Массивтерді өңдеу

 

Жұмыс мақсаты: массивтермен жұмыс істеуді және оларды өңдеу әдістерін үйрену.

 

3.1             Жалпы мәліметтер

Жалпы аты бар реттелген бір типті элементтерден тұратын жиын  массив болып табылады. Массивтің барлық элементтері нөмірленген. Массивтегі элементтің реттік нөмірі индекс деп аталады. Программада пайдалану алдында массивті бейнелеу қажет. Массивтер бірөлшемді (векторлар), екіөлшемді  (матрицалар) және көпөлшемді деп бөлінеді. Бірақ практикада өлшемдері үштен көп массивтер өте сирек қолданылады. Массивті хабарлаудың жалпы түрі:

элементтер_типі   массив_аты [N1][N2]...[Nk];

Индекстер саны [N1][N2]...[Nk] массив өлшемін анықтайды. Массивті хабарлағанда массив элементтерінің жалпы саны көрсетіледі. С++ тілінде келісім бойынша массив элементерін нөмірлеуі нөлден басталады. Массив өлшемі константамен немесе константтық өрнекпен анықталуы мүмкін. Массивтің өлшемін айынамалы деп орнатуға болмайды, ол үшін басқа механизм – жадыны динамикалық бөлу қолданылады. C++ тілінде массивті хабарлаған кезде оны инициализациялауға болады.

Массив элементтеріне екі операцияны: меншіктеу және сұрыптауды қолдануға болады. Массив элементтерін сұрыптауға және оларды өңдеуге әдетте циклдар қолданылады.

 

 

 

 

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

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

 

3.1кестеТапсырма нұсқалары

Нұсқа

Тапсырма

1

Бүтін санды тікбұрышты матрица берілген. Келесіні анықтаңыз: бірде нөлдік элементі жоқ жолдарының санын; берілген матрицада бірден көп рет кездесетін сандарының максимумын.

2

Кейбір элементтері 1 тең бүтін санды тікбұрышты матрица берілген. Келесіні анықтаңыз: 1 тең элементтері жоқ бағандарының санын; жанама диагоналының минималды элементі орналасқан жолдың элементтерінің орта геометриялық мәнін.

3

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

4

Бүтін санды тікбұрышты матрица берілген. Келесіні анықтаңыз:

теріс таңбалы элементтері жоқ жолдар элементтерінің көбейтіндісін; матрицаның бас диагоналына параллельді диагонал элементтер қосындыларының максимумын.

5

Бүтін санды тікбұрышты матрица берілген. Келесіні анықтаңыз:

оң таңбалы элементтері жоқ бағандарының элементтерінің қосындысын; матрицаның жанама диагоналдарына параллельді диагоналдарының элементтер қосындыларының модульдер минимумын,

6

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

7

Берілген 10х10 өлшемі бар матрицада k-ші жол k-ші бағанмен бірдей болатын  осындай k-ларды табыңыз. Ең кемінде бір теріс таңбалы элементі бар жолдарының элементтер қосындысын табыңыз.

8

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


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

9

Егер де матрица элементі қасындағы көршілерінің барлығынан кіші болса, ол жергілікті минимум деп аталады. Өлшемі 10х10 болатын берілген матрицаның жергілікті минимумдар санын есептеңіз.

10

Бүтін санды тікбұрышты матрица берілген. А матрицада Aij  элементі i–ші жолда минималды және j-ші бағанда максималды болатын элементтері бар болсын. Осындай шартты қанағаттандыратын ең кемінде бір оң таңбалы элемент болған жолдарының элементтер көбейтіндісін анықтаңыз.

11

Тек қана нөлдік элементтері бар жолдар мен бағандарды матрицадан жойып, оны тығыздатыңыз. Ең кемінде бір оң таңбалы элементі бар жолдардың біріншісін табыңыз.

12

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

13

Нақты санды квадратты матрицаның элементтерінің орындарын келесі тәртіппен ауыстырыңыз: максималды элементті сол жақтағы жоғарғы бұрышқа, шамасы бойынша келесіні - (1,1) орынға, келесіні – (2,2) орынға, т.с. Осы ретпен бас диагоналды толтырыңыз.

14

Бүтін санды квадратты матрица берілген. Теріс таңбалы элементтері жоқ жолдардағы элементтерінің орта арифметикалық мәнін есептеңіз. Нәтижені векторға жазыңыз.

15

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

16

10х10 өлшемді нақты матрицаның жанама диагоналынан жоғары орналасқан элементтерінің орта геометриялық шамасын анықтаңыз. Минималды элементтен кейін орналасқан элементтерді векторға жазыңыз.

17

Бүтін сандардан тұратын 6х5 өлшемі бар екіөлшемді массив берілген. Осыдан бірөлшемді массивті келесі тәртіппен құрастырыңыз: жаңа массивтің әр элементі бұрынғы массивтің сәйкес жолының 2-ге немесе  4-ке еселі теріс таңбалы элементтер санына тең болсын.

18

Егер де матрица элементі қасындағы көршілерінің барлығынан үлкен болса, ол жергілікті максимум деп аталады. Өлшемі 12х12 болатын берілген матрицаның жергілікті максимумдар санын есептеңіз.


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

19

Нақты матрицада бірде теріс таңбалы элементі жоқ бірінші жолының нөмірін анықтаңыз. Матрица бағандарының элементтер қосындыларының максимумын анықтаңыз.

20

Өлшемі 10х8 болатын А матрицаның жолының сипаттамасы деп оның жұп оң таңбалы элементтерінің қосындысын атаймыз. Берілген матрицаның жолдарының орнын ауыстырып, оларды сипаттамалары өсу ретімен орналастырыңыз.

21

Бүтін санды квадратты матрица берілген. Теріс таңбалы элементтері жоқ жолдардағы элементтерінің орта геометриялық мәнін; матрицаның бас диагоналына параллельді болатын диагоналдардың элементтер қосындыларының максимумын анықтаңыз.

22

Өлшемі 9х5 болатын бүтін санды массив берілген. Бірөлшемді массивті келесі тәртіп бойынша құрастырыңыз: массивтің әр элементі бастапқы массивтің сәйкес бағанының модулі бойынша ең кіші элеметіне тең.

23

Бүтін санды 10х8 матрица берілген. Ең болмаса жалғыз теріс таңбалы элементі бар бағандарының элементтер қосындысын табыңыз.

24

Бүтін санды матрица берілген Жанама диагоналдағы элементтер модульдерінің орта геометриялық мәнін; матрицаның максималды элементі мен оның орнын анықтаңыз.

25

Бүтін санды квадратты матрица берілген. Матрицаның бас диагоналына параллельді болатын диагоналдардың элементтер қосындыларының минимумын анықтаңыз. Қосындыларды бірөлшемді массивке жазыңыз.

26

Бүтін санды 6х5 массив берілген. Бірөлшемді массивті келесі тәртіп бойынша құрастырыңыз: массивтің әр элементі бастапқы массивтің сәйкес бағанының бірінші жұп элеметіне тең. Осындай элемент жоқ болса, оны нөлге тең деп шығарыңыз.

27

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

28

Бүтін санды 10х10матрица берілген. Бас диагоналдан жоғары орналасқан элементтердің модульдерінің қосындысын анықтаңыз. Максималды элементінен кейін орналасқан матрицаның элементтерін векторға жазыңыз. 

29

Бүтін санды матрица берілген. Ең болмаса жалғыз оң таңбалы элементі бар бағандарының элементтер көбейтіндісін табыңыз. Минималды элементіне дейін орналасқан матрицаның элементтерін векторға жазыңыз. 


3.1 кестенің соңы

30

Теріс таңбалы тақ элементтер модулінің қосындысы бүтін санды матрицаның сипаттамасы деп аталады. Бағандарының орнын ауыстырып, оларды сипаттамалары өсу ретімен орнатыңыз.

 

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

3.3.1   Элементтер массиві дегеніміз не?

3.3.2   Көпөлшемді массивтің максималды өлшемі қандай бола алады?

3.3.3   Массив қалай хабарланады?

3.3.4   Динамикалық жадыны бөлу қандай мақсатымен қолданылады?

3.3.5   Массив элементтерін қалай инициализацияланды?

3.3.6   Массив элементтері кездейсоқ ретімен қалай құрастыруға болады?

3.3.7   С++ тілінеде массив элементтерін енгізу әдістерін атаңыз.

3.3.8   Кез келген өлшемді матрицаның әр жолындағы максималды мәнін табу алгоритмін түсіндіріп беріңіз.

3.3.9   Квадратты матрицаны өңдеудің ерекшеліктерін атаңыз.

3.3.10 Кез келген өлшемді матрицаны бағандары (жолдары) бойынша өңдеуді қалай ұйымдастырады?

 

 

4       Зертханалық жұмыс. Массивтерді реттеудің әдістері

 

Жұмыс мақсаты: С++ тілінде массивтерді реттеудің әртүрлі алгоритмдерін пайдаланудың практикалық дағдыларын алу.

 

4.1 Жалпы мәліметтер

Көптеген есептерде массивтердің элементтерін өсу немесе кему реті бойынша орын ауыстыру қажет болады.  Осындай массивтер реттелген, ал оларды алу процесі реттеу деп аталады

 

4.1.1 Қарапайым таңдау бойынша реттеу.

Қарапайым таңдау бойынша реттеу ең қарапайым алгоритм болып табылады. Реттелетін массивте ең кіші элемент табылады, оның орнын массив басындағы элементпен алмастырады. Массивтің қалған бөлігі өзбетінше бөлек массив деп қарастырылып, онда да ең кіші элемент табылып, соңғы массивтің бірінші элементімен орнын алмастырады. Массив жалғыз элементке дейін қысқарғанша әрекеттер қайталанады.

 

4.1.2 Көбіршік реттеу әдісі.

Реттеу алгоритмдердің бір класын көбіршік реттеу деп түсінеді. Қарапайым нұсқада көбіршік реттеу өте жәй орындалады, сондықтан әдетте оптималдау элементтері бар көбіршік реттеу қолданылады. Көбіршік реттеу алгоритмдерінің барлығында келесі ерекшелік бар болады – элементтермен алмасу массивтің екі көрші элементтері арасында орындалады.

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

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

 

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

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

 

4.1 кестеТапсырмалар нұсқалары

Нұсқа

Тапсырма

1

Бүтін санды В(10,7) матрица берілген. Қарапайым реттеу әдісімен жолдарындағы элементтерін өсу тәртібі боынша орналастырыңыз.

2

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

3

А(6,5) матрицаның барлық теріс таңбалы элементтерін В векторына жазыңыз. Қадамдар саны бойынша оптималдауы бар көбіршік реттеуді қолданып оларды кемуі бойынша орнатыңыз.

4

Бүтін санды В(10,7) матрица берілген. Қадамдар саны бойынша оптималдауы бар көбіршік реттеуді қолданып, элементтерін кемуі бойынша орнатыңыз.

5

Нақты санды С(6,8) матрица берілген. Оның жолдарындағы элементтерін қарапайым реттеу әдісі көмегімен өсу ретімен орнатыңыз.

6

Х(10,10) матрицаның барлық оң таңбалы элементтерін Y векторына жазыңыз. Қадамдар саны бойынша оптималдауы бар көбіршік реттеуді қолданып, оларды өсу бойынша орнатыңыз.


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

7

Бүтін санды Z(10,10) матрицаның барлық жұп элементтерін Y векторына жазыңыз. Қарапайым реттеу әдісін қолданып оларды өсу тәртібімен орнатыңыз.

8

Бүтін санды А(8,8) матрица берілген. Оның жолдарындағы элементтерін қарапайым реттеу әдісі көмегімен өсу ретімен орнатыңыз.

9

А(6,5) матрицаның барлық теріс таңбалы элементтерін В векторына жазыңыз. Оптималдауы жоқ көбіршік реттеу әдісімен оларды кемуі бойынша орнатыңыз.

10

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

11

А(6,5) матрицаның нөлге тең емес элементтерін В векторға жазыңыз. Қадамдар саны бойынша оптималдауы бар көбіршік реттеу әдісімен оларды кемуі бойынша орнатыңыз.

12

С(6,8) матрицаның оң таңбалы элементтерін А векторға жазыңыз. Қарапайым реттеу әдісін қолданып, оларды өсу ретімен орнатыңыз.

13

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

14

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

15

Нақты В(7,10) матрица берілген. Оптималдауы жоқ көбіршік реттеу әдісімен оның бағандарындағы элементтерін өсу бойынша орнатыңыз.

16

Нақты А(4,7) матрица берілген. Оның барлық оң таңбалы элементтерін векторға жазыңыз. Оптималдауы жоқ көбіршік реттеу әдісімен оның элементтерін өсу бойынша орнатыңыз.

17

А(6,6) матрицаның нөлге тең емес элементтерін С векторға жазыңыз.  Қадамдар саны бойынша оптималдауы бар көбіршік реттеу әдісімен оларды өсу бойынша орнатыңыз.

18

А(6,5) матрицаның барлық теріс таңбалы элементтерін В векторға жазыңыз. Қарапайым реттеу әдісін қолданып, оларды кемуі ретімен орнатыңыз.

19

Бүтін санды Z(8,12) матрицаның барлық тақ элементтерін Х векторға  жазыңыз. Қарапайым реттеу әдісін қолданып, оларды кему ретімен орнатыңыз.

20

Нақты А(5,8) матрица берілген. Қарапайым реттеу әдісін қолданып, оның жолдарындағы элементтерін өсу ретімен орнатыңыз.


4.1 кестенің соңы

21

Бүтін санды К(6,8) матрица берілген. Әр қадамды орындау уақыты бойынша оптималдауы бар көбіршік реттеу әдісімен оның бағандарындағы элементтерін кемуі бойынша орнатыңыз.

22

Х(10,10) матрицаның барлық оң таңбалы элементтерін Y векторға жазыңыз. Қарапайым реттеу әдісін қолданып, оларды өсу ретімен орнатыңыз.

23

Нақты А(4,7) матрица берілген. Оның барлық оң таңбалы элементтерін векторға жазыңыз. Оптималдауы жоқ көбіршік реттеу әдісімен элементтерін өсу бойынша орнатыңыз.

24

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

25

Нақты С(9,9) матрица берілген. Қарапайым реттеу әдісін қолданып оларды кемуі ретімен орнатыңыз.

26

Нақты А(6,5)) матрица берілген. Оның барлық теріс таңбалы элементтерін векторға жазыңыз. Оптималдауы жоқ көбіршік реттеу әдісімен элементтерін кему бойынша орнатыңыз.

27

Нақты С(7,9) матрица берілген. Қарапайым реттеу әдісін қолданып, оның бағандарындағы элементтерін кему ретімен орнатыңыз.

28

Нақты А(4,7) матрица берілген. Оның барлық оң таңбалы элементтерін векторға жазыңыз. Қарапайым реттеу әдісін қолданып, элементтерін өсу ретімен орнатыңыз.

29

Бүтін санды F(4,7) матрица берілген. Оптималдауы жоқ көбіршік реттеу әдісімен оның бағандарындағы элементтерін кему бойынша орнатыңыз.

30

Нақты В(7,10) матрица берілген. Әр қадамды орындау уақыты бойынша оптималдауы бар көбіршік реттеу әдісімен оның жолдарындағы элементтерін өсу бойынша орнатыңыз.

 

 

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

4.3.1   Сіз білетін реттеу әдістерін атаңыз.

4.3.2   Қарапайым реттеу әдісін түсіндіріңіз.

4.3.3   Қарапайым таңдаумен реттеу әдісінің блок-сұлбасын келтіріңіз.

4.3.4   Көбіршік реттеу әдісінің ерекшеліктерін атаңыз.

4.3.5   Көбіршік реттеу әдісін оптималдаудың мағынасы не де?

4.3.6   Көбіршік реттеу әдісін қолданғанда реттеу қадамдарының санын қалай азайтуға болады?

4.3.7   Көбіршік реттеу әдісін оптималдағанда орын ауыстыруы болмағанының белгісі қандай мақсатпен қолданылады?

4.3.8   Көбіршік реттеу әдісін әр қадам уақыты бойынша оптималдауының мағынасы не де?

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

4.3.10 Аяқталу белгісі бар алмасу реттеу алгоритмінің мысалын келтіріңіз.

 

 

5 Зертханалық жұмыс. Символдық мәліметтерді өңдеу

 

Жұмыс мақсаты: символдық ақпаратпен (жолдармен) практикалық жұмыс жасаудың дағдыларын алу.

 

5.1 Жалпы мәліметтер

 ‘\0’ байтпен аяқталатын char типті мәндері бар массив жол болып табылады.  Жолды хабарлағанда ‘\0’ байтпен аяқталатынын есепке алып, N емес, N+1 элементті көрсету керек. Жолдарды  инициализациялағанда хабарлаудың дәстүрлі әдістері қолданылады.  

Инициализияланған жолдық айнымалының ұзындығына тең константаны анықтағанда  sizeof() функцияны қолдануға болады.  

Символдық айнымалылар мен жолдарды еңгізуге Си тілінде <stdio.h>  библиотекасындағы scanf() (бірінші бос орынды символға дейін еңгізу) немесе gets() қолданылады. С++ пайдаланушыға қосымша <iostream.h> библиотекасынан екі cin,get  және  cin.getline функцияларын ұсынады. Шығару үшін осы библиотекаларда сол сияқты функциялар бар.

Жолдармен жұмыс жасағанда жиі жағдайда <string.h>,  библиотекасының функциялары қолданылады, мысалы:

а) желімдеу – бірнеше жолдарды тізбектеп бірлестіру:

          strcat (str1, str2);

б) жолдарды көшіру:

          strcpy(str1, str2);

в) жолдарды салыстыру:

          strcmp(str1,str2);

г) жол ұзындығы:

          lenth=strlen(str1);

д) кіші әріппен жазылған символарды бас әріптерге түрлендіру:

          strlwr(str1);

е) бас әріппен жазылған символдарды кіші әріптерге түрлендіру:

          strupr(str1);

ж) кейбір символмен жолды толтыру:

          strset(str1,’символ’);

з) символ кодын алу:

          n=int(a);

 

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

5.1 кестеден нұсқа бойынша таңдалынған есепті шешіңіз. Программаның блок-сұлбасын құрастырып, мәліметтерді еңгізуді ұйымдастырыңыз.  

 

5.1 кесте Тапсырма нұсқалары

Нұсқа

Тапсырма

1

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

2

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

3

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

4

Пайдаланушы еңгізген жолдан бірден көп рет қайталанатын барлық сөздерді экранға шығарыңыз.

5

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

6

Пайдаланушы клавиатурадан еңгізген жолдарды салыстырып, салыстыру нәтижесін экранға шығарыңыз.

7

Бірнеше сөйлемнен тұратын пайдаланушы еңгізген жолда сөйлемдер санын анықтаңыз.

8

Пайдаланушы еңгізген жолда әр екі көрші сөздердің орнын ауыстырыңыз.

9

Пайдаланушы еңгізген жолда сөздер санын анықтаңыз.

10

Пайдаланушы еңгізген жолда сөздер ретін кері қарай орнатыңыз.

11

Пайдаланушы еңгізген жолдағы дауысты әріптен басталатын сөздерді экранға шығарыңыз.

12

Пайдаланушы еңгізген жолда бірінші сөзбен соңғы сөздің орынын ауыстырыңыз.

13

Пайдаланушы еңгізген жолда ең ұзын сөзді табыңыз.

14

Пайдаланушы еңгізген жолды кері ретімен орнатыңыз.

15

Пайдаланушы еңгізген барлық n жолдарды біріктіріңіз. Еңгізген кезде әр жолдан кейін  Enter батырмасын басыңыз.

16

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

17

Пайдаланушы еңгізген жолда бірінші және соңғы k символдарды * символына ауыстырыңыз.

18

Пайдаланушы еңгізген жолда ең қысқа сөзді анықтаңыз.


5.1 кестенің соңы

19

Пайдаланушы еңгізген жолдан экранға  а әрібімен аяқталатын сөздерді шығарыңыз.

20

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

21

Пайдаланушы еңгізген жолда барлық кіші әріптерін олардың ASCII кодтарына ауыстырыңыз.

22

Пайдаланушы еңгізген жолда қатаң әріптер санын анықтаңыз. Барлық қатаң әріптерді экранға шығарыңыз.

23

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

24

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

25

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

26

Бірнеше сөйлемнен тұратын пайдаланушы еңгізген мәтінде ең ұзын сөйлемді анықтаңыз.

27

Пайдаланушы еңгізген жолда барлық дауысты әріптерді (регистрынан тәуелсіз) олардың ASCII кодтарына ауыстырыңыз.

28

Пайдаланушы енгізген жолда дауысты әріптер санын анықтаңыз. Жолдың барлық дауысты әріптерін экранға шығарыңыз.

29

Пайдаланушы енгізген жолдан барлық қатаң әріптерді жойыңыз.

30

Бірнеше сөйлемнен тұратын пайдаланушы еңгізген мәтінде ең қысқа сөйлемді анықтаңыз.  

 

 

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

5.3.1   Жол деген не?

5.3.2   Жолдық айнымалылар қалай хабарланады?

5.3.3   Жолдардың негізгі ерекшеліктерін атаңыз.

5.3.4 Инициализияланған жолдық айнымалының ұзындығын қалай анықтауға болады?

5.3.5   Жолдар қалай еңгізіледі?

5.3.6   <stdio.h> библиотекасын қолдану көмегімен белгіленген ұзындығы бар жолды еңгізу мысалын келтіріңіз.

5.3.7   Жолдарды шығару үшін қандай функциялар қолданылады?

5.3.8   Символдық мәліметтерді жол-жолымен еңгізудің мысалын келтіріңіз.

5.3.9   Жолды символдармен еңгізу мысалын келтіріңіз.

5.3.10 Жолдармен жұмыс жасауға қандай негізгі функциялар қолданылады?

 

 

6 Зертханалық жұмыс. Құрылымдар және бірлестіктермен жұмыс жасау

 

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

 

6.1 Жалпы мәліметтер

Құрылым (struct) әртүрлі типтегі компоненттердің (элементтердің) белгілеген санынан тұрады. Осындай struct типін бейнелеудің түрі келесідей:

struct   құрылым_аты

{ 1тип 1элемент_аты;

Nтип Nэлемент_аты; }

құрылым_типті_ айнымалының_аты;

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

Бірлестіктер (union) C++ тілінде құрылымдардан ақпаратты сақтау әдісімен айырылады. Уақыттың әр моментінде бірлестік тек қана бір элементтің мәнін сақтайды. Бірлестіктің ең үлкен элементін сақтайтындай жады бөлінеді. 

Осындай union типін бейнелеудің түрі келесідей:

union   бірлестік_аты

{ 1тип 1элемент_аты;

Nтип Nэлемент_аты;

} бірлестік_типті_ айнымалының_аты;

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

Жадыны үнемдеудің оданда жоғары денгейіне жету үшін  C++ тіліндегі программаларда анонимды бірлестіктерді қолдануға болады. Анонимды бірлестіктерде ат жоқ, бірлестік айнымалысы хабарланбайды:

union {  

1тип 1элемент_аты;

Nтип Nэлемент_аты;   

} ;

Анонимды бірлестіктердің элементтерімен айналасу атсыз (нүктесіз), қарапайым айнымалылармен айналасу сияқты орындалады.

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

6.1 кестеден нұсқа бойынша таңдалынған есепті шешіңіз. 10 жолдан (жазбалардан) тұратын құрылымдық массивтің элементтерін еңгізуді ұйымдастырыңыз.

 

6.1 кесте  Тапсырма нұсқалары

Нұсқа

Тапсырма

1

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

2

Құрылымдық типті массив берілген. Онда кітапхана абонентіне қызмет жасау мәліметтері: кітап авторы, кітап аты, оқырман аты-жөні, оқу билетінің нөмірі, кітапты тапсыру мерзімі сақталады. Пайдаланушы еңгізген датаға дейін кітаптарды тапсыруға міндетті оқырмандар туралы мәліметтерді экранға шығарыңыз.

3

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

4

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

5

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

6

Құрылымдық типті массив берілген. Онда фабриканың қызметкерлері туралы мәліметтері: аты-жөні, адресі және жұмысқа орналасқан күні (айы мен жылы) сақталады. Фамилияласты қызметкерлердің адрестерін экранға шығарыңыз.

7

Құрылымдық типті массив берілген. Онда иттер көрмесінің нәтижелері: тұқымы, аты, жас шамасы, иесі, орны сақталады. Жас шамалары  2 жастан үлкен иттер туралы барлық ақпаратты шығарыңыз.


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

8

Құрылымдық типті массив берілген. Онда фирма компьютерлері туралы мәліметтер: моделі, комплектациясы, бағасы, саны сақталады. Фирманың барлық компьютерлерінің жалпы бағасын санаңыз.

9

Құрылымдық типті массив берілген. Онда дискілер туралы мәліметтер: альбом аты, орындаушы, шығарылған жылы, бағасы сақталады. Бір орындаушының дискілері туралы барлық ақпаратты шығарыңыз.

10

Құрылымдық типті массив берілген. Онда автомобильдерді жалға беру туралы мәліметтер: маркасы, шығарылған жылы, жалға алу бағасы, жалға алу уақыты сақталады. Ұзақ мерзімге (3 айдан артық) жалға алынған автомобильдер туралы ақпаратты экранға шығарыңыз.

11

Құрылымдық типті массив берілген. Онда кітапхана фонды туралы мәліметтер: кітап авторы, кітап аты, баспа, шығарылған жылы, саны сақталады. Пайдаланушы сұраған автордың кітаптар санын анықтаңыз.

12

Құрылымдық типті массив берілген. Онда төлемшілер мен алушылар туралы мәліметтер: төлемшінің есеп айырысу шоты, төлемші аты, алушының есеп айырысу шоты, алушы аты, төленетін сома сақталады. Клавиатурадан еңгізілген төлемші аты бойынша оның есеп айырысу шотынан аударылған сома және кімге аударылған туралы ақпаратты экранға шығарыңыз. Егер де осындай есеп айырысу шот болмаса, сәйкес хабарламаны шығарыңыз.

13

Құрылымдық типті массив берілген. Онда дүкендегі тауарлар туралы мәліметтер: тауар аты, бөлімше аты, тауардың бағасы сақталады. Пайдаланушы клавиатурадан еңгізген бөлімшенің тауарлары туралы ақпаратты экранға шығарыңыз.

14

Құрылымдық типті массив берілген. Онда пойыздар кестесі  туралы мәліметтер: пойыз нөмірі, аты, стансаға келу уақыты, кеті уақыты (сағат, минут) сақталады. Уақытты клавиатурадан еңгізіп, осы уақытта стансада турған пойыздар туралы ақпаратты анықтаңыз.

15

Құрылымдық типті массив берілген. Онда спорттың белгілі түрінен жарыстар туралы мәліметтер: елі, жылы, жарыстар түрі, топ аты, алған орыны. сақталады. Жылды клавиатурадан еңгізіп, осы жылы өткен жарыстар туралы барлық ақпаратты алыңыз.

16

Құрылымдық типті массив берілген. Онда студенттердің стипендиялары туралы мәліметтері: студенттің  аты-жөні, курс нөмірі, орта баллы, стипендия шамасы, қосымша төленімдер сақталады. Стипендияны алмайтын студенттер туралы ақпаратты экранға шығарыңыз.


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

17

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

18

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

19

Құрылымдық типті массив берілген. Онда дүкендегі тауарлар туралы мәліметтер: тауар аты, тауардың бағасы, саны сақталады. Пайдаланушы клавиатурадан еңгізген тауар туралы ақпаратты экранға шығарыңыз. Егер де осындай тауар жоқ болса, экранға сәйкес хабарлауды шығарыңыз.

20

Құрылымдық типті массив берілген. Онда келесідей мәліметтер: аты-жөні, туған күні, жұлдызнама белгісі сақталады. Пайдаланушы клавиатурадан еңгізген жұлдызнама белгісінде туылған адамдар туралы ақпаратты экранға шығарыңыз.

21

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

22

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

23

Құрылымдық типті массив берілген. Онда иттер көрмесінің нәтижелері: тұқымы, аты, жас шамасы, иесі, орны сақталады. Клавиатурадан енгізген иттердің тұқымың туралы барлық ақпаратты шығарыңыз.

24

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

25

Құрылымдық типті массив берілген. Онда дүкендегі тауарлар туралы мәліметтер: тауар аты, дүкен аты, тауардың бағасы сақталады. Пайдаланушы клавиатурадан еңгізген тауар туралы ақпаратты экранға шығарыңыз.


6.1 кестенің соңы

26

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

27

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

28

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

29

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

30

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

 

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

6.3.1 Құрылым типті мәліметтерді қалай түсінесіз?

6.3.2 Құрылым типті мәліметтер қалай бейнеленеді?

6.3.3 Құрылымдар массивтерін қалай бейнелейді? Оларды қандай мақсатпен қолданады?

6.3.4 Құрылымдық массивтер элементтеріне қалай қол жеткізіледі?

6.3.5 Бірлестіктің анықтамасын беріңіз.

6.3.6 Бірлестік элементіне қалай қол жеткізіледі?

6.3.7 Бірлестік пен құрылым арасындағы айырмашылықты түсіндіріңіз.

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

6.3.9 Анонимды бірлестіктер қандай мақсатпен қолданылады?

6.3.10 Құрылымды бірлестікке салуға болады ма?

 

 

7 Зертханалық жұмыс. Файлдар, файлдармен жұмыс істеу

 

Жұмыс мақсаты: С++ тілінде файлдармен жұмыс істеудің практикалық дағдыларын алу.

 

 7.1 Жалпы мәліметтер

 Жалпы аты бар біртипті элементтер тізбегі файл болып табылады. Элементтер саны (файл ұзындығы) шектелмеген. Файлдар магнитті ленталарда, магнитті дискілерде, басқа сыртқы тасымалдаушыларда және компьютердің оперативті жадысында жасалады.

C++ тіліндегі программаның файлмен жұмыс істеуге мүмкіндігі болуы үшін программа басына <fstream.h>  бас файлын орнату қажет. Осы мақсатымен С и тілінде <stdio.h> қолданылады.

Файлдарға мәліметтерді жазуын келесі екі режімдерде орындауға болады:

1) келесі оператор көмегімен жаңа файлды жасау (алдында жасалған, бар болатын файлды қайта жазу):

ofstream  ағын _аты ("файл_ аты.кеңейтілуі");

2) бар болатын файлға жазбаларды қосу:

         ofstream   ағын _аты ("файл_ аты.кеңейтілуі", ios::app);

Файлға шығару (<<) ендіру  операторы көмегімен орындалады.

Файлды жабу үшін close () функциясы қолданылады.

Мәліметтерді файлдан еңгізу (оқу).

Еңгізу режімінде файлды ашу үшін келесі оператор қолданылады:

ifstream    ағын _аты ("файл_ аты.кеңейтілуі");

Файлдан еңгізу  (<<) шығару операторы көмегімен орындалады.

Кейбір кезде файлға жазу немесе файлдан оқу символдық жолдарға емес, күрделі мәліметтер типтеріне (массивтер және құрылымдарға) қолданылады. Осындай мақсаттарымен C++ тілінде write (жазу) және read (оқу) функциялары қолданылады.

 

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

7.2.1 № 4 зертханалық жұмыста шешілген есеп үшін (4.1 кесте) аталған массивтің элементтерін файлдан еңгізуді ұйымдастырыңыз. Алынған нәтижелерді де сол файлға шығарыңыз.

7.2.2 № 6 зертханалық жұмыста шешілген есеп үшін (6.1 кесте), мәліметтерді файлдан еңгізуді ұйымдастырыңыз. Таңдау немесе есептеу (нұсқаға байланысты) нәтижелерін бөлек файлға шығару керек.

 

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

7.3.1 Мәліметтер файлы деген не? Анықтамасын беріңіз.

7.3.2 Стандартты еңгізу-шығару ағынның мысалын келтіріңіз.

7.3.3 Си мен С++ тілдері файлдармен жұмыс істеудің қандай мүмкіншіліктерін ұсынады?

7.3.4 Қол жеткізу режімі деген не?

7.3.5 Мәтіндік файлдармен жұмыс істегенде қандай қол жеткізу режімдері мүмкін болады?

7.3.6 Файлды оқу қалай ұйымдастырылады?

7.3.7 Мәліметтерді файлдан жол-жолымен оқу қалай ұйымдастырылады? Мысал келтіріңіз.

7.3.8 Мәліметтерді файлға шығару қалай ұйымдастырылады?

7.3.9 Бар болатын файлға мәліметтерді қосуды қалай жасауға болады?

7.3.10 Файлды жабумен байланысты әрекеттердің механизмін түсіндіріңіз.

 

 

8 Зертханалық жұмыс. Функциялар. Рекурсия

 

Жұмыс мақсаты: С++ тілінде функцияларды қолданудың практикалық дағдыларын алу.

 

8.1 Жалпы мәліметтер

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

Функция құрылымы main программаның құрылымына ұқсас. Функция бейнеленуі функция басынан, айнымалыларды бейнелеуден және операторлардан тұрады:

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

{

айнымалыларды хабарлау;

1оператор;

…;

Nоператор;

}

Мұндағы: функция_типі  - негізгі программаға қайтарылатын нәтиженің типі; функция_аты мағынасы бойынша функция орындайтын операцияға сәйкес уникалды ат; формалды_параметрлер_тізімі формалды параметрлер тізімі және олардың типтері.

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

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

Есептелген мәнді негізгі программаға қайтару үшін функцияларда келесі оператор қолданылады:

return (нәтиже);

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

Жергілікті айнымалылар функцияның ішінде бас main функциядағы сияқты хабарланады. Жергілікті айнымалылар тек қана олар хабарланған фунцияның ішінде жұмыс жасайды. Глобалдьы айнымалылар функциялардан тыс программа басында хабарланады. Программадағы кез келген функциядан глобальды айнымалыларды қолдануға болады. Егер де жергілікті және глобальды айнымалылардың аттары бірдей болса, функциядағы айнымалы  C++ компиляторымен жергілікті айнымалы ретінде қабылданады. Егер де функция ішінде жергілікті айнымалымен аты бірдей болатын глобальды айнымалыны қолдану қажет болса, келесі рұқсат беру глобальды операторды пайдалану керек:

:: айнымалы_аты

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

 

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

Рекурсияны қолданып, 8.1 кестеден таңдалынған нұсқа бойынша есепті шешіңіз.

 

8.1 кесте Тапсырма нұсқалары

Тапсырма

Нұсқа

1

2

3

4

5

6


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

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24


8.1 кестенің соңы

25

26

27

28

29

30

 

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

8.3.1 Функцияның анықтамасын беріңіз.

8.3.2 Функцияны бейнелеу деген не?

8.3.3 Прототиптер қандай мақсатпен қолданылады?

8.3.4 Функция типінде void сөзі қандай мақсатпен қолданылады?

8.3.5 Функцияны қалай шақыруға болады? 

8.3.6 Нақты параметр деген не?

8.3.7 Формалды параметрлердің нақты параметрлерден айырмашылығы не де?

8.3.8 Функциядан шығу қалай орындалады?

8.3.9 Рекурсивті функциялардың артықшылықтары мен кемшіліктерін атаңыз.

8.3.10 Жергілікті және глобалды параметрлер қандай мақсатпен қолданылады?


А Қосымшасы

Алгоритмдерді бейнелеудің әдістері

 

А.1 Кесте –  Алгоритмдерді бейнелеудің әртүрлі әдістерінің сәйкестігі

Құрыл-ым

Псевдокодтар

Flow-формалар

Насси-Шнейдерман

диаграммалары

 

Тізбекте-лу

<1 әрекет>

<2 әрекет>

Тармақ-

талу

   Егер  <шарт>

      онда <действие 1>

      немесе <действие 2>

   Аяқталды-егер

Цикл-әзірше

   Цикл-әзірше <шарт>

<әрекет>

   Аяқталды-цикл  

Таңдау

   Таңдау <код>

   <1 код >: <1 әрекет >

   <2 код >: <2 әрекет

    немесе <3 әрекет >

   Аяқталды-выбор

Параметрі бар цикл

   <индекс> = 

        <n>,<m>,<h> үшін

        <әрекет >

   Аяқталды-цикл

Цикл-болғанша

   Орындау

<әрекет>

   Болғанша <шарт>

 

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

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

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

3.   Дейтел Х.М., Дейтел П.Дж. Как программировать на С++. – М.: БИНОМ, 1999.

4.   Страуструп Б. Язык программирования С++. – М.: Радио и связь, 1991.

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

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

7.   Вирт Н. Алгоритмы и структуры данных. – М.: Мир, 1989.

8.   Культин Н. С/С++ в задачах и примерах. – СПб.: Питер, 2002. 

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

10.   Липпман С., Лажойе Ж. Весь С++ от азов до совершенства. – СПб.: Невский диалект. - М.: ДМК Пресс, 2007.

11.   Давыдов В.Г. Технологии программирования С++. - СПб., 2005.

12.   Мудров А.Е. Численные методы для ПЭВМ на языках Бейсик, Фортран и Паскаль. – Томск: МП «РАСКО», 1991.

13.   Красикова И.Е. С++ просто как. - М., 2005.

14.   Сябина Н.В. Технологии программирования. Конспект лекций (для студентов всех форм обучения спец. 050702, 050703). - Алматы: АИЭС, 2008.

15.   Л.К.Ибраева, Н.В.Сябина. Информатика. Основы С++. Часть 5. Методические указания к выполнению лабораторных работ (для студентов всех специальностей). - Алматы: АИЭС, 2006.

 

                                                                         2007  ж. жалпы жоспары, реті 16