Ііі. Есептің программасы



жүктеу 1,13 Mb.
Pdf просмотр
бет7/41
Дата06.02.2020
өлшемі1,13 Mb.
#28386
түріПрограмма
1   2   3   4   5   6   7   8   9   10   ...   41

135 
 
орындалу  барысында  айнымалы  аргумент  мәні  өзгереді.  Бұл  жағдайда  функция 
аргумент айнымалы сілтеме арқылы бірнеше мән қайтара алады. 
 
  
Өзін өзі шақыратын функция рекурсия деп аталады. 
Рекурсия  тереңдігі  дегеніміз  –  функция  мәнін  есептеуде  өзін-өзі  шақыру  саны. 
Рекурсивті программалау стек принципіне сүйенеді. 
 
Рекурсия түрлері мынадай: 
  сызықтық рекурсия; 
  параллель рекурсия; 
  қосалқы рекурсия; 
  жоғары ретті рекурсия. 
 
 
Әдебиеттер:[ 
 
1.  Керниган Б., Ритчи Д.,- Язык программирования Си. – М.: Финансы и 
статистика, 1985 г. 
2.  Вирт Н. Алгоритмы и структуры данных: Пер. с анг.- М.: Мир, 1989 г.  
3.  Д.Кнут Искусство программирования для ЭВМ. Основные алгоритмы. М.: 
Мир, 1976. 3.        
4.  Н.Культин., С/С++ в задачах и примерах – БХБ-Петербург, 2002 г. 
5.  Крис Паппас., Программирование на С и С++ - BHV, Киев, 2000 г. 
6.  Т. А. Павловская, А. Ю. Щупак С/С++ Структурное программирование: 
Практикум- СПб.: Питер, 2005   
7.  Уэйт М . Язык Си. Руководство для начинающих: Пер. с англ. – М., Мир, 
1988 г. 
 
 
Практикалық жұмыс №8. 
Тақырыбы: Көрсетекіштер. Көрсеткіштерге қолданылатын амалдар 
 
Сабақтың  мақсаты: 
Динамикалық  құрылымды  мәліметтермен  жұмыс  жасау 
дағдыларын  қалыптастыру,  көрсеткіштерге  қолданылатын  арифметикалық 
амалдарды үйрету. 
 
Материалдар және құрылғылар: тақта, бор. 
 
Жұмыстың мазмұны және орындалу тәртібі: 
1.  Тапсырманы орындау мысалын қарау. 
2.  Ретімен келесі тапсырмаларды орындау.  
3.  Орындалған практикалық жұмыс туралы есепті дайындау. 
 
 


136 
 
Тапсырманы орындау мысалы 
Нақты  типті  элементтерден  тұратын  массивті  тез  сұрыптау  әдісімен  реттейтін 
программа құру. 
#include 
#include 
 
int main() 

const int n=20;   
float arrn, middle, temp; 
int *stackl=new int n,   *stackr=new int n,  sp=0; 
int i,j, left, right; 
clrscr(); 
cout <<" массив элементтерін енгізіңіз "); 
for (i=0, i>arri; 
// Сортировка 
sp=1; stackl 1=0;   stackr 1=n-1;    
while (sp>0) 

// Соңғы сұраныс стегінен таңдау  
left= stackl sp; 
right= stackr sp; 
sp--; 
while (left< right) { 
// Разделение 
i= left; j= right; 
middle= arr( left+ right)/2; 
while (i< j) { 
while (arri< middle) i++; 
while (middle if (i <=j) { 
temp= arri; arri= arrj; arrj=temp; 
i++; j--; 


if (i < right) { 
// Оң жақтағы сұраныс стегін жазу 
sp++; 
stackl sp=i;   stackr sp= right;    

right=j; 
// Енді left және right сол жақ бөлікті шектейді 




137 
 
// Нәтижені шығару 
for (i=0, icout<return 0; 

 
Студенттердің өз бетімен орындауға арналған тапсырмалары 
1.  Нақты  типті  n  элементтен  тұратын  массивтегі  соңғы  теріс  элементтің  оң 
жағында  орналасқан  элементтердің  қосындысын  есептейтін  программа 
жазыңыз.     
2.  Нақты  типті  n  элементтен  тұратын  массивтегі  алғашқы  оң  элементтен  кейін 
орналасқан элементтердің қосындысын есептейтін программа жазыңыз.       
3.  Тізім  берілген.  Оның  ақпараттық  бөлігі  оң  сандардан  тұрады.  Ең  үлкен  санды 
табу керек.  
4.  Ақпараттық бөлігі студенттердің фамилиясынан тұратын тізім құру керек. Тегі 
«Петров» болып келген студенттер санын табу керек. 
5.  Ақпараттық  бөлігі  нақты  сандардан  тұратын  тізім  құру  керек.  Тізімнің  оң 
элементтерінің көбейтіндісін табу керек. 
6.  Ақпараттық  бөлігі  бүтін  сандардан  тұратын  тізім  құру  керек.  Олардың 
қосындысын табу керек.   
7.  Ақпараттық бөлігі бүтін сандардан тұратын тізім құру керек. Тізімнің 2-ге еселі 
элементтерінің санын табу керек. 
8.  Кітап  атауларының  реттелген  тізімі  берілген.  Тізімдегі  реттілікті  сақтай 
отырып жаңа кітап туралы ақпарат қосу керек.   
 
Практикалық жұмыстың орындалуы туралы есептің формасы  
Есепте болуы қажет: 
Кез-келген орындалған тапсырма үшін    
1. 
Есептің шешімінің математикалық моделі; 
2. 
Есептің шешімінің алгоритмі; 
3. 
Есеп шешімінің алгоритмі орындалған программа. 
 
Блиц-тест 
1. С++ тілінде көрсеткіш дегенімі не?  
a)  мәліметтер регистріні нөмірі           
b)  оперативті жадыда стек сегментін анықтаушы 
c)  басқа айнымалының адресі бар айнымалы 
d)  жіберуді басқаруды анықтайтын белгі          
e)  кейбір пернетақтада жоқ пернелерді бейнелейтін символдар тізбегі 
2. Стек- бұл бір бағытталған тізімнің дербес түрі, мұнда:  
a)  элементті басына қосуға, ал соңынан кез-келген элементті жоюға рұқсат 
етіледі; 
b)  шыңы деп аталатын бір шетіне элементтерді қосуға және жоюға рұқсат 
етіледі; 
c)  бірінші және соңғы элементтер арасында байланыс анықталған; 


138 
 
d)  элементті соңына қосуға және басынан жоюға рұқсат етіледі; 
e)  аталған нұсқалардың кез-келгені; 
3. Сызықты байланысқан структураға жатады:    
a)  Стектер, ширеттер, тізімдер 
b)  Ағаштар, желілер  
c)  Стектер, ағаштар 
d)  Ширеттер, тізімдер, желілер  
e)  Тізімдер, желілер  
 
Бақылау сұрақтары 
1.  Статикалық айнымалылар мен динамикалық айнымалылар арасындағы 
айырмашылықты көрсетіңіз. 
2.  Көрсеткіштермен жұмыс жасау кезінде базалық типтің рөлін түсіндіріңіз.  
3.  Динамикалық айнымалылардың қолданылу себептерін көрсетіңіз. 
4.  Қолданушы анықтаған типті базалық тип ретінде қолдануға бола ма? 
5.  Динамикалық жады шектелген бе? 
 
Глоссарий 
 
Көрсеткіштер дегеніміз - басқа айнымалыларының адресінен тұратын айнымалы. 
 
Көрсеткіш - адрес сақтаған ұяшықтар тобы (2 н/се 4 ұяшық). 
 
Ұяшықтардың  нақты  адрестерін  қолдану  үшін  арнайы  операторлар 
қарастырылған: 
  &  унарлық операторы объектінің адресін береді. 
 Р=&C    -  инструкциясы  С  ұяшығының  адресін  Р  айнымалысынаа 
меншіктейді немесе Р айнымалысы С-ға сілтейді деп аталады. 
* унарлық операторы көрсеткішті сипаттауда қолданылады.  
Көрсеткіш 
бұл операторды қолданылғанда осы көрсеткіш сілтейтін объектіні береді. 
Си тілінде  функция өз аргументі ретінде параметр-мәнді қабылдайды, сондықтан 
шақырған  функцияның  айнымалысын    шақырылған  функция  денесінде  отырып 
өзгерту мүмкін емес. Мұны орындау үшін мәнге көрсеткіштерді қолдану керек. 
  Көрсеткіш  бұл айнымалы,  сондықтан оны р=a  немесе  р++  деп  жазуға 
болады.  Ал,  массив  аты  тұрақты  ретінде  қатысады,  яғни  айнымалы  емес, 
сондықтан оны а=p немесе а++ деп жазуға болмайды. 
               
 
Көрсеткіштерді инициализациялау 
  Көрсеткіштерді сипаттау барысында инициализациялауға болады. 
  Көрсеткіштегі  адресті  кез-келген  бүтін  санды  қосу  және  алу  арқылы 
өзгертуге  де  болады.  Мысалы,  адресті  14  ұяшыққа  жылжыту  үшін 
prb=prb+14; 
  Көрсеткіштен  бүтін  мәнді  шегеруге  де  болады,  бұл  жағдайда  ағымды 
ұяшықта  тұрған  көрсеткіш  солға  қарай  көрсетілген  шамаға  ығысып, 
сондағы элементке сілтейді. 
  Бір  көрсеткішті  екінші  көрсеткіштен  шегеруге  болады  (2кКөрсеткіш  те  1 
массивке  сілтеуі  тиіс)  мұның  нәтижесі  олар  сілтеп  тұрған  ұяшықтар 


жүктеу 1,13 Mb.

Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10   ...   41




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау