Etiketler

Proqramlaşdırma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Proqramlaşdırma etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

Proqramlaşdırma dilləri

Perl 80-ci illərdə Larri Uoll tərəfindən işlənmişdir. Bu proqram dilinin böyük həcmli mətn fayllarının effektiv işlənməsində, hesabatların generasiyasında və məsələlərin idarəsində istifadəsi nəzərdə tutulmuşdur.

Perl-dən sətirlərlə, massivlərlə, ayrı-ayrı verilənlərlə, proseslərin idarəsində, system informasiyaları ilə işlərdə istifadə edilir. HTML web səhifələrin hazırlanmasında istifadə edilən populyar dildir.
Assembler-dən başqa, qalan proqramlaşdırma dillərinin hər biri yüksək səviyyəli dil adlandırılır, ancaq bu hələ onların eyni səviyyəli olması demək deyildir. Bir dilin səviyyəsi başqasının səviyyəsindən yuxarı, aşağı ola bilər.
"Yüksək səviyyəli dil" dedikdə, onun insan dilinə nə qədər yaxın olması başa düşülür. Beləliklə, insan üçün daha anlaşıqlı olan və proqramlaşdırma prosesini asanlaşdıran yeni dillər yaradılmağa başladı.
Proqramlaşdırma dilinin hər bir yaradıcısı insan-maşın əlaqələri haqqında öz təsəvvürlərini gerçəkləşdirdiyindən, qısa müddət ərzində yüzlərlə yeni dil meydana çıxdı. Yüksək səviyyəli dillər adlandırılan dillərin az bir qismi öz yerini tapıb inkişaf etdi və möhkəmləndi.
Yüksək səviyyəli dillərin öz müsbət cəhətləri var. Yüksək səviyyəli dilin Assembler-dən başlıca üstünlüyü, onu öyrənmək və istifadə etməyin çox-çox asan olmasıdır. Yüksək səviyyəli dildə yazılmış proqram Assembler-dəkinə nisbətən, daha yığcam və anlaşıqlıdır.
Onlar, əsasən, daşınabiləndir, yəni müxtəlif prosessorlu kompüterlərdə eyni cür işləyir. Bu isə o deməkdir ki, proqramı yazarkən onun işləyəcəyi kompüterin arxitekturasının incəliklərini öyrənməyə ehtiyac qalmır.
Əlbəttə, bu halda hər bir prosessorun öz kompilyatoru olmalıdır və onun yaratdığı icra faylı yalnız həmin prosessor üçün yararlı olacaqdır.

Proqramlaşdırma dillərinin müxtəlif səviyyələri var. Əsasən 5 qrupa ayrılırlar:
1. Çox yüksək səviyyəli dillər və ya vizual dillər: Access, FoxPro, Paradox, XBase, Visual Basic.
2. Yüksək səviyyəli dillər (bunlara bəzən "alqoritmik dillər" də deyilir): Pascal, Basic, Fortran
3. Orta səviyyəli proqramlaşdırma dilləri: C, C++
4. Aşağı səviyyəli proqramlaşdırma dilləri: Assembly language
5. Maşın dili: Ən aşağı səviyyəli dil olub, 0 və 1-lərdən ibarətdir.

Bundan başqa, proqramlaşdırma dillərini 2 ayrı qrupa da bölmək olar:
1. Prosedur proqramlaşdırma dilləri (Pascal, Basic)
2. Obyekt yönümlü proqramlaşdırma dilləri (C++, Java, Smaltalk)

Hər hansı proqramlaşdırma dilini istifadə etmək üçün isə, bizə ilk növbədə kompilyator lazımdır. Kompilyator olduqdan sonra, biz öz proqramımızı mətn redaktorunda (məsələn, Notepad) yaza bilərik.

Lakin bizə daha çox IDE, yəni proqramlaşdırmanın inteqrallaşmış mühitindən istifadə edirik. Sadə dillə desək, bizə bir mühit verilir, orda komponentlər olur və bunlardan istifadə edərək, biz öz proqramımızı yazırıq.
Və ən əsası, proqramlaşdırmanı öyrənmənin yolu proqram yazmaqdır.Ada dili Assembler dili C dili C++ dili COBOL dili CSS Delphi HTML JavaScript və Java Pascal dili PHP dili Proqramlaşdırma Visual C#

Proqramlaşdırma dillərinin səviyyələri

Dilini bilmədiyimiz insana nəyi isə başa salmaq üçün ya jestlərdən, ya da onun başa düşdüyü dildəki sözlərdən istifadə edirik. Kompüterin mərkəzi dili olan prosessorun da öz dili var.


Maşın dili.
Kompüterin bilavasitə "başa düşdüyü" yeganə dil, sadəcə ədədlər yığınından ibarət olan maşın dilidir.
"Maşın kodu" deyəndə, maşın dilində yazılmış proqram başa düşülür. Belə kodda proqram tərtib etmək, sonra isə onun düzgünlüyünü yoxlamaq çox çətindir, çünki bunun üçün ya bütün komandaların kod və formatını yadda saxlamaq, ya da hər dəfə xüsusi cədvəllərdən istifadə etmək lazım gəlir.
Kodlaşdırmada azacıq səlıqəsizlik, yazıda yanlışlıq, rəqəmlərin yerinin qarışdırılması gözlənilməz nəticələrə aparıb çıxarırdı. Belə yanlışlığı tapmaq da asan iş deyildi, çünki proqramçının qarşısında az-çox aydın dildə yazılmış alqoritm deyil, rəqəmlər yığını dururdu.
Assembler: Maşın kodunda proqramlaşdırma "iynəylə yer qazmaq" kimi bir şeydir. Çox sadə hesablama məsələləri maşın kodlarında uzun-uzadı elə mürəkkəb şəkil alırdı ki, kiçik kərpiclərdən böyük bir binanın necə tikilməsini təsəvvür etmək kimi çətin idi.
Assembler ingiliscə "assemble" - toplamaq, yığmaq sözündən götürülüb. Bu vəziyyətdən çıxmaq üçün ilk addım komandaların simvollarla əvəzlənməsi oldu, daha dəqiq desək, komandalar adi sözlərin qısaltmaları ilə göstərildi.
İdeya sadə olsa da, onun gerçəkləşdirilməsi yazılmış proqramların digər proqramçılar tərəfindən qavranılmasını asanlaşdırmağa, səhvlərin sayını azaltmağa, proqramçıların işini yüngülləşdirməyə imkan verdi.
Əlbəttə, Assembler proqramçını işin ən arzu olunmaz hissəsindən - operatorların əl ilə maşın koduna çevrilməsindən azad edir. Amerikalı qadın Qreys Hopper 1952-ci ildə dünyada ilk mnemonik proqramlaşdırma dili olan Assembler dilini yaratdı.
Komandaların simvollar vasitəsilə yazılış sisteminə "mnemonik yazı sistemi" deyilir. O, özündə mnemonik komandalar sistemini, prosedurlar kitabxanasını və proqram mətnlərini maşın koduna çevirmək üçün xüsusi proqramı birləşdirdi.
Maşın kodunun alınmasının belə proseduru kompilyasiya (ingiliscə comple - tərtib etmək, yığmaq), onu həyata keçirən proqram isə kompilyator adlanır. Bunları da Qreys Hopper düşünüb tapmışdır.
Ancaq buna baxmayaraq, Assembler dilinin iki böyük nöqsanı var. Birincisi (ola bilsin, siz özünüz artıq sezdiniz), Assembler dilində proqramlaşdırma çox diqqət və səbr tələb edən işdir. Mikroprosessorun işini birbaşa idarə edərkən həddən artıq xırda məsələlər nəzərə alınmalıdır.
İkinci çatışmazlıq Assembler dilindəki proqramların "daşınabilən" (portable) olmamasıdır. Məsələn, Assembler dilində İntel 8080 prosessoru üçün yazılmış proqramı Motorolla 6800 Prosessorlu kompüterdə işlətmək olmur, proqramı həmin prosessor üçün yenidən yazmaq lazım gəlir.
Doğrudur, bu o qədər də çətin məsələ olmasa da, hər halda, müəyyən işlər görülməlidir.

Proqram anlayışı

Proqram anlayışını daxil etməzdən və C dilinin müasir İnformasiya və Kommunikasiya Texnologiyalarında yeri barədə söz açmazdan öncə, gəlin, əvvəl bu günkü həyatımızda kompüterlərin və proqramların oynadığı rola sadə bir nəzər salaq.

Kompüterlər demək olar ki, hər yerdə, məişətdə, təhsildə, tibbdə, sənayedə və s. yerlərdə çox geniş istifadə olunur. Məsələn, NASA-da kosmik gəmilər, süni peyklər, zavodlarda mürəkkəb istehsal prosesləri kompüterlər vasitəsilə idarə olunur.
Milyardlarla insan məlumatları içərisində axtarış parametrlərinə uyğun gələnini kompüter verilənlər bazasında çox az bir zaman ərzində tapır. Adi istifadəçilər kompüterlə müxtəlif oyunlar oynayır, hər hansı mətn və ya cədvəl üzərində işləyir.
Arxitektura cəhətdən dünyada mövcud olan əksər kompüterlər arasında elə də böyük fərq yoxdur. Yəni evdə istifadə etdiyimiz kompüterlə NASA-da istifadə olunan kompüterlər bir-birindən əsasən, yaddaş və sürətinə görə fərqlənir.
Bəs niyə biz öz kompüterimizlə hansısa kosmik gəmiləri idarə etmirik? Kompüterlərə bu qədər müxtəlif işlər yerinə yetirməsinə imkan verən nədir? Niyə hansısa kompüterlə hər hansısa işi görmək olar, digəri ilə yox? Kompüterin, ümumiyyətlə istənilən bir işi görə bilməsinə imkan verən nədir? Əlbəttə ki, proqram. Məhz proqram kompüterə hansı işlər görməli olduğunu tam detalları ilə bildirir. Proqramsız kompüter tamamilə yararsız bir dəmir parçasıdır.
Proqramı isə, əlbəttə ki, proqramçılar tərtib edir. Bu iş son dərəcə çətin və məsuliyyətlidir. Proqramın hazırlanma prosesi, onun daxili strukturu və yerinə yetirilmə prosesi kifayət qədər mürəkkəb məsələlərdir və bu məsələlərlə məşğul olmaq təcrübə tələb edir.
Proqram sözü söz qaynağı olaraq, müəyyən şərtlərə və nizama görə edilməsi lazım olan əməliyyatların bütünü mənasına gəlməkdədir. Proqramlaşdırma da, proqram ortaya çıxarma işidir. Müəyyən şərtlərə və nizama görə müxtəlif əməliyyatlar reallaşdırmaq həyatı asanlaşdırmaq üçün lazımdır. Müxtəlif problemlərin həll olunmasında proqramlar zəruridir. Yazılan proqramlar həyatımızın bir çox hissəsində bizə lazım olmaqda, işlərimizi asanlaşdırmaqdadır. Elə insan yoxdur ki, həyatı boyunca hansısa proqramla bilərək və ya bilməyərək təmasda olmasın, əgər bu adam mağarada yaşamırsa.
Nümunə olaraq, 25!(25*24*23*22*...1) əməliyyatının nəticəsi normal bir insan tərəfindən bir anda bilinməzkən, yazdığımız sadə bir proqramla bu əməliyyat kompüterə çox sürətli və səhvsiz olaraq etdirilə bilər.
Proqramlaşdırmaya başlayacaq adamın əvvəlcə problemi, şərtləri, həll yollarını, üsulları ən yaxşı şəkildə sinifləyə bilmə qabiliyyətinin olması gözlənilir. Böyük proyektlərdə analiz dediyimiz bu ilk qisim və daha sonrasındakı kodlaşdırma və test fərqli kəslər və ya qruplar tərəfindən reallaşdırılır.
Kompüter proqramlarının yazılmasında dəyişik proqramlaşdırma üsulları istifadə edilir. Yuxarıda faktorial nümunəsi kimi sadə problemlərin həllində Struktur Proqramlaşdırma, gerçək həyat problemlərində Obyekt Yönümlü Proqramlaşdırma, həlli qeyri-mümkün kimi görünən, həllə gedən yolda da yeni həllər çıxaracaq yeni proqramların meydana gəlməsi lazım olan vəziyyətlərdə də Süni intellekt proqramlaşdırma istifadə edilir.
Bəhs etdiyimiz hər üsul üçün ayrı proqramlaşdırma dilləri mövcuddur. Bir proqramlaşdırma diliylə hər mərhələdə proqram yazma deyə bir şey yoxdur. Nümunə olaraq, Struktur Proqramlaşdırma edilə biləcək bir dil C (hansı ki, çox əhəmiyyətlidir), Obyekt Yönümlü Proqramlaşdırma edə biləcəyimiz dillər (Java, C++), son olaraq, Süni Zəka proqramları yazıla biləcək Prolog yüzlərlə, hətta minlərlə proqramlaşdırma dillərindən yalnız bir neçəsidir.
Bu dillər vasitəsi ilə ortaya çıxacaq məhsullara kompüterimizə yüklədiyimiz müxtəlif proqramlar (Office, Photoshop, oyunlar və s.), mobil telefonlara yüklənən proqramlar, sonra paltaryuyan maşınların, bəzi nəqliyyat vasitələrinin (avtomobil, qatar, təyyarə kimi)və s. digər qurğuların avtomatik idarə edilməsi üçün yazılmış proqramları göstərmək olar.

Alqoritmləşdirmə

İnsan gündəlik həyatında istənilən bir işi icra etmək üçün müəyyən hərəkətlər ardıcıllığından istifadə etməlidir. Əgər hərəkətlər ardıcıllığı müəyyən səbəbdən pozularsa, məlumdur ki, həyata keçiriləcək iş nəticəsiz olacaqdır. Deməli istənilən nəticəni əldə etmək üçün yerinə yetiriləcək hərəkətlər ardıcıllığını düzgün həyata keçirmək lazımdır.

Yəni istənilən işi və ya bir məsələni həll etmək üçün ardıcıl hərəkətlər düzülüşündən - alqoritmdən istifadə etmək lazımdır. Alqoritm latın sözü olub, qayda, qanun deməkdir. Alqoritm anlayışı riyaziyyatın fundamental anlayışlarından biridir. Onun müstəsna elm olması nəticəsində özünəməxsus mövzusu da vardır.
Alqoritm sözünü ilk dəfə IX əsrin məşhur özbək riyaziyyatçısı Mühəmməd ibn Musa Əl-Xarəzmi öz əsərlərində işlətmişdir. Alim onluq say sistemində dörd hesab əməlinin aparılma qaydalarını vermiş və bu qaydaların həyata keçirilmə ardıcıllığını alqoritm adlandırmışdır. 12-ci yüzilliyin birinci yarısında Əl-Xarəzminin bu əsəri latın dilinə tərcümə olunaraq, Avropada yayıldı.
Beləliklə, bu tərcümə sayəsində "alqoritm" sözü Avropa dillərinə keçdi. Həmin dövrdən etibarən, bütün elm adamları bu alqoritmlərdən istifadə edirlər. Əgər ümumi halda ifadə etsək, alqoritm müəyyən məsələnin həll qaydası, həll yoludur, yəni məsələnin həllini təmin edən formal qaydalar sistemidir. Məsələnin kompüterdə həlli nöqteyi-nəzərindən alqoritm axtarılan cavabların alınması üçün məsələnin verilənləri üzərində icra olunan hesabi və məntiqi əməllərin sonlu sayda ardıcıllığıdır.
Əməllər həll mərhələləri də adlandırılır. Mərhələlərə uyğun olaraq, alqoritm - sadə halda götürsək, hesabi və məntiqi mərhələlərdən ibarət olur. Həmin mərhələlərə uyğun olaraq, hesab və müqayisə əməlləri yerinə yetirilir. Müqayisənin nəticəsindən asılı olaraq, bu və ya digər mərhələnin icrasına baxılır.

Kompüterdə istənilən məsələni həll etmək üçün alqoritm tərtib edərkən, onun aşağidakı şərtləri ödəməsi vacibdir.
1. Müəyyənlik. Alqoritm müəyyən olmalıdır, daha doğrusu, dəqiq hesablama metoduna malik olmalı, icra edildikdə eyni nəticə verməli, istənilən istifadəçi tərəfindən tam başa düşülməlidir. Bunlarla yanaşı, yazılmış alqoritm istifadəçinin işi icra etdiyi zaman artıq düşünməməsi üçün son dərəcə dəqiq tutulmalı və ona qərar qəbul etməklə müstəqillik verməlidir.
2. Kütləvilik. Alqoritm kütləvi olmalıdır, yəni istifadəçi onu bir məsələnin həlli üçün nəzərdə tutmalıdır. Başqa sözlə, alqoritm təkcə ilkin verilənlərin bir qiyməti üçün yararlı olmamalıdır, o, həm də verilənlərin başqa qiymətləri üçün də istifadə oluna bilməlidir.
3. Diskretlik (latınca discretus - ayrılmış). Alqoritm diskret olmalıdır, yəni hesablama prosesi əməllər ardıcıllığına bölünməlidir.
4. Nəticəlilik. Alqoritm nəticəli olmalıdır, yəni alqoritm sonlu sayda mərhələlərdən sonra tamamlanmalıdir. Bu xassəni çox vaxt alqoritmin istiqamətliliyi də adlandırırlar. Əks halda, alqoritm sonsuz prosesə çevrilir.
5. Determinantlıq (latınca determinate - müəyyənlik, dəqiqlik). Alqoritm dəqiq olmalıdır ki, istifadəçi hər bir hesablama addımından sonra, növbəti addımın nə olacağı haqqında tam məlumat əldə etsin.
6. Alqoritm aydın olmalıdır ki, onu icra edən ona verilmiş tapşırığı tamamilə başa düşə bilsin.

Alqoritmi təsvir edərkən, onun mümkün qədər əyani olmasına və aydın verilməsinə ciddi fikir vermək lazımdır. Alqoritmin təsvir üsullarına gəlincə, demək lazımdır ki, onun əyani, yığcam standart vasitələrlə təsviri kütləviliyini təmin edən əsas amildir.

Alqoritmin təsviri üçün istifadə olunan əsas üsullar bunlardır:
- sözlə təsvir
- blok-sxemlə təsvir
- alqoritmik dillə təsvir

Sözlə təsvir alqoritmin kütləvilik xassəsini təmin etmədiyindən, o, icracı insan tərəfindən aparılan və nisbətən sadə alqoritmlərin təsvirində istifadə oluna bilər.
Bir çox hallarda alqoritmin təbii dildə təsviri ilə yanaşı, onun qrafik təsvirini də verirlər. Alqoritmin qrafik təsviri əmrlərin yerinə yetirilmə ardıcıllığını daha aydın şərh etməyə və görməyə imkan verir.
Təbii dildə təsvir zamanı yarana biləcək qeyri-müəyyənlik, qeyri-dəqiqlik qrafik təsvirin köməyi ilə aradan qaldırıla bilər. Qrafik təsvirdə alqoritmin əmrlərini göstərmək ücün müxtəlif bloklardan istifadə olunur. Bu mənada qrafik təsvirə "blok-sxemlərlə təsvir" də deyilir. Bu üsulda alqoritm, hər biri müəyyən funksiyanı yerinə yetirən bloklar ardıcıllığı şəklində təsvir olunur.