WORLD GATEWAY EDUCATION AGENCY WORLD GATEWAY EDUCATION AGENCY
Axborot texnologiyalari va menejment universiteti

Kompyuter injiniringi

Bakalavr Kunduzgi 4 yil Grant mavjud

Dastur haqida

I. Fanning mazmuni

Fanni o’qitishdan maqsad – axborotni yig‘ish, saqlash va qayta ishlash, uzatishning asosiy tamoyillarini C++ dasturlash tili orqali o’rganish. Shuningdek, zamonaviy axborot tizimlarini yaratish va ularni yaratish usul va texnologiyalarini o’rganish. Turli texnik bilimlarga oid masalalarni zamonaviy dasturlash tillari yordamida hal etish va ularning usullarini o’rganishdan iborat.

Fanning vazifasi – “Dasturlash” fanining mohiyati, uning asosiy tamoyillari, vazifalari talabalarni algoritmik bilimlarini rivojlantirishdir. Bunga erishishda zamonaviy dasturlash tili (C++) imkoniyatlaridan foydalaniladi.

II. Asosiy nazariy qismi (ma’ruza mashg‘ulotlari)

Fan tarkibiga quyidagi mavzular kiradi:

1-semestr

  1. Dasturlashga kirish. Algoritm. Algoritmning xossalari va ifodalash usullari. Dastur va uning kodi. Dasturlash tillari. Kompilyator va interpretator. Dasturlash muhitlariDasturning umumiy tuzilmasi. O’zgaruvchilar va ularning tiplari. O’zgarmaslar. Operatorlar va ifodalar. Ma’lumotlarni kiritish va chiqarish. Chiziqli algoritmlarni tashkil qilish va algebraik ifodalarni matematik kutubxona funksiyalari yordamida hisoblash.
  2. Tarmoqlanish operatori. Tarmoqlanuvchi operatorlar va ularni ishlash tartibi. Ternar operatori. Shartsiz o‘tish operatori. Tanlash operatori. Tanlash operatorining umumiy tuzilishi. Tanlash operatori tarkibidagi o’zgaruvchi va qiymatlar, break va default operatorlari.
  3. Takrorlanish operatorlari. Parametrli takrorlanuvchi operator (for). Takrorlanish operatorlari. Sharti oldin va sharti  keyin beriladigan takrorlanuvchi  operatorlar (while va do while).
  4. Massivlar. Bir o‘lchovli massivlar. Statik massivlar. Massiv elementlari bilan ishlash, ularni saralash va qidirish. Massivlar ustida turli xil amallar. Ko‘p o‘lchovli massivlar. Massiv elementlarini saralash va qidirish usullari. Massivlar ustida turli xil amallar bajarish usullari
  5. Funksiyalar. Funksiya tavsifi va tuzilishi. Qiymat qaytaruvchi (tipli) va qiymat qaytarmaydigan (tipsiz) funksiyalar. Parametrli va parametrsiz funksiyalar. Funksiya argumenti. Foydalanuvchi funksiyalarini yaratish. Foydalanuvchi kutubxonasini tashkil etish. Rekursiv funksiyalar.
  6. Satrlar va kengaytirilgan belgilar (Char toifasida). Satr standart funksiyalari va ular yordamida satrlarga ishlov berish. (String toifasida). Satr standart funksiyalari va ular yordamida satrlarga ishlov berish.
  7. Ko‘rsatkichlar va dinamik xotira bilan ishlash. Dinamik massiv va ularni funksiya parametri sifatida qo‘llanilishi. Xotirani taqsimlovchi funksiyalar.
  8. Fayllar. Fayllar va ularning turlari. Matnli fayllar, binar fayllar. Fayllar bilan ishlovchi maxsus funksiyalar.
  9.  Fayllar bilan ishlash. Fayl oqimlari. Fayllarni o’qish va yozish. Fayllar ustuda amallar.
  10. Standart kutubxonalarStandart kutubxonalardan foydalanish. Tashqi kutubxonalarni o’rnatish va foydalanish. Foydalanuvchi kutubxonalarini yaratish
  11. Foydalanuvchi tiplari. Struktura, ro’yxat va sinf. Struktura (struct) yaratish va undan foydalanish.  Ro’yxat (enum) tashkil etish va undan foydalanish.
  12. Obyektga yo‘naltirilgan dasturlash asoslari. Sinf va obyekt tushunchalari. Konstrukturlar. Sodda sinflarga misollar
  13. Obyektga yo‘naltirilgan dasturlash asoslari. Murakkab sinfning umumiy tuzilishi. Sinfda konstruktor, get va set usullari, destruktorlar yaratish. Obyektlar massivi ustida amallar
  14. Obyektga yo‘naltirilgan dasturlash tamoyillari: Inkapsulyatsiya va merosxo‘rlik. Asos sinf a’zolariga murojaatni boshqarish.
  15. Obyektga yo‘naltirilgan dasturlash tamoyillari: Polimorfizm. Operatorlar va usullarni qayta yuklash.
  16. Funksiyalarni qayta yuklash. Friend funksiyalar. Shablonlar. Operatorlarni qayta yuklash.
  17. Konteynerlar (Kolleksiyalar). STL kutubxonalari. Konteyner sinflar. Chiziqli konteynerlar. Chiziqli konteynerlar (array, vector, deque, list, forward_list). Assotsiativ konteynerlar (set, map, multiset, multimap).
  18. Tartiblanmagan assotsiativ konteynerlar. Tartiblanmagan assotsiativ konteynerlar (unordered_set, unordered_map, unordered_multiset, unordered_multimap).
  19. Konteynerlar adapterlari. Stack, queue, priority_ queue. Konteynerlar bilan ishlash algoritmlari. Funktorlarning qo’llanilishi.
  20. Standart iteratorlar. Standart algoritmlar va iteratorlar.
  21. Sonli sinflar bilan ishlash. Sonli sinflar va ular bilan ishlash (complex, vallaray, slice, gslice va hk)
  22. Murakkab saralash algoritmlari. Amaliy dasturlash. Murakkab saralash algoritmlari. Juda katta sonlar bilan ishlash.

2-semestr

  1. Large sinflarini qo’llanilishi. Large sinflarini qo’llanilishi.
  2. Visual C++ muhitida dasturlash. Visual C++ muhitida dasturlash. Visual C++ muhitida menyular va uskunalar paneli.
  3. Komponentalar bilan ishlash. Komponenta tushunchasi va xususiyatlari. Standart, Additional, System komponentalari. Standart, Additional, System komponentalari.
  4. Muloqot oynalari bilan ishlash. Visual C++ muhitida muloqot oynalari va ular sozlash, boshqarish elementlari.
  5. Visual C++ formalar. Formalar, komponentalar va ularga qayta ishlov beruvchi maxsus funksiyalar.
  6. Visual C++ ning grafik imkoniyatlari. Visual C++ ning grafik imkoniyatlari(grafik holat, tasvirlarni va funksiya grafiklarini qurish). Chart komponentalari.
  7. Kichik loyihalarni yaratish. Visual C++ muhitida turli sohaga oid masalalarni yechish uchun (mini) kichik loyihalarni loyihalash usullari. Kichik loyihalar algoritmlarini yozish usullari.
  8. Visual C++ muhitida hisobot. Visual C++ muhitida hisobot  shaklini tayyorlash va chop etish elementlari. Foydalanuvchi interfeysini loyihalash va testash usullari. Kompilyatorlarning veb texnologiyalarga asoslangan imkoniyatlari.

III. Amaliy mashg‘ulotlar uchun quyidagi mavzular tavsiya etiladi:

1-semestr

1. Chiziqli tuzilmalarning algoritmlari va ularning dasturi

2. Tarmoqlanuvchi algoritmlar va ularning dasturi.

3. Takrorlanuvchi tuzilmali algoritmlar va ularning dasturi

4. Kiritish va chiqarish funksiyalari

5. Massivlarni tashkil etish. Ikki o’lchamli massivlarni tashkil etish

6. Massiv elementlari ustida qo‘llaniladigan standart algoritmlar

7. Satrlar va satrlar ustida amallar. String standart funksiyalari

8. Funksiyalarni tashkil etish. Rekursiv funksiyalar.

9. Funksiyalarni qayta yuklash mexanizmi. Fayllar bilan ishlash asoslari

10. Ko’rsatgichlar va ular bilan ish yuritish

11. Dinamik xotira tushunchasi. Dinamik massivlar

12. Sinf va ob’yektlar. Ob’yektga mo'ljallangan dasturlash. Inkapsulyasiya

13. Konstruktorlar va destruktorlar. Sinfning do’stona funksiyalari

14. Ob’yektlar massivi. Merosxo'rlik.

15. Voris sinflarda konstruktorlar va destruktorlar. Polimorfizm.

2-semestr

  1. Voris sinflarda funksiyalarni qayta yuklash.
  2. Voris sinflarda operatorlarni qayta yuklash. Bazaviy sinf a’zolariga murojaatni boshqarish
  3. Shablon funksiyalar Shablon sinflar. Shablon funksiyalarni qayta yuklash
  4. Dasturlash tillarining grafik imkoniyatlari
  5. Ma’lumotlarning dinamik informasion tuzilmasi
  6. Polimorfizm. Operatorlar va funksiyalarni qayta yuklash
  7. Komponenta xususiyatlari va hodisalar
  8. Hodisalarga ishlov berish usullari
  9. Standart, Additional, System sahifasi tavsiflari
  10. Muharrirning menyu va uskunalar paneli. Muharrirning grafik imkoniyatlari bilan ishlash
  11. Muharrirning ma’lumotlar bazasi bilan ishlovchi komponentalari bilan ishlash
  12. Grafik komponentalar yordamida diagrammalar tashkil etish
  13. Mini loyiha ishlab chiqish uchun talablarni o‘rganish
  14. Mini loyihaning algoritmini tuzish usullari
  15. Mini loyihani testlash bosqichlari

IV. Mustaqil ta'lim va mustaqil ishlar

Mustaqil ishini bajarishdan maqsad – professor o’qituvchilarning bevosita rahbarligi va nazorati ostida talabalarni semestr davomida fanni uzluksiz o’zlashtirishini ta’minlash, olingan bilimlarni mustahkamlash, zaruriy ko’nikmalarga ega bo’lish, kelgusidagi darslarga tayyorgarlik ko’rish, aqliy mehnat madaniyati, yangi bilimlarni mustaqil ravishda izlab topish va qabul qilishni shakllantirishdan iborat.

Talaba mustaqil ishini tashkil etishda “Dasturlash” fanining xususiyatlarini, shuningdek, har bir talabaning akademik o’zlashtirish darajasi va qobiliyatini hisobga olgan holda quyidagi shakllardan foydalaniladi: ayrim nazariy mavzularni turli xil o’quv adabiyotlari yordamida mustaqil o’zlashtirish, berilgan mavzu bo’yicha dastur tayyorlash, amaliy va amaliyot mashg‘ulotlarga tayyorgarlik ko’rish, kurs ishini bajarish va tayyorlash, anjumanlarga ma’ruza tezislarini tayyorlash, fan olimpiadalarida ishtirok etish, ilmiy jamiyatlar va to’garaklarda ishtirok etish, kafedralarning ilmiy ishlarida ishtirok etish.

“Dasturlash” fanini o’rganuvchi talabalar auditoriyada olgan nazariy bilimlarini mustahkamlash va iqtisodiyotdagi amaliy masalalarni yechishda ko’nikma hosil qilish uchun mustaqil ta’lim tizimiga asoslanib, kafedra o’qituvchilari rahbarligida mustaqil ish bajaradilar.

Talaba mustaqil ishni tayyorlashda mazkur fanning xususiyatlarini hisobga olgan holda quyidagi shakllardan foydalanishi tavsiya etiladi:

  • Darslik va o’quv qo’llanmalar bo’yicha fan mavzularini o’rganish;
  • Tarqatma materiallar bo’yicha ma’ruzalar qismini o’zlashtirish;
  • Kompyuter texnologiyalari va tizimlari bilan ishlash;
  • Maxsus adabiyotlar bo’yicha referat va ma’ruzalar tayyorlash;
  • Berilgan vazifalar bo’yicha dasturlar tuzish;
  • Talabaning o’quv-ilmiy tadqiqot ishlarini bajarish bilan bog‘liq bo’lgan adabiyotlar, monografiya va ilmiy to’plamlarni chuqur o’rganish;
  • Interaktiv va muammoli o’qitish jarayonida faol qatnashish;
  • Masofaviy (distatsion) ta’lmni tashkil etishda qatnashish.

Mustaqil ta’lim uchun tavsiya etiladigan mavzular:

1-semestr

  1. C++ tilining asosiy imkoniyatlari va strukturalari.
  2. Ma'lumot turlari: int, float, double, char, string.
  3. C++ tilida arifmetik va mantiqiy operatorlar.
  4. If-else shart operatorlari va ularning dasturlashdagi qo‘llanilishi.
  5. Switch-case konstruktsiyasi.
  6. For, while va do-while sikllari.
  7. Massivlar va ularning turlari (bir o'lchamli va ko'p o'lchamli).
  8. Ko‘rsatkichlar va ularning qo‘llanilishi.
  9. Funksiyalar va parametrlarni uzatish usullari (by value va by reference).
  10. C++ tilida rekursiya va u bilan masalalar yechish.
  11.   Sinflar (class) va obyektlar.
  12.   Konstruktorlar va destruktorlar.
  13.   C++ da operatorlarni qayta yuklash (operator overloading).
  14.   Inheritance (meros olish) va uning dasturlashdagi ahamiyati.
  15.   Polimorfizm va virtual funksiyalar.
  16.   Abstrakt sinflar va interfeyslar.
  17.   Fayllar bilan ishlash (fayl yaratish, o‘qish, yozish).
  18.   Static va const kalit so'zlari.
  19.   Dynamic memory allocation (new va delete operatorlari).
  20.   Linked list (bog‘langan ro‘yxat) yaratish va uni boshqarish.
  21.   Stack va Queue strukturalari.
  22.   Binary tree va uning turlari (binary search tree, AVL tree).
  23.   Hash tables va ularning qo‘llanilishi.
  24.   Graf algoritmlari: BFS va DFS.
  25.   Sorting algoritmlar: bubble sort, selection sort, quick sort.
  26.   Searching algoritmlar: linear search va binary search.
  27.   Ma'lumotlar bazasi bilan ishlash (SQL bilan bog‘lanish).
  28.   C++ da ma'lumotlarni faylda saqlash va yuklash.
  29.   Obyektga yo‘naltirilgan dasturlash va dizayn prinsiplari (SOLID).
  30.   Exception handling (try-catch bloklari).

2-semestr

  1.   C++ standard library (STL): vector, list, map, set.
  2.   STL algoritmlari: sort, find, count, va boshqalar.
  3.   Template (shablon) funksiyalar va sinflar.
  4.   C++ tilida lambda ifodalar.
  5.   Multithreading va sinxronizatsiya.
  6.   Mutex, semaphore va ularning dasturlashdagi qo‘llanilishi.
  7.   Signal va slot mexanizmi (Qt framework misolida).
  8.   C++ da GUI yaratish (Qt yoki wxWidgets yordamida).
  9.   C++ tilida OOP prinsiplarini qo‘llagan holda dastur yaratish.
  10.   Data structure: binary heap va priority queue.
  11.   Dijkstra va A* algoritmlari.
  12.   Memory management va pointer arithmetic.
  13.   C++ da interfeyslar (interface) yaratish va ishlatish.
  14.   Namespace va uning dasturlashda qo‘llanilishi.
  15.   Bitwise operatorlar va ularning qo‘llanilishi.
  16.   Compiler va interpreterlar: C++ misolida tahlil.
  17.   Design patterns: Singleton, Factory, Observer, va boshqalar.
  18.   C++ da dasturlarni profiling qilish va optimizatsiya qilish.
  19.   Makros va preprocessor direktivalar (define, include).
  20.   C++ tilida TCP/IP va socket dasturlash.

V. Fan o‘qitilishining natijalari (shakillanadigan kompetensiyalar)

Talabalar bilishi kerak:

  • dasturlash tillarining qo’llanilish sohalarini;
  • dastur tuzilishi va alifbosini;
  • o’zgarmas va o’zgaruvchilar, ma’lumot tiplarini qo’llanilish usullarini;
  • matematik va mantiqiy amallarning qo’llanilish usullarini;
  • kiritish-chiqarish operatorlarini qo’llanilish usullarini;
  • chiziqli, tarmoqlanuvchi va takrorlanuvchi jarayonlar uchun algoritm hamda dasturlar tuzishni;
  • funksiya va kutubxonalarni yaratishni hamda ulardan foydalanishni;
  • massivlar, belgilar va satrlar bilan ishlashni;
  • ma’lumotlarning statik tuzilmasi va dinamik tuzilmasi bilan ishlashni;
  • fayllar bilan ishlashni;
  • sinf, ob’yektga mo’ljallangan dasturlash imkoniyatlarini turli xil sohalarga qo’llash usullarini o’rgatishdan iborat.

Bundan tashqari, bo’lajak mutaxassislarda amaliy masalalarni va informasion modellashtirish ko’nikmalarini shakllantirish kabi masalalarni ham o’rganiladi.

VI. Ta’lim texnologiyalari va metodlari:

ma’ruzalar;

intefaol keys-stadilar;

amaliy (mantiqiy fikrlash, tezkor savol javoblar);

kichik guruhlarda ishlash;

• taqdimotlarni qilish;

individual loyihalar;

• jamoa bo‘lib ishlash va himoya qilish uchun loyihalar tayyorlash;

• aqliy hujum va boshqalar.

VII. Kreditlarni olish uchun talablar:

  Fanga oid nazariy va amaliy tushunchalarni to‘la o‘zlashtirish, tahlil natijalarini to‘g‘ri aks ettira olish, o‘rganilayotgan jarayonlar haqida mustaqil mushohada yuritish, tavsiya etilgan mustaqil ta‘lim mavzularni o‘z muddatida sifatli tayyorlash himoya qilish), joriy, oraliq nazorat shaklida berilgan vazifa va topshiriqlarni bajarish, yakuniy nazorat bo‘yicha yozma ishni topshirish.

Asosiy adabiyotlar

  1. Nazirov Sh.A., Qobulov R.V., Bobojanov M.R., Raxmanov Q.S. S va C++ tili. “Voris nashriyot” MChJ, Toshkent 2013, 488 b.
  2. Horton I.-Beginning Visual C++ 2012/ I. Horton. Published imultaneously in Canada.-2012.-P.988.

Qo‘shimcha adabiyotlar

1. Bjarne Stroustrup. Programming: Princeples and Practice Using C++ 2nd Edition). Person Education, Inc.2014. second printing, January 2015.

2. Bjarne Stroustrup. The C++ Programming Language, 4nd Edition. Person Education, Inc.2013. Third printing, April 2014.

3. Ж.Ахмадалиев, Р Холдорбоев С++ дастурлаш тилини ўрганиш бўйича услубий қўлланма (2015).

4. Макурин Ю.Д., Сивохин А.В. проектирование и реализация баз данных и клиентских приложений в среде MS Visual Studio.NET(2010)

5. Прохоренок Н.А. Программирование на С++ в Visual Studio 2010 Express(2010).

6. Fedorov A.A. Microsoft Visual Studio 2008. Краткие обзор ключевых новинок(2008).

7. Васильев А.Н. Java. Объектно-ориентированное программирование для магистров и бакалавров. –СПб.: Питер, 2012.-395 с.

8. Хорстманн К.С., Корнелл Г. Java-2. Библиотека профессионала. Т.1. Основы. –М.: Вильямс, 2012. 816 с.

9. Herbert Schildt. Java. Методики программирования Шилдта, -М.: И.Д. Вильямс 2018, - 512 с.

10. Кормен Т., Лайзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. – М.: МЦНМО, 2014.

11. Стивен С. Скиена, Мигель А. Ревилла. Олимпиадные задачи по программированию.

12. Кнут Д. Искусство программирования. Том 1- 4., СПб. Вильямс 2007.

13. Томас Кормен, Чарльз Лейзерсон, Рональд Ривест, Клиффорд Штайн. Алгоритмы: построение и анализ, 2-е издание. : Пер. с англ. — М. : Издательский дом "Вильяме", 2005. 1296 c.

Internet manbaalari

  1. Martijn Koster “Robots in the Web; threat or treat?”
  2. http://info/webcrawler.com/mak/projects/robots/threat-or-treat/html
  3. neerc.ifmo.ru – Dasturlash bo’yicha jaxon chempionatining Shimoliy Sharqiy Yevropa
  4. http://www/cplusplus.com/
  5. http://acm.tuit.uz/forum/
  6. acm.tuit.uz
  7. acm.timus.ru – dasturlarni testlovchi tizim
  8. www.dastur.uz – dasturlash tillarini o‘rgatuvchi veb sayt
  9. www.dasturchi.uz - dasturlash tillarini o‘rgatuvchi veb sayt

O'xshash dasturlar