Xush kelibsiz
Muayyan dastur shaxsiy kompyuterga o`rnatilib ishga tushirilganidan so`ng u Operatsion Sistema(OS) ga biror algoritm asosida ketma-ketlik va bog`liqlik bilan buyruqlarni berib boradi, OS esa uni tartib bo`yicha bajaradi. Bi shu algoritmni kompyuterga biror bir til orqali izohlab kiritamiz. Bu til esa dasturlash tili deyiladi. Dasturlash tillari juda ko`p, ammo barcha tillar oxirida yagona tilga o`giriladi, tarjima qilinadi (translation), bu til Assembler tilidir. Assembler tili – mashina tiliga eng yaqin til, ya`ni mashinaga to`g`ridan-to`g`ri buyruq beradigan til. E`tibor bering OS ga emas, mashinaga buyruq beradigan til deb tushuntirildi. Bu tarjimani OS yoki biror dastur amalga oshirishi mumkin. Assembler dasturlash tili juda ham murakkab til bo`lganligi sababli uni o`rganish, o`rgatish juda kam uchraydi. Shu Assembler tilininig ustiga boshqa dasturlash tillari yozilgan va ular foydalanishga ancha qulay bo`lganligi sababli hozirgi vaqtda ancha ommalashib, rivojlanib bormoqda.
Dasturlash tillari, ularning turlari va asoslari
Kompyuterda dasturlash bu – kompyuter mikroprotsessori uchun turli buyruqlar berish, qachon, qayerda nimani o’zgartirish va nimalarni kiritish yoki chiqarish haqida buyruqlar berishdir. Ushbu maqolada, qanday dasturlash tillari borligi, eng keng tarqalgan dasturlash tillari va ularning farqi. Hamda, Dasturlashni o’rganish yo’llari haqida suhbatlashamiz
Kompyuter dunyosida ko‘plab dasturlash tillari mavjud bo‘lib, dasturlash va unga qiziquvchilar soni ortib bormoqda. Bir xil turdagi ishni bajaradigan dasturlarni Basic, Pascal, Ci va boshqa tillarda yozish mumkin. Pascal, Fortran va Kobol tillari universal tillar hisoblanadi, Ci va Assembler tillari mashi tiliga ancha yaqin tillar bo‘lib, quyi yoki o’rta darajali tillardir. Algoritmik til inson tillariga qanchalik yaqin bo‘lsa, u tilga yuqori darajali til deyiladi. Mashina tili esa eng pastki darajali tildir. Mashina tili bu sonlardan iboratdir, Masalan: 010110100010101
Dasturlash tillari 2 ta katta guruhlarga bo’linadi, Quyi va Yuqori darajali dasturlash tili. Quyi darajali dasturlash tili ancha murakkab bo’lib ular juda maxsus sohalarda ishlatiladi va ularning mutaxassislari ham juda kam. Chunki quyi dasturlash tillari (masalan: assembler) ko’pincha miktoprotsessorlar bilan ishlashda kerak bo’lishi mumkin. Odatda turli dasturlash ishlari uchun yuqori darajali dasturlash tilidan keng foydalaniladi.
EHM (Elektron Hisoblash Mashinasi) endi yuzaga kelgan paytda programma tuzishda, faqat mashina tillarida, ya’ni sonlar yordamida EHM bajarishi kerak bo‘lgan amallarning kodlarida kiritilgan. Bu holda mashina uchun tushinarli sanoq, sistemasi sifatida 2 lik, 6 lik, 8 lik sanoq sistemalari bo‘lgan. Programma mazkur sanoq sistemasidagi sonlar vositasida kiritilgan.
Yuqori darajali dasturlashda, mashina tillariga qaraganda mashinaga moslashgan (yo‘naltirilgan) belgili kodlardagi tillar hisoblanadi. Belgilar kodlashtirilgan tillarning asosiy tamoyillari shundaki, unda mashina kodlari ularga mos belgilar bilan belgilanadi, hamda xotirani avtomatik taqsimlash va xatolarni tashhis qilish kiritilgan. Bunday mashina moslashgan til – ASSEMBLER tili nomini oldi.
Odatda dasturlash yuqori saviyali dasturlash tillari (Delphi, Java, C++, Python) vositasida amalga oshiriladi.Bu dasturlash tillarining semantikasi odam tiliga yaqinligi tufayli dastur tuzish jarayoni ancha oson kechadi.
Ko’p ishlatiladigan dasturlash tillari.
Biz hozir biladigan va ishlatadigan tillarning barchasi shu guruhga mansub. Ular insonga “tushunarli” tilda yoziladi.Ingliz tilini yaxshi biluvchilar programma kodini qiynalmasdan tushunishlari mumkin. Bu guruhga Fortran, Algol, C, Pascal, Cobol va h.k. tillar kiradi(ko`pchiligi hozirda deyarli qo`llanilmaydi).
Eng birinchi paydo bo`lgan tillardan to hozirgi zamonaviy tillargacha ishlatish mumkin. Lekin, hozirgi web texnologiya orqali ishlaydigan tillarda(PHP, ASP.NET, JSP) bunday dasturlar tuzilmaydi. Chunki bunday dasturlarning ishlashi uchun yana bir amaliy dastur ishlab turishi kerak.
Hozirda, amaliy dasturlar, asosan, Visual C++, C#, Borland Delphi, Borland C++, Java, Phyhon kabi tillarda tuziladi. O`zbekistonda ko`pchilik Delphi dan foydalanadi. Buning asosiy sababi: soddaligi, komponentlarning ko`pligi, interfeysining tushunarliligi va h.k. Delphida birinchi ishlagan odam ham qanaqadir dastur tuzishi oson kechadi. Lekin, Windows da dasturning asosiy ishlash mohiyatini ancha keyin biladi(komponentlarning ko`pligi va API funksiyalari dasturda ko`rsatilmasligi uchun). Yana bir tarafi, Delphi(Pascal) operativ xotirani tejashga kelganda ancha oqsaydi. Unda o`zgaruvchilarni oldindan e’lon qilib qo`yish evaziga ishlatilmaydigan o`zgaruvchilar va massivlar ham joy olib turadi.
Eng keng tarqalgan dasturlash tili( Windows OS ida) Microsoft Visual C++ tilidir. Ko`pchilik dasturlar hozirda shu tilda tuziladi. Umuman olganda, C ga o`xshash(C-подобный) tillar hozirda dasturlashda yetakchi.Deyarli hamma zamonaviy tillarning asosida C yotadi.
Bundan tashqari, Turli komputer o’yinlari tuzishda yoki kichik hajmdagi dasturlar tayyorlashda LUA script yoki JavaScript tillari ham keng ishlatilmoqda.
Biz sizga xozirgi kunda keng tarqalgan desktop dasturlashda ishlatiladigan dasturlash tillaridan bazilari haqida aytib o’tamiz:
Delphi (talaff. délfi) — dasturlash tillaridan biri. Borland firmasi tomonidan ishlab chiqarilgan. Delphi dasturlash tili ishlatiladi va avvaldan Borland Delphi paketi tarkibiga kiritilgan. Shu bilan bir qatorda 2003-yildan hozirgacha qoʻllanilayotgan shu nomga ega bulgan. Object Pascal — Pascal tilidan bir qancha kengaytirishlar va toʻldirishlar orqali kelib chiqqan boʻlib, u ob’yektga yoʻnaltirilgan dasturlash tili hisoblanadi.
Avvaldan ushbu dasturlash muhiti faqatgina Microsoft Windows amaliyot tizimi uchun dasturlar yaratishga mo’ljallangan, keyinchalik esa GNU/Linux hamda Kylix tizimlari uchun moslashtirildi, lekin 2002-yilgi Kylix 3 sonidan so’ng ishlab chiqarish to’xtatildi, ko’p o’tmay esa Microsoft.NET tizimini qo’llab quvvatlashi to’g’risida e’lon qilindi.
Lazarus proekti amaliyotidagi (Free Pascal) dasturlash tili Delphi dasturlash muhitida GNU/Linux, Mac OS X va Windows CE platformalari uchun dasturlar yaratishga imkoniyat beradi.
Visual Basic (talaffuzi: “Vijual Beysik”) – Microsoft korporatsiydan dasturlash tili va uning uchun dasturlash muhitdir. U BASICdan ko`p tushunchalar oldi va tez rasmli interfeys bilan dasturlar taraqqiyot ta`minlaydi.
Oxirgi versiya 6.0 1998 yilda reliz kelishdi. Microsoftdan voris Visual Basic .NET 2002 yilda paydo bo`ldi.
Java dasturlash tili – eng yaxshi dasturlash tillaridan biri bo’lib unda korporativ darajadagi mahsulotlarni(dasturlarni) yaratish mumkin.Bu dasturlash tili Oak dasturlash tili asosida paydo bo’ldi. Oak dasturlash tili 90-yillarning boshida Sun Microsystems tomonidan platformaga(Operatsion tizimga) bog’liq bo’lmagan holda ishlovchi yangi avlod aqlli qurilmalarini yaratishni maqsad qilib harakat boshlagan edi. Bunga erishish uchun Sun hodimlari C++ ni ishlatishni rejalashtirdilar, lekin ba’zi sabablarga ko’ra bu fikridan voz kechishdi.Oak muvofaqiyatsiz chiqdi va 1995-yilda Sun uning nomini Java ga almashtirdi, va uni WWW rivojlanishiga hizmat qilishi uchun ma’lum o’zgarishlar qilishdi.
Java Obyektga Yo’naltirilgan Dasturlash(OOP-object oriented programming) tili va u C++ ga ancha o’xshash.Eng ko’p yo’l qo’yildigan xatolarga sabab bo’luvchi qismalari olib tashlanib, Java dasturlash tili ancha soddalashtirildi.
Java kod yozilgan fayllar(*.java bilan nihoyalanuvchi) kompilatsiyadan keyin bayt kod(bytecode) ga o’tadi va bu bayt kod interpretator tomonidan o’qib yurgizdiriladi.
C++ (talaffuzi: si plyus plyus) — turli maqsadlar uchun moʻljallangan dasturlash tili. 1979-yili Bell Labsda Biyarne Stroustrup tomonidan C dasturlash tilining imkoniyatlarini kengaytirish va OOP(object Oriented Programming) xususiyatini kiritish maqsadida ishlab chiqarilgan. Boshida „C with Classes“ deb atalgan, 1983-yili hozirgi nom bilan yaʼni C++ deb oʻzgartirilgan. C++ C da yozilgan dasturlarni kompilyatsiya qila oladi, ammo C kompilyatori bu xususiyatga ega emas. C++ tili operatsiyon tizimlarga aloqador qisimlarni, klient-server dasturlarni, EHM oʻyinlarini, kundalik ehtiyojda qoʻllaniladigan dasturlarni va shu kabi turli maqsadlarda ishlatiladigan dasturlarni ishlab chiqarishda qoʻllaniladi.
Quyidagi jadvalda programmalash tillari haqida ma’lumotlar keltirilgan.
Ma`lumki, yuqori darajadagi dasturlash tillarida yozilgan dasturlarni kompyuterga tushuntirish uchun kompilyator degan qo’shimcha dastur kerak bo’ladi.Web dasturlashda ham huddi shunday jarayon sodir bo’ladi.Siz internetdagi saytlarni ko’rishlik uchun ishlatadiganingiz Brauzerlar – web dasturlash tillarining bazilarini kompilyatori hisoblanadi.
Web dasturlashda yana shunday tillar ham borki ularni brouzer kompyuterga tarjima qilib tushuntirib bera olmaydi, lekin bunday tillar web saytni asosini tashkil etadi. Ana shunday tillarni brouzer tushunadigan qilib berish uchun ham Web server ga o’xshagan dasturlar (kompilyator yoki interpretatorlar) to’plami kerak bo’ladi. Bunday dasturlar esa sayt joylashgan serverlarda turadi, qachonki unga so’rov yuborganingizda (istalgan biror ssilkani bosganingizda, birinchi marta saytni ochganingizda va hokazo. ) shu sayt joylashgan serverdagi Web server dasturlari sizning brauzeringizga saytni brauzer tushunmaydigan tillarda yozilgan joylarini tarjima qilib jo’natadi.
Shunday qilib klient – yani siz tomondagi web saytni kodlarini kompyuteringizga tushuntirib beradigan tarjimon bu – Brauzer, server tomonidagi web saytni sizning brauzeringiz tushunmaydigan joylarini unga tarjima qilib jo’natadigan tarjimon bu Web Server hisoblanadi. Quyida web serverni
Bu yerda Klient yani siz tomonda sizning Brauzer va u tushunadigan web dasturlash tillari (HTML,CSS,Java Script) turgan bo’lsa, server tomonda Apache -> Web server, PHP -> PHP tili uchun interpretator va ma`lumotlar ombori bilan ishlash uchun vosita (bu MYSQL, Oracle va boshqalar bo’lishi mumkin) turibdi. Bundan tashqari server tomonida yana boshqa tillar ham bo’lishi mumkin. Hullas, siz qachonki brauzerdan kerakli sayt nomini kiritganingizda bu so’rovingiz DNS serverdan saytga mos IP bo’yicha kerakli serverga boradi, so’rovingiz Brauzerda kiritilgani uchun ham ko’pincha standart HTTP protokoli bo’yicha yuborilgani uchun uni Web server kutib oladi va so’rovingizga mos papkadan index faylni qidirib topadi. Undagi bog’lanishlardan kelib chiqib kerakli fayllarni yuklaydi, bu fayllarni kengaytmasiga qaraydi, agar kengaytmasi .html bo’lsa uni shundoq, aks holda masalan .php bo’lsa PHP serverdagi interpretator orqali brauzer tushunadigan tilga tarjima qildiradi(shuni ichida ma`lumotlar bazasidan ham kerakli ma`lumotlar yuklab olinadi) va natijani sizni brauzeringizga jo’natadi.
PHP dasturlash tili yordamida sayt yaratish uchun avvalo o’z shaxsiy komputeringizda Virtual server o’rnatishingiz lozim. Masalan Denwer, yoki XAMPP yoki WAMPP
Brauzeringiz o’zi tushunadigan tilda kelgan sayt kodlarini natijasini ekraningizda sizga ko’rsatib beradi va siz tayyor saytni ko’rasiz. Demak, agar web dasturlash bilan shug’ullanaman deydigan bo’lsangiz, minimum: HTML,CSS,JavaScript,PHP,MySQL larni bilishingiz kerak ekan.
Bunda HTML-> Sayt karkasini yasaydi, CSS- saytni pardozini(dizaynini) amalga oshiradi,
Javascript – saytni dinamikasi(haraktlarini) ta`minlaydi,
PHP – saytni mantiqiy amallarini bajaradi(masalan siz login bo’lganmisiz, yoki yo’qmi, login bo’lgan bo’lsangiz sizda nimalar chiqadi, aks xolda nimalar. ),
MySQL – PHP bilan hamkorlikda saytga ma`lumotlar bazasidan ma`lumotlarni o’qib olish, yozish, o’zgartirish uchun xizmat qiladi.
Programmani yaratish jarayonidagi uning nomlari
Beta versiya – bu versiya programmani ommaga havola qilinib, ularning fikri bo`yicha programmaga turli o`zgartirishlar kiritiluvchi versiyasi. Programmaning bu versiyasi, odatda, tekin bo`lib, ko`pchilik hukmiga havola etiladi. Programmaning bu versiyasi orqali sizga yetkazilgan ziyon qoplanmaydi(fayllaringizning o`chib ketishi, OS ning buzilishi va h.k.). Hozirda ko`pchilik firmalar o`z mahsulotlarini Beta versiyasini chiqarib, o`z mahsulotlarini takomillashtirib bormoqdalar. Bundan, programma ishlab chiqarish bo`yicha yetakchi bo`lgan Microsoft korporatsiyasi ham mustasno emas(Windows Vista, Office 2007, Exchange Server 2007, Internet Explorer 7 va h.k.).
Release Candidate(versiya nomzodi) – bu versiyaning nomidan ma’lumki, u haqiqiy, sotuvga chiqariladigan versiyaga kandidat(nomzod)dir. Bu kabi versiyalar qisqacha RC deb ataladi. Shu turdagi versiyalar esa, RC1, RC2 kabi nomlanadi.Ko`pchilik RC versiyalar sotuvga chiqariladi, chunki bu versiya o`zida ma’lum bir imkoniyatlarni jamlagan bo`ladi va bu versiya orqali yetkazilgan zarar programmani yaratgan firma tomonidan qoplanadi.
Final Release(so`nggi versiya) – programmani yaratishda qo`yilgan maqsadni “to`liq” amalga oshiruvchi versiya. Bu versiyani “alfa” versiya deb ham atashadi. Bu versiya o`z bahosida sotiladi, unga ko`rsatiluvchi xizmatlarning barchasi programma yaratuvchisi tomonidan ko`rsatiladi.
Build XXXX(XXXX – qurish) – bu, odatda, versiya hisoblanmaydi. XXXX ning o`rnida biror son keladi. Bu son programmaning kompilyatsiya(programmalash tilidan haqiqiy bajariluvchi kodga o`tkazish) sonini bildiradi. Programma yadrosi(qo`shimchalarsiz, asosiy qism)ga nisbatan yuritiladi. Masalan, Windows Vista Beta 2 Build 5308 – Windows Vistaning Beta 2 versiyasi turkumida 5308-kompilyatsiya(OSga nisbatan “kompilyatsiya”ni ishlatish noo`rinroq:)).
Update (yangilash) – programmaning biror teshigini(biror kichik xato, kamchiligi) tuzatuvchi kichik yordamchi programma. Bu yordamchi programmaning hajmi, odatda, kichik bo`lib, faqat o`sha kamchilikni tuzatishgagina xizmat qiladi. Ya’ni bu programmacha biror *.dll faylni yoki programmaishlatuvchi funksiyalardan birortasini “tuzatib” qo`yadi, xolos. Bunday Update(“qarz”)lar har doim tekin bo`ladi.
Service Pack(xizmat paketi) – o`zida bir qancha Update lar bajaruvchi amallarni saqlovchi paket. Uning qisqacha nomi SP. Programmaning haqiqiy versiyasi yoki avvalgi SP dan shu paytgacha bo`lgan xatoliklarni birdaniga tuzatuvchi programma. Ya’ni, u bir qancha Updatelar ishini o`zi bajaradi. Masalan, Windows XP chiqqanidan so`ng, taxminan bir yildan keyin SP1 chiqdi.Bundan kelib chiqadiki, Windows XP SP1 bir yil davomidagi xatoliklarni tuzatuvchi paket hisoblanadi.SP ham programma ishlab chiqaruvchi firmaning xatolari tufayli kelib chiqqan xatolarni tuzatgani uchun tekin bo`ladi.
Trial (yoki demo)-versiya(vaqtinchalik) – bu versiya, programma sotuvga chiqarilgandan so`ng tekin tarqatila boshlaydi. Bu versiyaning asosiy maqsadi foydalanuvchilarni ushbu programmani sotib olishga jalb qilish va ularni programma bilan tanishtirish. Trial versiyalar, odatda, ikki xil bo`ladi: a) vaqt bo`yicha chegalangan; b) imkoniyatlar bo`yicha. Vaqt bo`yicha chegaralangan versiya ma’lum muddat, masalan, 30 kun ishlaydi va shundan so`ng boshqa ishga tushmaydi. Bu holatda siz programmani sotib olishingiz kerak. Odatda, vaqt bo`yicha trial-versiyalar programmaning hamma imkoniyatlarini o`zida saqlaydi. Imkoniyatlar bo`yicha versiya esa programmaning sotib olingan versiyasining nechadir foiz imkoniyatlarini o`zida saqlaydi yoki ma’lum cheklanishlar qo`yilgan bo`ladi. Bu versiyaning ishlash muddati chegaralanmaydi. Yuqo`ridagi ikki holatdan tashqari yana bir holat bor. Bunda programmaning hamma imkoniyati saqlanadi, muddat ham berilmaydi, faqat foydalanuvchiga programmani sotib olish haqida eslatib turiladi. Bu esa ko`pchilikning jig`iga tegishi mumkin. Ko`pchilikka ma’lum Total Commander programmasi shu kabi programmadan biri, u har ishga tushganida 1, 2, 3 deb nomlangan knopkalardan birini bosishingizni talab qiladi.
Dasturlashni o’rganishni nimadan boshlash kerak?
Eng avvalo insonda kuchli qiziqish bo’lishi kerak.Lekin bu hammasi emas.Dasturchi bo’lish uchun matematika yoki geometriya fanlarini ham yaxshi o’qigan bo’lishingiz kerak deb o’ylaymiz.Aslida dasturlash uchun matematika yoki geometriya unchalik ishlatilmasligi mumkin.Aytmoqchimizki aniq fanlarni yaxhsi tushunaolgan inson dasturchi bo’lishi ham oson bo’ladi. Agar dasturchi bo’lishga qaror qilgan bo’lsangiz, Dastlab eng sodda tildan boshlash kerak
1-navbat HTML tilini o’rganasiz.
2-navbat CSS va Javascript asoslarini o’rganasiz.
3-navbat Delphi yoki Java asoslarini o’rganasiz. Yana Mobile telefonlar (Android, iOS) uchun dastur tuzish usullari bilan qiziqib ko’rasiz
Endi oldingizda 3 ta katta yo’l chiqadi.Siz esa shu yo’lning biridan yurishingiz kerak.
1-yo’l. Web App yoki web dasturlash yo’nalishi. asosan internet bilan ishlaydigan dasturlar yaratish
2-yo’l Win, Linux App ya’ni Faqat Komputer uchun dasturlar tuzish
3-yo’l Mobile dasturlash ya’ni Hozirda ommabop Android, iOS (Iphone) uchun dasturlar tuzish
Agar 3 ta yo’lni ham o’rganaman desangiz katta natijaga erishish qiyin. Chunki ularning har biri katta bir olam misolidir.
Xullas ishlarinngizga omad tilab qolamiz. Agar bu borada savollar bo’lsa www.aql.uz sayti orqali bizga maktub yuboring.
Foydalanilgan Manbalar: Ki.uz , qalam.uz, qanday-qilib.uz
Maqola yoqdimi? Do’stlaringizga ham yuboring (tugmalardan birini bosing):
28-11-2014 1463 Marta o’qildi
1975-yili Microsoftning birinchi offisini tashkil qiladi.1985-yil 20-noyabrda u birinchi Microsoft Windows operativ tizimini yaratgan. 1987-yilda, 32 yoshga to’lishidan bir necha kunlar oldin, Forbes jurnalida eng yosh millarder deb rasman tan olingan.
Vinchesterni Qanday Parametrlari Bor?
Vinchester – Hard Disk Drive – Qattiq Disk Yurituvchi – doimiy xotira qurilmasi asosan kompyuterdagi ma`lumotlarni saqlab turish uchun mo’ljallangan. Uni operetiv – tezkor xotiradan farqi shundaki, undagi ma`lumotlarni saqlab turish elektr tokiga bog’liq bo’lmagan xodisa hisoblanadi. Shu bilan birga uni xajmi ancha katta bo’ladi va operativ- tezkor xotiradan farqli o’laroq u Motherboard – Ona plataga ulanadi, o’rnatilmaydi.
Xush kelibsiz
Main funksiyasi (asosiy funksiya) – Barcha dasturlarda mazkur funksiya bor. Bu funksiya dasturning kirish eshigi, dastur ishga tushirilganda avtomatik shu funksiyaga murojaat bo`lib, shu funksiyada qaysi funksiya ko`rsatilsa shu yerga yo`naltiriladi. agar hech bir funksiyaga murojaat qilinmagan bo`lsa boshqa class yoki funksiyalarga murojaat qilmasdan dastur ish faoliyatini tugatadi.
Funksiyalar bilan ishlash
Funksiyalar bilan ishlash
Funksiyalar biz uchun nega kerak? – Class biz uchun tip, funksiyalarni e`lon qilish maydoni, biror obyektni qayta ishlash uchun kerakligini bildik. Endi funksiya haqida, nima uchun foydalanishimiz kerakligi haqida bilib olamiz. Sizchi nima deb o`ylaysiz?
Demak, class ning vazifalari ichida mantiqiy yoki arifmetik amallar yo`q. Biz biror missiyani bajarishni xohlasak uning algoritmini qanday kiritamiz? Albatta funksiyaga. Funksiyalar ko`p bo`lishi mumkin ular bir classda yoki bir nechta class da bo`lishi ham mumkin. Eslab o`tamiz tashqaridan ko`rishimiz uchun bu funksiya albatta public bo`lishi lozim. Demak funksiyada dasturning mantig`i yoziladi, bu mantiq funksiyalarga, classlarga ma`nosi bo`yicha ajratib, tartiblab yoziladi. Kerak bo`lgan yerda shu qismni e`lon qilinadi, kerak bo`lgan yerda murojaat qilinaveradi. Bir nechta kichik dastur tuzmoqchi bo`lsangiz yoki bir nechta masalani ishlamoqchi bo`lsangiz har biriga alohida proyekt yaratib o`tirishni keragi yo`q, har bir masalani bittadan funksiyada bajarib, shu funksiyalarni asosiy funksiyadan chaqirib qo`yish kifoya. Son-sanoqsiz funksiyalar, classlar bo`lishi mumkin, ammo ular siz qachon murojaat qilsangizgina faoliyatni boshlaydilar. Bundan anglashiladiki, yozayotgan kodimi kattalashib ketmasligi uchun classlarga, funksiyalarga bo`lib tashlasak xotirani tejaymiz, murojaat qilsakgina ishlar ekanlar. Funksiyaga murojaat ham faqat funksiya ichidan bo`ladi, e`lon qilish esa faqat class ichida. Demak class da e`lon qilyapmiz, funksiyadan boshqa funksiyani chaqirayapmiz. Funksiyaga murojaat qilganda funksiya nomidan so`ng “(” belgisini qo`yamiz(qavsni yopmay turamiz) va bizga kiritishimiz shart bo`lgan kerakli parametrlar ko`rinadi. Demak ko`rindiki funksiyalardan foydalanish, e`lon qilish uchun maxsus bilim shart emas, tiplarni bilsak bo`ldi ekan. Tiplarni esa OOP ni o`rganishdan oldin misol yechish jarayonida yodlab, tushunib olamiz. Xulosa shuki biz uchun o`ylagan algoritmimizni funksiyani e`lon qilib uning ichida(tanasida) yozamiz.
Classlarga murojaat
Classlarga murojaat
Classlarga murojaat qilganda ma`lumot dinamik xotiraga tushadi. Chunki classni chaqirish C# va Java da deyarli bir xil.
Bu yerda Tom -class, tom – obyekt. demak Tom tipidagi tom.(Mushuklar turiga kiruvchi bir hayvon yoki obyekt, ya`ni bir mushuk. E`tibor bering: Tom(Mushuk) bilan tom(mushuk) farq qilmoqda).
Static elementlar
Static elementlar
Class, funksiya, obyekt yoki propertyni static(static) element sifatida e`lon qilish mumkin. Bundan ko`zlangan maqsad statik elementni xotiraning yuqori pog`onasiga chiqarib qo`yish va uni xotirada doim saqlash, kerak bo`lganda unga murojaat qilish. Statik bo`lmagan elementlar esa classga murojaat vaqtida ular ham yangidan xotiraga olinadi, classni ishlatishni to`xtatib block yopilganda esa u elementlar xotiradan tozalab tashlanadi. Undan tashqari class ni bir necha marta qayta-qayta murojaat etib chaqirib foydalanilganda shu class tipida bir nechta obyekt hosil bo`ladi, statik bo`lmagan elementlari har bir klassda alohida element qabul qiladi, statik bo`lsa shu obyektlarda hammasida ayni shu statik elementi bir xil qiymatga moslashib qoladi(bittasidagi statik element o`zgartirilsa hamma obyektlarda xuddi shu statik element bir xil yangi qiymatga o`zgarib qoladi).
Funksiyalar ham statik bo`lishlari mumkin. Bu qachon bo`ladi? Qachonki bir funksiyaning vazifasi o`zi joylashgan classdagi boshqa funksiyaga bog`liq bo`lmasa va uni asosan boshqa classlardan chaqirilsa shunda ishlatiladi.
Static elementlar class nomidan so`ng nuqta(.) qo`yib chaqiriladi
Masalan: Console.WriteLine(“. “); System.out.println(“. “);
bu yerda Console va System -class, WriteLine va println esa statik funksiyalar.
Funksiyaga murojaat
Funksiyaga murojaat – Funksiyani chaqirish, funksiyani ishlatish, funksiya ijro etish.
Funksiyaga murojaat etishda quyidagilarga e`tibor qaratish lozim:
1. Funksiya qiymat qaytaradimi? – agar qaytarsa demak undan biror natija olib boshqa o`zgaruvchiga berish mumkin.
2. Funksiyaning tipi qanaqa, ya`ni bizga qaytadigan qiymat qaysi tipda bo`ladi? – Agar yangi o`zgaruvchi e`lon qilib unga funksiyaning qiymatini berishni istasak, demak yangi o`zgaruvchining tipi funksiyaning tipini o`z ichiga olishi yoki u bilan bir xil bo`lishi shart.
3. Funksiya parametr oladimi? – agar parametr olsa, unga parametr kiritish kerak bo`ladi.
4. Parametrlari nechta va tiplari qanaqa? – parametrlarning o`rniga biror qiymat yoki boshqa bir o`zgaruvchi kiritish mumkin. Ketma-ketlik esa parametrlarning ketma-ketligi bilan bir xil va har bir kiritilayotgan parametrning tipi e`lon qilingan parametr o`zgaruvchisining tipi bilan bir xil bo`lishi kerak.
bular 4 ta bo`lgani bilan qiyin emas.
Ushbu shartlar qanoatlantirilsa funksiya ishlaydi va biror natija olish yoki shunchaki ishlatib yuborish mumkin.
Ko`rib turganimizdek funksiyalarning ichki qismida yana biz bilgan tizimli dasturlashning arifmetik amallaridan foydalaniladi. Shu sababli yosh dasturchilarga masala ishlatib, ularni ko`niktirib boriladi va Class tushunchasini qabul qilish ularga og`irlik qilmaydi. Sababi funksiyani e`lon qilish va chaqirishdan boshqa deyarli barcha narsalar arifmetik ifodalar bo`lmoqda.
Class lar haqida
Class lar haqida
Class lar o`zida qiymat saqlovchi obyektlardan, funksiya va property(xususiyat) lardan tashkil topgan. Vazifa bir turga yaqin funksiyalarni bir joyga saqlash uchun biror bir klassning ichida e`lon qilinadi(joylashtiriladi) va biror nom bilan nomlanadi.
Funksiyalarni e`lon qilish – funksiyani biror class ning ichiga joylashtirib uning ichiga logikasini(bajaradigan missiyasini) yozish.
Funksiyani chaqirish(ishlatish) – E`lon qilingan funksiyani chaqirish mumkin, e`lon qilinmagan funksiya mavjud bo`lmaydi. Funksiyalar – kichik dasturchalar, ular parametr berib ishlatiladi va biror natijani qabul qilib olinadi.
funksiyalarni e`lon qilishda ham ma`lum bir type(Reference yoki Value) bilan e`lon qilinadi(yaratiladi deb ham yoziladi – bu e`lon qilish ma`nosida). Kirish parametrlari bir nechta bo`lsa ham natijaning qiymati bir dona bo`ladi(ya`ni bitta qiymat qaytadi).. Parametrlar ham natija ham biror type ga tegishli bo`ladi. Natija esa funksiyaning qiymati deb aytiladi. Qiymat qaytarmaydigan funksiyalar ham bor, bular Prosedura(Procedure) deyiladi. E`lon qilinishi xuddi funksiyalar bilan bir xil, faqat funksiyaning tipi void deb belgilanadi. void- – bu maxsus tip, faqat funksiyalarda qo`yiladi, qachonki uni proseduraga aylantirish kerak bo`lgan vaqtlarda.
Return – ingliz tilida qaytarmoq, qaytarib bermoq, jo`natmoq yoki javob bermoq ma`nolarini beradi. Biz bu operatorni funksiyalarda qo`llaymiz. Shu funksiyaning natijasini qaytaruvchi operator. Dasturning biror qismidan kerakli funksiyani chaqirganimizda odatda undan biror natija kutamiz va kelgan natijani boshqa bir o`zgaruvchiga beramiz. Shu funksiyadan natija qaytishi uchun returndan foydalaniladi. Returndan keyingi operatsiyalar bajarilmaydi. Funksiyada qanday amallar bajarilganiga qaramay returnda nima berilgan bo`lsa shu qaytad(funksiyaning qiymati shunga teng bo`ladi).
Obyektga yo`naltirilgan dasturlash tillari (OOP)
Obyektga yo`naltirilgan dasturlash tillari (OOP)
Obyektlar orqali ma`lumotlarni qayta ishlash va amallar bajarishni ta`minlashda foydalaniladigan dasturlash tillari Obyektga yo`naltirilgan dasturlash tillaridir. OOP ham rivojlanish evaziga ehtiyoj sababli yuzaga kelgan. OOP ning imkoniyatlari ba`zida bizning tasavvurimizdan ham kattaroq. Unda istalgan tipdagi obyektlarni qayta ishlashning imkoni bor. OOP dasturlarini tasavvur qilish tizimli dasturlarni tuza oladigan dasturchilar uchun qiyin emas, OOP – tizimli dasturlarning majmui. Istalgan dasturni tahlil qilsak – hech bir dastur yo`qki unda tizimli dasturlash tillaridagi amallar bajarilmasa, OOP da ham turli xil tiplar bo`lgani bilan ular ham oddiy tiplardan tuzilgan to`plamlardir, ular o`rtasida amal bajarganda ham shundoq o`zini emas ichidagi a`zolari o`rtasida amallar bajariladi. A`zolari esa o`sha biz bilgan oddiy tiplar hisoblanadi.
OOP ning 3 prinspi:
1. Inkaptsulyatsiya (incapsulation)(Class a`zolarining xavfsizligini ta`minlash)
2. Nasl olish(Abstraction-Inheritance)(Avlod classda ajdod classning xususiyatlaridan foydalanish)
3. Polimorfizm
Savol: Object nima? Object(obyekt) – xotirada saqlangan ma`lumotning e`lon qilingan nomi(o`zgaruvchisi). O`zgaruvchi – ma`lumotni biror bir nom bilan e`lon qilish.
Savol: Struct nima? Struct(struktura) -obyekt tegishli bo`lgan to`plamning nomi. Bu to`plamni tip(type) deb ataladi. Struct tipidagi obyektda ichidagi barcha o`zgaruvchilar tashqaridan ko`rinib turadi.
Savol: Class nima? Class ham xuddi Struct kabi type, lekin undagi obyektning ba`zi xususiyatlari bor, ular bu obyektning tanasini yashirib turadi va boshqalar.. Shu sababli ham struct dan odatda juda kam foydalaniladi. Chunki Struct – bu public(ommaviy, ochiq, oshkora obyekt). Bundan tashqari Class lar kod yozishda ham muhim ahamiyatga ega. Dasturchi dastur tuzganda odatda har bir missiya uchun bir funksiya ochadi va funksiya nomini shu missiyaga mos qilib nomlaydi. Kodning matnini shu funksiyalarda yozadi. Funksiyani o`zini esa Class da yoziladi. Demak Classda kod matnini emas funksiya(method-metod), property(xususiyat) hamda o`zgaruvchilar yoziladi, funksiyaning ichida esa kodning matni yoziladi.(adashtirmaslik kerak). Ma`lum bir guruhga kiradigan missiyalar, mantiqlar to`plami bitta Class da tashkil etiladi va shu class nomini ham mantiqdan kelib chiqib nom beriladi. Agar bu class mantiqiy amallarni bajarish uchun emas, faqat to`plamning tipi(type) uchun yaratib vaqtincha shu tipdagi ma`lumotni saqlab turish uchun yaratilgan bo`lsa (ya`ni undan maqsad faqat ma`lumot saqlash va biror manzilga yo`naltirish) demak unda funksiyaning keragi yo`q.
Bu class Tom obyektining qiymatini saqlash uchun e`lon qilingan. Tom-mushuk bir obyekt bo`lsa uning ismi va yoshini saqlab turadigan class. Demak bu to`plam yoki bir tip ki, unda mushuk haqida ma`lumotlar saqlanadi. Bu klass tipidagi obyektlar ko`pligi bizga bir nechta mushukning ma`lumotlari saqlanayotganligini bildiradi. Oydinlashadiki. biz OOP dasturlash tillarida o`zimiz xohlagancha tip e`lon qilib foydalana olishimiz mumkin ekan. Biz OOP orqali juda katta imkoniyatlarga erishamiz. Class lar birgalikda kutubxona(library-biblioteka) fayllarini tashkil etadi, bu kutubxonalar ham biror katta dasturlar tizimini tashkil etadi. Masalan: Windows OS ham kutubxonalardan tashkil topgan.
Public va Private nima? Class a`zolarining xavfsizligini ta`minlash(inkapsulyatsiya)-incapsulation) prinspining maxsus so`zlari. Public, Protected, Private turlari mavjud.
Public(umumiy) – ushbu elementni class tashqarisidan ko`rish, o`zgartirish mumkin yoki yo`qligini bildiradi
Protected(himoyalangan) – ushbu element shu class avlodlari(nasl olinganda) ichida va shu class ning ichida ko`rinishi, murojaat qilish mumkinligi va qiymatini o`zgartira olish huquqini beradi
Private(maxfiy) – mazkur element o`zi joylashgan class ichidagina ko`rinishi va qiymatlarini o`zgartira olinishi hamda murojaat huquqini beradi.
Bu bizga nima uchun zarur? Tasavvur qilishga oson bo`lishi uchun kompyuter klaviaturasidan foydalanamiz. Klavishlar public elementlar, uning ichki qismidagi sxemalar esa private. Bizga faqat foydalanishimiz kerak bo`lgan elementlar ko`rsatib qo`yilgan, qolgani esa biz uchun muhim emas va mavhum. Protectedni esa xotirada qolishi uchun foydalangan vaqtimizda tushuntirib o`tamiz.
Takrorlanish operatori ( for -parametrli sikl operatori)
Takrorlanish operatori ( for – parametrli sikl operatori )
Takrorlanish operatori ham muhim ahamiyatga ega. Qo`yilgan masalaning yechimi bir yoki bir-nechta arifmetik ifodaning N marta qayta-qayta hisoblanishi natijasida chiqadigan bo`lsa bundan foydalaniladi.
Shartli o`tish operatori ( if )
Shartli o`tish operatori ( if )
Shartli o`tish operatori – biror shart bajarilganda belgilangan vazifani bajarishga yo`naltiruvchi operator. E`tibor bering: shart bajarilganda. bu operatorning sintaksisi quyidagicha. Belgilangan vazifa bajarilishi uchun biror shart qo`yish kerak bo`lganda foydalaniladi.
Biror shart bajarilganda 1-vazifa aks holda 2-vazifa bajarilishi uchun ham foydalanish mumkin.
. else – aks holda
Dasturlashda Type(tip) tushunchasi
Dasturlashda Type(tip) tushunchasi
Dasturlar amallardan(operatsiyalar) tarkib topgan. Bu amallar xoh mantiqiy xoh algebraik amallar bo`lsin barchasi matematik amallardir. Demak bu yerda qiymatlar orasida amallar bajariladi. Qiymatlar esa ma`lum bir (type)tipga tegishli bo`lishi lozim. Bu tiplarni dasturlash tillari orqali kiritganda kompyuterga anglatish uchun uni qaysi tipga tegishli ekanligini ko`rsatib e`lon qilish muhim. Shu tiplarning biriga tegishli bo`lgan qiymatni ma`lum bir nom bilan atab e`lon qilinishi o`zgaruvchilar deyiladi. Bundan kelib chiqadiki eng sodda dastur yozish juda ham oson, biror tipga tegishli bo`lgan o`zgaruvchilarni e`lon qilib ular o`rtasida amallar bajarib natijani chiqarib qo`ysak bir dasturni tuzgan hisoblanaveramiz. Tiplar 2 turga bo`linadi. Reference Type, Value Type.
Reference Type – dinamik xotiradan foydalanib e`lon qilinadigan qiymatlar tipi.
Value Type – statik xotiradan foydalanib e`lon qilinadigan qiymatlar tipi.
Tizimli dasturlash tillar.
Muayyan bir kichik masalani yechish uchun mo`ljallangan dasturlarni yechishda foydalaniladigan dasturlash tillari tizimli dasturlash tillaridir. Chunki kichik bir masala uchun OOP ga zarurat yo`q. Asosan qo`shish, ayirish, ko`paytirish va bo`lish amallaridan foydalaniladi. Bu amallar value tiplar orasida bajariladi. (matematiklar barcha amallar qo`shish amalidan kelib chiqqan deb hisoblashadi : 3-2=3+(-2); 3*3=3+3+3; 4/2=(2+2)/2. ).
Bu turdagi dasturlarda oddiy(value) tiplardan foydalaniladi. (faqat asosiylarini keltirib o`tamiz):
Integer – butun sonlar tipi (masalan. -23,-3,-2, 0, 3, 6, 8. )
String – qatorlar, so`zlar, matnlarni o`z ichiga oladi (masalan: “2312”,”fgtds”,”fg4fd”. )
Char – 1 ta belgiga teng (masalan: ‘d’,’4′,’^’. )
Double – haqiqiy sonlardan iborat
va Massivlar
Massivlar haqida
Massivlar bu bir tipgagi qiymat yoki obyektlarning kollektsiyasi ya`ni ketma-ket joylashgan ro`yxati. Ular ixtiyoriy tip bo`lishi mumkin, ammo hammasi bir tipga tegishli bo`ladi xolos.
Integer[] a=; bu butun sonlarning massivi1,2,3,4,5,6,7,8,9,34>
Double[] a=; bu haqiqiy sonlarning massivi1,2,3,4,565.5,343.6,4.54,45.65>
String[] a=; qatorlar massivi.»34″,»sdfsa»,»344df3″>
Massivlar ham value tiplar oilasiga kiradi.
Massivlar avvaliga tushunarsiz tuyuladi, buning sababi har bir elementini maxsus tip bo`lsa kerak deb hisoblashda. Butun sonlarning massivi – har bir elementi butun son, qatorlar(string) massivi esa har bir elementi qator. Xuddi shunga ko`ra qaysi bir class ning massivi ham har bir elementi shu class obyektlaridan tashkil topgan bir massiv deb qabul qilinadi.
Undan tashqari pozitsiya 0 dan boshlanadi. 1- element 0-pozitsiya deb qabul qilingan.
0-positsiya yo`qligi sababli massivda “-1” -indexli element bo`lmaydi, ya`ni “-1” -index mavjud emas.
a[0]=1; (birinchi elementni qiymati o`zgartirildi)
b[3]=”dsfsdf”;(to`rtinchi elementni qiymati o`zgartirildi)
c[0]=new Tom(); c[0].Name=”Tom”;
Dasturlash tillari haqida
Dasturlash tillari haqida.
Muayyan dastur shaxsiy kompyuterga o`rnatilib ishga tushirilganidan so`ng u Operatsion Sistema(OS) ga biror algoritm asosida ketma-ketlik va bog`liqlik bilan buyruqlarni berib boradi, OS esa uni tartib bo`yicha bajaradi. Bi shu algoritmni kompyuterga biror bir til orqali izohlab kiritamiz. Bu til esa dasturlash tili deyiladi. Dasturlash tillari juda ko`p, ammo barcha tillar oxirida yagona tilga o`giriladi, tarjima qilinadi (translation), bu til Assembler tilidir. Assembler tili – mashina tiliga eng yaqin til, ya`ni mashinaga to`g`ridan-to`g`ri buyruq beradigan til. E`tibor bering OS ga emas, mashinaga buyruq beradigan til deb tushuntirildi. Bu tarjimani OS yoki biror dastur amalga oshirishi mumkin. Assembler dasturlash tili juda ham murakkab til bo`lganligi sababli uni o`rganish, o`rgatish juda kam uchraydi. Shu Assembler tilininig ustiga boshqa dasturlash tillari yozilgan va ular foydalanishga ancha qulay bo`lganligi sababli hozirgi vaqtda ancha ommalashib, rivojlanib bormoqda.
Zamonaviy dasturlash tillari C, C++, C#, Java, Php, .
C, C++ dan biror bir service(kompyuterda ishga tushirilganda kerakli natijani qaytaruvchi dastur), driver(texnik qurilmalar va OS ni buyruq va ma`lumotlarni almashib turishini ta`minlovchi dastur), mikrosxemalarga dastur yozganda(robotlashtirish, avtomatlashtirish) va kuchli matematik amallar yozganda keng foydalaniladi.
Java va C# dan foydalanuvchilar uchun dastur yoki saytlar tuzishda qo`llaniladi. C# dasturlash tili Java dan imkoniyatlari tomonidan ancha oldinlab ketgan, ammo faqat Windows OS da ishlaydi xolos. Java esa har qanday sistemada ishlayveradi. Undan tashqari C# ni o`zi ham, unda tuzilgan dasturlarni ishlatilishi uchun o`rnatiladigan qobiq dasturlar ham pullik, Java da esa tekinlari ham bor. Xavfsizlik va tezlik tomoni muhim bo`lgani sababli bunga ham e`tibor qaratish lozim. Windows OS muhitida C# har tomonlama kuchliroq ammo Linux OS da esa C# ishlamaganligi sababli taqqoslay olmaymiz. Windows va Linux OS larni taqqoslaydigan bo`lsak – Windows shaxsiy kompyuterlarda foydalanish ma`qulroq, chunki server versiyasi Linuxdan har tomonlama orqada qoladi. Shu sababli Java da katta va xavfsizligi o`ta muhim bo`lgan saytlar yoziladi. Sabab Javada emas, OS da bo`lganligi sababli. Yaqinda C# ham platforma tanlamaydigan bo`lib chiqmoqda, ko`ramiz natija qanaqa bo`ladi endi.
PHP – kichik saytlarni, web sahifalarni, tezda bitkazilishi kerak bo`lgan ma`lumotnoma,reklama saytlarini tuzish uchun foydalaniladigan dasturlash tili.
Dasturlash tillarida xotira tushunchasi
Dastur ishlashi uchun xotira eng muhim subyektlardan biri, chunki xotirasiz hech narsa ishlamaydi, biror amal bajarishda faqat xotiradagi qiymatlar ustida amal bajariladi, xotirada bo`lmagan narsalarni dasturlash tillari xato deb hisoblaydi. Demak har bir foydalanmoqchi bo`lgan qiymatimizni avval xotiraga olib keyin foydalanar ekanmiz.
2 xil xotira mavjud. Dinamik(Dynamic) va Statik(Static) xotira turlari.
Statik xotira chegaralangan va u to`lgan sari dasturning ishlash tezligi pasayishi mumkin. Dinamik xotira esa chegaralanmagan va undan foydalanishda bizda imkoniyatlar mavjud. Statik xotirada e`lon qilingan(saqlangan) qiymat statik xotiraning o`zida saqlanadi. Dinamik xotirada saqlanganda esa qiymatning o`zi keng maydondek tasavvur qilinadigan dinamik xotiraga va uning manzili esa statik xotirada saqlab qo`yiladi. Shu tufayli katta ma`lumotlar bilan ishlaganda ham statik xotirani tejab foydalanamiz. Dinamic xotirada e`lon qilingan o`zgaruvchi o`chirib yuborilsa statik xotiradagi dinamik xotiraning adresi o`chiriladi ammo dinamik xotiradagi qiymat qolib ketadi. Bir nechta shu kabi holatlar yuzaga kelsa dinamik xotirada keraksiz ma`lumot qolib ketadi, buni ham tozalashga to`g`ri keladi. C++ da bularni dasturchining o`zi hisobga olib tozalab ketishi lozim, Java,C# da esa hisobga olingan va avtomatik ravishda ro`y beradi (Garbage Collect algoritmi asosida chiqindilardan tozalab turiladi) . Ya`ni har bir blok yopilishida o`sha blok ichidagi chiqindilar tozalab ketiladi. Demak dinamik xotirada biror qiymat o`zgartirilsa statik xotiradagi qiymat(ya`ni dinamik xotiradagi qiymatning manzili) o`zgartirilmasdan dinamik xotiradagi qiymat o`zgartirib qo`yiladi.
Tizimli va Obyektga yo`naltirilgan dasturlash tillari.
Biz yuqorida dasturlash tili deganda qisqacha ma`lumotga ega bo`ldik. Demak algoritmlarni biror bir qonuniyat bo`yicha kompyuterga bajarishi uchun buyruqlar asosida izohlab beriladigan til – dasturlash tili. Dasturlash tillari insonlar kashf qilinganida tizimli dasturlash bo`lgan xolos. Hisob-kitob, qo`shish-ayirish va shunga o`xshash oddiy narsalar bo`lgan. Obyekt tushunchasi bo`lmagan. Faqat biror bir ma`lumotni saqlab undan foydalanish bo`lgan xolos. Bular Tizimli dasturlash deyilgan.
Undan so`ng dasturlar rivojlangan va ba`zi dasturlar murakkab dasturning bir qismi(funksiyasi) bo`lib qolgan. Shunda funksiya kiritilgan, undan so`ng to`plamlardan foydalanishga ehtiyoj sezilgan. Qaysidir bir ma`lumotlar to`plamini biror tipga tegishli deb shunaqa to`plam hosil qilish fikrini ilgari surib struct, class tushunchalari kiritilgan. Struct(struktura) Class(klass)dan biroz oldinroq kiritilgan va OOP ga aloqasi yo`q. Struct bilan Class ning farqini ko`rishda Tizimli va OOP ni farqini bilib olamiz.
Qiziqarli malumotlar
Xush kelibsiz