ЮГОЗАПАДЕН УНИВЕРСИТЕТ "НЕОФИТ РИЛСКИ"
ИНСТИТУТ ПО МАТЕМАТИКА И ИНФОРМАТИКА - БАН


НИКОЛАЙ  КИРОВ
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Сборник
от учебни материали
по
ПРОГРАМИРАНЕ И СТРУКТУРИ ОТ ДАННИ
(Принципи на програмирането със С++, част II)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

, 2004


 
 
 
 
  

Програмният език служи на две свързани цели:
той предоставя на програмиста средство,
с което да зададе операциите за изпълняване
и предоставя концепции, които казват на програмиста
какво може да бъде направено.
Бьорн Строустроп

 
 
 
 
 
 

Рецензент: доц. д-р Петя Асенова
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

© Николай Киров Киров, автор, 2004
© Издателство , 2004

ISBN 954-9526-15-2



 
 



Съдържание

I. Предговор. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . .   4 
II. Лекции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
13. Масиви . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
14. Потоци . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
15. Модули. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
16. Прости алгоритми за сортиране . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
17. Търсене, бързо сортиране  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18. Още за рекурсията . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19. Въведение в структурите от данни  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
20. Реализация на свързани списъци  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21. Нова реализация на свързани списъци . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22. Наследяване  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23. Полиморфизъм  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24. Други реализации на линейни структури от данни . . . . . . . . . . . . . . . . . . . . . . . . .
25. Дървета  . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. . . . . . . . . . . . . . . . 
III. Курсови задачи. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Първа задача [класове, масиви]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  . . . .
Втора задача [файлове, сортиране]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
Трета задача [свързани списъци]. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
IV. Тестове. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Първи тест. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Втори тест. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Трети тест. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
V. Конспект. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VI. Новоиздадени книги на български език за С++, алгоритмите и програмирането .


I. Предговор

Адам е бил щастлив: когато кажел нещо интересно,
можел да бъде уверен, че никой преди него не го е казал.
Марк Твен


   Сборникът е пряко продължение на Сборник от учебни материали по Въведение в програмирането, Деметра, София, 2003. Той е предназначен главно за студентите от Югозападния университет "Неофит Рилски", специалности "Информатика" и "Математика и информатика". Разбира се, сборникът ще бъде полезен и на всички, които изучават програмиране с езика С++. Електронен вариант на сборника се намира в Интернет на адрес:
http://www.math.bas.bg/~nkirov/2004/book2.html
    Учебният материал е по курса лекции на автора Програмиране и структури от данни. Тъй като този курс следва учебника на К. Хорстман "Принципи на програмирането със С++" [1], то в лекциите на сборника са използвани материали от този учебник. Някои теми не са включени в [1], а именно: бързо сортиране, непряка рекурсия, едносвързан списък, опашка, топологично сортиране, двоични дървета и кодиране на Хъфман.
    Както и в първата част на сборника, така и в тази част са дадени примерни курсови задачи и тестове, които са необходимо допълнение към курса по програмиране.


II. Лекции

   Лекциите са организирани по теми. Главно място във всяка тема е отделено на примери - програми, с които се илюстрират новите идеи и понятия. Някои примери представляват единични оператори или части от програми, други - цели програми. На първия ред на всяка цяла програма е написано (като коментар) името на файла, съдържащ текста на програмата. Тези файлове могат да се намерят в Интернет на адрес: http://www.math.bas.bg/~nkirov/2004/book2_cpp.zip
    След повечето текстове на програми са дадени и възможни входове и изходи - резултат от работата на програмата. Например
 
Please enter all salary data: 200 240 250 210 290 310 205 q
The maximum salary is 310

е изход на програма на текстов екран (конзолно приложение). Дадени са и графики от изходите на графични програми. Когато програмата използва файлове, след текста на програмата е дадено съдържанието на файловете от тестовия пример.
    На много места стилът на изложението е телеграфен и не претендира за изчерпателност. ...