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#

JavaScript və Java

JavaScript və Java arasında heç bir qohumluq yoxdur. Buna baxmayaraq, Java C dilinə çox oxşardır.

JavaScript internet səhifənin dinamik imkanlarını genişləndirmək məqsədi ilə istifadə olunur. JavaScript dilində yazılmış modul HTML faylına alt proqram kimi inteqrasiya edilir və standart əmr vasitəsilə HTML kodunun uyğun sətrindən çağırılır.
Delphi Yunanıstanda qədim şəhər olmuşdur. Müasir dövrümüzdə əmtəə nişanı kimi bir çox proqram məhsullarında istifadə edilir. Məsələn, Borland Software Corporation. Delphi proqramlaşdırma dilləri arasında əsasən Verilənlər bazası, geosistemlər yaratmaq üçün istifadə edilir.
Proqramlaşdırma dillərinin ən əsaslarından biri olan Delphi inkişaf səviyyəsinə görə çox yüksəkdir.

Yüksək səviyyəli dillərin köməyilə istənilən sahəni proqramlaşdırmaq olar. Ancaq elə dillər də var ki, onlar xüsusi olaraq müəyyən sahələr üçün nəzərdə tutulub.

1. ALGOL - riyazi məsələlər üçün
2. CHILL - telekommunikasiya sistemləri üçün
3. COBOL - iqtisadi məsələlər üçün
4. Fortran - riyazi hesablamalar üçün
5. Java - obyektlərlə iş üçün
6. Linda - verilənlərin paralel emalı üçün
7. PostScript - görüntülərin təsviri üçün
8. Prolog - süni intellekt məsələlər üçün

Ada dili

Ada proqramlaşdırma dilinin yaranma tarixi 1974-1980-ci illərə təsadüf edir. Belə ki, 1974-cü ildə ABŞ-ın Müdafiə Nazirliyində belə qənəatə gəldilər ki, onların tələblərinə cavab verən, yəni hərbi sistemlərin idarə olunması üçün istifadə olunacaq proqramlaşdırma dili lazımdır.

1975-ci ildə ABŞ-ın Müdafiə Nazirliyində bu dilə olan tələblərin siyahısı tutulduqdan sonra, elmi dairələrə yeni proqramlaşdırma dilinin yaradılması barədə göstəriş verildi. Yeni dilin yaradılması konkurs yoluyla keçirildi. Böyük təkliflər içərisindən dördü seçildi.
Son nəticədə isə, ən mükəmməl olanı, yəni tələblərə cavab verən dil seçildi. İngilis şairi Bayronun qızı və həmçinin, dünyada ilk proqramçı sayılan Avqust Adanın şərəfinə bu dilə "Ada" adı verildi.
1983-cü il, 17 fevral tarixini Ada proqramlaşdırma dilinin rəsmi ad günü hesab etmək olar. Məhz həmin tarixdə bu dil ANSI/MIL-STD-1815 A-1983 standartını qazanmışdır.
Ada dili yaradılarkən üç amil əsas götürülmüşdür. Proqramlaşdırmanın etibarlılığı, effektivliyi və insan fəaliyyəti kimi dəqiq olması. Bundan əlavə, onun yazılışının asan olmasından çox, oxunaqlı olması əsas götürülürdü.

Ada dilini modullaşdırılmış dil də saymaq olar. "Hello, world!" proqramı ilə buna misal göstərək:

with Ada.Text_IO; 
 
procedure Hello is
    use Ada.Text_IO;
begin
    Put_Line("Hello, world!");
end Hello;

C dilinin tarixi

Unix əməliyyat sistemi ilə C proqramlaşdırma dili bir-biri ilə əlaqəlidir. Hər ikisinin tarixi 70–ci illərdən başlayır. AT&T Bell laboratoriyasında işləyən Ken Thompson oyun proqramı yazmaq istəyir. O, bu proqramı PDP-7 maşınında yazmaq istəyirdi. Lakin onun əməliyyatlar sistemi xoşuna gəlmədi. O, MULtics sisteminin sadələşdirilmiş və dəyişdirilmiş versiyasını yazmağa qərar verdi. Daha sonra isə, Dennis Ritchie və Brain Kernighan da ona qoşuldu.

Unix və C–nin tarixində bu 3 nəfər böyük rol oynadı. Əvvəlcə Thompson BCPL dilindən istifadə edərək, B dilini yaratdı. Bundan sonra isə, Ritchie Unix-i daha asan yazmaq üçün C dilini yaratdı. 1973-cü ildə C-dən istifadə edərək, Unix-i yenidən yazdılar və bu işlərinə görə, 1983-cü ildə ACM-in Turing mükafatını aldılar. O vaxtdan C dili çox dəyişməyib. 1988-ci ildə isə, ANSI C dilinin standartlarını müəyyən etdi. Sonralar isə, sistem və tətbiqi proqramçılar arasında olduqca məşhur olmuşdur.
C dilinin sintaksisi proqramın qısaldılmasını təmin edir, kompilyator isə, effektiv obyekt kod generasiya etmək xüsusiyyətinə malikdir. C dilinin ən əsas xüsusiyyətlərindən biri, ifadələr və operatorlar arasındakı fərqin tarazlaşdırılmasıdır ki, bu da onu funksional proqramlaşdırmaya yaxınlaşdırır.
Xüsusi ifadələrdən operator kimi istifadə etmək olar. Dilin sintaksisi proqramlaşdırmanı və tərtib olunmuş proqramın mənimsənilməsini çətinləşdirir.
1. C dilinin sintaksisi C++, JAVA, PHP dillərinin sintaksisi ilə eynidir. Bu, C dilini bilməklə digərlərinə keçməni xeyli asanlaşdırır.
2. C dilində yazılan proqramlar çox sürətli və təhlükəsiz olduğundan, ciddi proyektlər əsasən, bu dildə yaradılır. Buraya əməliyyatlar sistemləri, Google axtarış sistemi və bir çox proqramları aid etmək olar. Bu siyahını istənilən qədər uzatmaq olar.
Lakin C dilinin bu günkü gündə rolunu anlamaq üçün bütün Unix tipli əməliyyatlar anlayışına nəzər salmaq kifayətdir.
Unix tipli əməliyyatlar sistemlərinin dəqiq siyahısını vermək mümkün deyil. FreeBSD, OpenBSD, Solaris və xakerlərin sevimlisi GNU/Linux sistemlərini bu siyahının parlaq nümunələri kimi misal göstərmək olar.
Unix anlayışına müəyyən qədər aydınlıq gətirdik, indi isə, əməliyyat sisteminin nə demək olduğunu baxaq.
Əməliyyatlar sistemi sadəcə və sadəcə müəyyən qrup proqramlar yığınıdır. Buraya müxtəlif server proqramları - webserver (Apache...), File server (FTP server...), məlumatlar bazası proqramları (Oracle, MySQL...), kompilyator, assembler, linker proqramları (proqram tərtib etmək üçün), mətn redaktorları, shell proqramları (digər proqramları yükləmək və icra etmək üçün), arxiv proqramları (tar, gzip... - faylların həcmini kiçiltmək üçün), 100-lərlə, 1000-lərlə digər proqramlar və əlbəttə ki, ən əsası, nüvə (kernel) proqramı daxildir. Təsəvvür edin, bu qədər proqramın hamısı C dilində yazılıb.

Pascal dili

Pascal dili prosedur proqramlaşdırma dilləri içərisində ən çox istifadə olunan dildir.
Pascal dili 1970-ci ildə hesablama texnikası sahəsi üzrə ixtisasçı, isveçrəli professor Niklou Virt tərəfindən yaradılmışdır.
Bu dilin adı 18-ci əsrdə yaşamış fransız riyaziyyatcısı Blez Paskalın şərəfinə qoyulmuşdur.

COBOL dili

COBOL (Common Business Oriented Language) proqramlaşdırma dili ,1959-cu ildə, Amerikadakı kompüter istehsalçıları, xüsusi sektor və dövlət sektorundakı kompüter istifadəçilərindən ibarət olan bir qrup tərəfindən yaradılıb. İnkişaf etdirilməsində məqsəd informasiya mübadiləsində, analitik araşdırmalarda və biznes-əlavələrdə istifadə ediləcək, daşınabilən bir proqramlaşdırma dili istifadə etməkdir. COBOL dili ,hələ də ABŞ-da bəzi proqramçılar tərəfindən istifadə edilməkdədir. COBOL dilinin strukturu ingilis dilinə çox yaxındır.

Basic dili 1964-cü ildə proqramlaşdırmanı yeni öyrənənlər üçün yaradılmışdır. Bu dil hesablama maşını ilə insanın bilavasitə informasiya mübadiləsi üçün sadə dildir.
İlk vaxtlar bu dildə interpretatordan, hal-hazırda isə, kompilyatordan istifadə olunur....

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.

C++ Giriş

Bu mətndə C++ dilində proqram tərtibindən bəhs olunur. Bu mətndən istifadə edə bilmək üçün ilkin olaraq, heç bir proqramlaşdırma dilini bilmək tələb olunmur. Hər bir paraqrafın sonunda verilmiş çalışmalar mütləq yerinə yetirilməlidir. Bu, sizə materialı daha da aydın başa düşməyə kömək etməklə yanaşı, sizdə gələcək inkişaf üçün əvəzedilməz olan proqramlaşdırma təcrübəsi yaradacaq və artıracaq. Yadda saxlayın ki, proqramlaşdırmanı öyrənmənin yeganə yolu ancaq və ancaq sərbəst proqram yazmaqdır. Çətinliyi artırılmış məsələlər * simvolu ilə qeyd edilir.

Gələcəkdə sistem proqramlaşdırmanı öyrənmək istəyənlər §9 – Siyahılar bölməsinə xüsusi ilə diqqət yetirməlidirlər.

1.1 Kompüterin işlək vəziyyətə gətirilməsi.
Mətnə daxil olunan bütün proqramlar Windows sistemlərində test edilib, lakin bütün Unix tipli sistemlərdə, o cümlədənGNU/Linux sistemlərində də g++ və digər kompilyatorlar vastəsilə asanlıqla kodda heç bir dəyişiklik etmədən kompilyasiya və icra oluna bilər.

1.2 Kompilyatorun installyasiyası
Kompilyator olaraq, MS Visual Studio-dan istifadə edilir.
MS Visual Studio kompilyatorunun quraşdırma faylını http://www.microsoft.com/express/Downloads keçidindən endirə bilərsiniz.

1.3 İlk test proqram
Sistem və kompilyator problemlərini həll etdikdən sonra hər şeyin qaydasında olduğunu yoxlamaq üçün test proqramı yerinə yetirək.
MS Visual Studio proqramını yükləyin.
Daha sonra
File -> New -> Project
seçimini edirik.
New Project pəncərəsi açılacaq.
Project types: panelindən Win32Templates: panelindən isə Win32 Console Application seçimini edirik. Daha sonraName: pəncərəsindən yeni yaradacağımız proqramın adını daxil edirik. Bu pəncərəyə prog1 yazıb Ok düyməsini basırıq. Açılan yeni pəncərədə Finish düyməsini basırıq.

Bu əməliyyatlar bizə ilk proqramımızı tərtib etmək üçün bütün lazımi faylları yaradacaq və proqramın mətn faylı redaktoru pəncərəsi - prog1.cpp aktivləşdirəcək. Bu fayl təqribən aşağıdakına bənzər formada olur.


// prg_1_1.cpp : Defines the entry point for the console application.

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

Bu mətn kompiyator tərəfindən avtomatik yaradılıb. Proqramın mətn faylında aşağıdakı kimi dəyişikliklər edirik. #include "stdafx.h" sətrindən sonra #include <iostream> ,

{
mötərizəsindən sonra isə,
std::cout<<"Salam dunya \n"; ,
return 0; sətrindən əvvəl isə,
int x;
std::cin>>x;
sətirlərini daxil edirik.
Aşağıdakı kimi:

// prg_1_2.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
std::cout<<"Salam dünya \n";
int x;
std::cin>>x;
return 0;
}
Etdiyimiz dəyişiklikləri yadda saxlamaq üçün File -> Save all düyməsini basırıq. Artıq proqramımızın mətn faylı hazırdır və biz onu kompilyasiya edə bilərik. Kompilyasiya nəticəsində kompilyator bizim mətn faylından prosessor tərəfindən icra oluna bilən ikili proqram alacaq.
Proqramı kompilyasiya etmək üçün Build -> Build Solution əmrini daxil edirik. Proqramımızın kompilyasiyası başlayacaq və nəticə Output pəncərəsinə ötürüləcək. Əgər sonda Build: 1 Succeeded... sətri çap olunursa, deməli proqramımız uğurla kompilyasiya olunmuşdur.
İndi isə proqramımızı yerinə yetirək. Bunun üçün Debug -> Start Debugging düyməsini basırıq. Nəticədə kansol pəncərəsi açılacaq və “Salam dunya” mətni çap olunacaq. Proqramı söndürmək üçün klaviaturadan hər hansı simvol daxil edib Enter düyməsinə basmağımız kifayətdir.


Əgər bu nəticəni almısınızsa, deməli bütün hazırlıq işləri tamamdır, siz növbəti paraqraflarda verilən bütün proqram nümunələrini də, eyni qayda ilə yerinə yetirə bilərsiniz.
Əgər bu nəticəni almamısınızsa, onda üzülməyin, düzünü desək, hətta professional proqramçılar da hansısa yeni dili öyrənəndə, ilk proqramı heç də həmişə uğurla yerinə yetirmirlər. Ancaq bütün çətinlik elə bu ilk addımdadır.

Proqramın izahı:
Proqram icra olunduqda std::cout<<"Salam dunya \n"; sətrində verilən Salam dunya ifadəsini ekranda çap edir. ƏgərSalam dunya əvəzinə istənilən digər ifadəni yazsanız, onda ekranda həmin ifadə çap olunar.
Proqramın yerdə qalan detalları barədə irəlidə, müvafiq bölmələrlə tanış olduqdan sonra məlumat veriləcək. Hələlik isə onu deyə bilərik ki, #include<iostream> sətri istifadə edəcəyimiz bütün proqramlarda daxil olunur. Proqrama bu sətri daxil etmək bizə std::cout, std::cin funksiyalarından istifadə etməyə imkan verir.
Növbəti sətir int _tmain(int argc, _TCHAR* argv[]) sətridir.
Bu, proqramın əsas funksiyasıdır. C++ dilində yazılmış proqramlarda müxtəlif işlər görən standart (std::cout) və proqramçı tərəfindən yaradılan funksiyalardan (§5) istifadə olunur. main funksiyası (_tmain unikodu dəstəkləmək üçün MS Visual Studio-nun əlavəsidir) isə xüsusi funksiyadır. Bütün C++ proqramlarında bu funksiya mütləq olmalıdır və bütün C++ proqramları icra olunmağa main funksiyasından başlayır.
Beləliklə, sizə C++ dilində yazılmış istənilən proqramın mətn kodu verilərsə, onda siz main funksiyasını tapmaqla proqramın icra olunmağa başladığı yeri asanlıqla müəyyənləşdirə bilərsiniz.
Ən sonda yerləşən } simvolu isə, main funksiyasının bitdiyini göstərir

Bu mətndə C++ dilində proqram tərtibindən bəhs olunur. Bu mətndən istifadə edə bilmək üçün ilkin olaraq, heç bir proqramlaşdırma dilini bilmək tələb olunmur. Hər bir paraqrafın sonunda verilmiş çalışmalar mütləq yerinə yetirilməlidir. Bu, sizə materialı daha da aydın başa düşməyə kömək etməklə yanaşı, sizdə gələcək inkişaf üçün əvəzedilməz olan proqramlaşdırma təcrübəsi yaradacaq və artıracaq. Yadda saxlayın ki, proqramlaşdırmanı öyrənmənin yeganə yolu ancaq və ancaq sərbəst proqram yazmaqdır. Çətinliyi artırılmış məsələlər * simvolu ilə qeyd edilir.

Gələcəkdə sistem proqramlaşdırmanı öyrənmək istəyənlər §9 – Siyahılar bölməsinə xüsusi ilə diqqət yetirməlidirlər.

1.1 Kompüterin işlək vəziyyətə gətirilməsi.
Mətnə daxil olunan bütün proqramlar Windows sistemlərində test edilib, lakin bütün Unix tipli sistemlərdə, o cümlədənGNU/Linux sistemlərində də g++ və digər kompilyatorlar vastəsilə asanlıqla kodda heç bir dəyişiklik etmədən kompilyasiya və icra oluna bilər.

1.2 Kompilyatorun installyasiyası
Kompilyator olaraq, MS Visual Studio-dan istifadə edilir.
MS Visual Studio kompilyatorunun quraşdırma faylını http://www.microsoft.com/express/Downloads keçidindən endirə bilərsiniz.

1.3 İlk test proqram
Sistem və kompilyator problemlərini həll etdikdən sonra hər şeyin qaydasında olduğunu yoxlamaq üçün test proqramı yerinə yetirək.
MS Visual Studio proqramını yükləyin.
Daha sonra
File -> New -> Project
seçimini edirik.
New Project pəncərəsi açılacaq.
Project types: panelindən Win32Templates: panelindən isə Win32 Console Application seçimini edirik. Daha sonraName: pəncərəsindən yeni yaradacağımız proqramın adını daxil edirik. Bu pəncərəyə prog1 yazıb Ok düyməsini basırıq. Açılan yeni pəncərədə Finish düyməsini basırıq.

Bu əməliyyatlar bizə ilk proqramımızı tərtib etmək üçün bütün lazımi faylları yaradacaq və proqramın mətn faylı redaktoru pəncərəsi - prog1.cpp aktivləşdirəcək. Bu fayl təqribən aşağıdakına bənzər formada olur.


// prg_1_1.cpp : Defines the entry point for the console application.

#include "stdafx.h"

int _tmain(int argc, _TCHAR* argv[])
{
return 0;
}

Bu mətn kompiyator tərəfindən avtomatik yaradılıb. Proqramın mətn faylında aşağıdakı kimi dəyişikliklər edirik. #include "stdafx.h" sətrindən sonra #include <iostream> ,

{
mötərizəsindən sonra isə,
std::cout<<"Salam dunya \n"; ,
return 0; sətrindən əvvəl isə,
int x;
std::cin>>x;
sətirlərini daxil edirik.
Aşağıdakı kimi:

// prg_1_2.cpp : Defines the entry point for the console application.

#include "stdafx.h"
#include <iostream>

int _tmain(int argc, _TCHAR* argv[])
{
std::cout<<"Salam dünya \n";
int x;
std::cin>>x;
return 0;
}
Etdiyimiz dəyişiklikləri yadda saxlamaq üçün File -> Save all düyməsini basırıq. Artıq proqramımızın mətn faylı hazırdır və biz onu kompilyasiya edə bilərik. Kompilyasiya nəticəsində kompilyator bizim mətn faylından prosessor tərəfindən icra oluna bilən ikili proqram alacaq.
Proqramı kompilyasiya etmək üçün Build -> Build Solution əmrini daxil edirik. Proqramımızın kompilyasiyası başlayacaq və nəticə Output pəncərəsinə ötürüləcək. Əgər sonda Build: 1 Succeeded... sətri çap olunursa, deməli proqramımız uğurla kompilyasiya olunmuşdur.
İndi isə proqramımızı yerinə yetirək. Bunun üçün Debug -> Start Debugging düyməsini basırıq. Nəticədə kansol pəncərəsi açılacaq və “Salam dunya” mətni çap olunacaq. Proqramı söndürmək üçün klaviaturadan hər hansı simvol daxil edib Enter düyməsinə basmağımız kifayətdir.


Əgər bu nəticəni almısınızsa, deməli bütün hazırlıq işləri tamamdır, siz növbəti paraqraflarda verilən bütün proqram nümunələrini də, eyni qayda ilə yerinə yetirə bilərsiniz.
Əgər bu nəticəni almamısınızsa, onda üzülməyin, düzünü desək, hətta professional proqramçılar da hansısa yeni dili öyrənəndə, ilk proqramı heç də həmişə uğurla yerinə yetirmirlər. Ancaq bütün çətinlik elə bu ilk addımdadır.

Proqramın izahı:
Proqram icra olunduqda std::cout<<"Salam dunya \n"; sətrində verilən Salam dunya ifadəsini ekranda çap edir. ƏgərSalam dunya əvəzinə istənilən digər ifadəni yazsanız, onda ekranda həmin ifadə çap olunar.
Proqramın yerdə qalan detalları barədə irəlidə, müvafiq bölmələrlə tanış olduqdan sonra məlumat veriləcək. Hələlik isə onu deyə bilərik ki, #include<iostream> sətri istifadə edəcəyimiz bütün proqramlarda daxil olunur. Proqrama bu sətri daxil etmək bizə std::cout, std::cin funksiyalarından istifadə etməyə imkan verir.
Növbəti sətir int _tmain(int argc, _TCHAR* argv[]) sətridir.
Bu, proqramın əsas funksiyasıdır. C++ dilində yazılmış proqramlarda müxtəlif işlər görən standart (std::cout) və proqramçı tərəfindən yaradılan funksiyalardan (§5) istifadə olunur. main funksiyası (_tmain unikodu dəstəkləmək üçün MS Visual Studio-nun əlavəsidir) isə xüsusi funksiyadır. Bütün C++ proqramlarında bu funksiya mütləq olmalıdır və bütün C++ proqramları icra olunmağa main funksiyasından başlayır.
Beləliklə, sizə C++ dilində yazılmış istənilən proqramın mətn kodu verilərsə, onda siz main funksiyasını tapmaqla proqramın icra olunmağa başladığı yeri asanlıqla müəyyənləşdirə bilərsiniz.
Ən sonda yerləşən } simvolu isə, main funksiyasının bitdiyini göstərir

Assembler Giriş

Hesablama texnikası əsasən iki mühüm komponentin birgə fəaliyyətinə əsaslanır. Bunlar aparat və proqram vasitələridir. Yalnız bu komponentlərin birlikdə qarşılıqlı funksional işinin təşkili sayəsində kompüterdə konkret məsələnin həllinə nail olmaq mümkündür. Proqram vasitələrinin əsasını əməliyyat sistemi (ƏS) təşkil edir.

Əməliyyat sistemi:
- kompüterin qurğularının işini idarə edir və onların qarşılıqlı əlaqəsini yaradır;
- proqram və verilənləri əsas yaddaşa daxil edir və kompüterin işinin nəticəsini çap qurğusuna, displeyə çıxarır, yaxud xarici informasiya daşıyıcılarına yazır;
- yeni proqramların yazılması və sazlanması prosesini həyata keçirir;
- proqramı yüksək səviyyəli proqramlaşdırma dilindən maşın əmrlərinə çevirir və s.
Sadaladığımız və sadalamadığımız funksiyaların icrası maşının aparat vasitələri ilə bağlıdır.
ƏS müəyyən funksiyaları yerinə yetirən çoxlu sayda proqram modullarından ibarətdir. Həmin modulların hamısının yaddaşda olması vacib deyil. Lakin elə modullar var ki, onlarsız kompüter öz funksiyalarını yerinə yetirə bilmir. Belə modullar ƏS–nin özəyini təşkil edir və onlar kompüterin işlədiyi müddətdə əsas yaddaşda olur.
Qoyulmuş məqsədlərdən asılı olaraq ƏS-nin konfiqurasiyası (tərkibi) müxtəlif ola bilər. Lakin komponentlər üçün hər bir ƏS-nin konfiqurasiyasına aşagıdakı əsas komponentlər mütləq daxil olmalıdır:
- fayl sistemi;
- xarici qurguların drayverləri;
- əmrlər dilinin prosessoru.
Fayl, sadə halda informasiyanın daimi saxlandığı sahədir. Çoxistifadəçili və çoxməsələli işlərin təşkili fayl sistemindən daha çox asılıdır.
Kompüterə çoxlu sayda xarici qurğular (XQ) qoşula bilər. Kompüterə standart qoşulan xarici qurğulardan (klaviatura, sərt və çevik informasiya daşıyıcıları, displey, maus və s.) başqa əlavə qurğular da qoşula bilər. Bunlara giriş-çıxış qurğuları, modemlər, qrafikquranlar, skanerlər, şəbəkə qurğuları və s. misal göstərmək olar. ƏS-nin əsas funksiyalarından biri də bu qurğuların fəaliyyətini təmin etməkdir. Ona görə də ƏS– in tərkibinə xarici qurğuların işini idarə edən, drayver adlanan xüsusi tip proqramlar daxil edilir. Hər bir tip XQ-nin özünəməxsus drayveri olmalıdır və yalnız onlar sistemə qoşulduqdan sonra
XQ–larin fəaliyyəti təmin olunur.
Standart qurğuların drayverləri baza giriş-çıxış (BİOS) sistemində yaradılır və sabit yaddaş qurğusunda (SYQ) yerləşdirilir.
Əlavə qurğuların drayverləri kompüter işə başladığı anda dinamik olaraq ƏS-nə qoşula bilər.
İstənilən əməliyyat sistemində (MacOS əməliyyat sistemi müstəsna olmaqla) bu və ya digər əməliyyatları, məsələn, kataloqa müraciət, xarici informasiya da­şı­yıçılarının nişanlanması, proqramın işə salınması, surətlərin çıxarılması və s., yerinə yetirmək üçün əmrlər dili mövcud­dur. İstifadəçi əmrlərinin analizi və icrası, hazır proq­ramların kompüterin yaddaşına yazılması və onlara müraciətin təşkili ƏS əmrlər prosessorunun köməyi ilə aparılır. Əməliyyat sisteminin bu hissəsi, istifadəçi ilə kompüter arasında qarışılıqlı əlaqəni yaratmaq kimi mürəkkəb və mühüm məsələni həyata keçirir. Ayrı–ayrı əmrlərin daxil edilməsindən başqa, əmrlər dilində adi proqramlaşdırma dilindən istifadə etmədən, daha mü­rəkkəb əməliyyatlar ardıcıllığını yerinə yetirə bilən tam proq­ramın tərtibi də mümkündür.
Əməliyyat sistemləri (əvvəlki versiyalar müstəsna olmaqla) eyni zamanda bir neçə məsələyə xidmət etmək imkanlarına malikdir. Yəni, ƏS bir neçə proqramın işə salınmasını, onlar üçün yaddaş sahəsinin ayrılmasını, prosessor və onun qurğularının bir məsələnin həllindən başqa bir məsələnin həllinə keçməsini və bunlar arasında informasiya mübadiləsini təşkil edir.
Hal-hazırda müəyyən tip mikroprosessorlara əsas­lanan CP/M, MS DOS, UNIX, MacOS, Windows kimi əməliyyat sistemləri mövcuddur və onlar geniş tətbiq olunur.
Maşın dilinin simvolik analoqu olan Assembler dilinin öyrənilməsi sistem proqramlarının tərtibində mühüm rol oynayır. Maşın əmrlərinin rəmzi işarəsi olan dilə Assembler (assemble-“yığmaq”, ”toplamaq” sözündəndir) dili deyilir. Maşın dili konkret tip kompüterin bütün arxitektur incəliklərini özündə əks etdirir. Bu səbəbdən hər mikroprossesor tipinin fərdi maşın dili olur. Assembler mikroprossesor dilini simvolik təsvir etdiyindən və mikroprosessorun arxitekturu ilə kəsilməz bağlı olduğundan o, kompüter təhsilinin ayrılmaz tərkib hissəsini təşkil edir.
Mikroprosessorun arxitekturunda aparılan dəyişiklik Assembler dilini təkmilləşdirir. Deyilənlərin vacibliyini nəzərə alaraq, kitabda müxtəlif tip mikroprosessorların assemblerinin öyrənilməsinə və çoxlu sayda praktiki məsələlərin həlli üçün Assembler proqram nümunələrinə geniş yer verilmişdir.

Delphi proqramlaşdırma dili barədə qısa məlumat

Artıq 1993-cü ildə Microsoft firması 1-ci vizual proqramı istehlaka buraxdı və Windows əməliyyat sistemi üçün proqramlaşdırma MS-DOS əməliyyat sistemi üçün proqramlaşdırmadan olduqca asan oldu. Buna cavab olaraq, Borland firması 1995-ci ildə Delphi proqramlaşdırma dilinin 1-ci versiyasını istehsal etdi və ardıcıl olaraq, 1996-cı oldə Delphi 2, 1997-ci ildə Delphi 3, 1998-ci ildə Delphi 4, 1999-cu ildə Delphi 5 və 2000-ci ildə Delphi 5.5 hazırlandı. Hal-hazırda da Delphi ən müasir proqramlaşdırma dillərindən biridir.

Visual C# - Giriş

Son illər bütün dünyada olduğu kimi, Azərbaycanda da proqramlaşdırma sahəsinə maraq günü-gündən artmaqdadır. Qısa bir sübut göstərim, mənim qaldığım 9 mərtəbəli binada 10-15 nəfərə yaxın, müxtəlif universitetlərdə bu ixtisasla oxuyanlar var. Və bu ixtisas üzrə seçimlər də günbəgün artmaqdadır. Nə isə...

Çox təəssüflər olsun ki, Azərbaycanda bu sektorda inkişaf edən sadəcə bəzi tələbələrin marağıdır. Universitetlərdə bu baxımdan hələ ki, heç bir inkişaf gözə dəymir. Təbii ki, bunu ümumi götürməyək, bəzi universitetlərdə həvəsli müəllimlər də vardır hər halda. Şəxsən özümün də təhsil aldığım Azərbaycan Texniki Universitetində bu barədə vəziyyət acınacaqlıdır. Belə ki, heç bir yeni proqramlaşdırma dilləri tədris proqramlarına salınmır, təsəvvür edin, ən müasir proqramlaşdırma dili Delphi-dir. Amma bizim universitetdə də tələbəyə nə isə öyrətmək istəyən müəllimlər var, bu, danılmaz bir həqiqətdir.
Söhbəti çox uzatmayaq, mövzudan da çox kənara çıxmayaq deyə, gəlin, elə birbaşa olaraq mətləbə keçək.

CSharp nədir?
C# Proqramlaşdırma dili ("Si şarp" şəklində tələffüz edilir), Microsoft-un şirkəti tərəfindən yaradılmış və inkişaf etdirilən yeni nəsil bir dildir. .NET platforması altında işləyir.
Bu dilin hazırlanmasına Pascal, Delphi və J++ proqramlaşdırma dillərinin hazırlanmasında bilinən Anders Hejlsberg liderlik etmişdir.
Sintaksis olaraq, məhz ən böyük rəqibi olan Java dilinə daha çox bənzəsə də, Veb proqramlaşdırma dillərindən olan PHP dili ilə də çox böyük bənzərlik göstərir. Nəzərə alsaq ki, C# yuxarıda adı çəkilən iki dildən də sonra yaranıb, onda bu qənaətə gəlmək olar ki, C# bu dillərə nisbətən daha müasir, rahat və əlverişlidir. Çünki bu dildə Java və bənzəri bir çox dildə olan əskikliklər aradan qaldırılıb və bir o qədər də yeniliklər edilib. Məhz yuxarıda saydığımız ünsürləri də bu hadisə ilə bağlamaq olar.
Əgər hər hansı bir proqramlaşdırma biliyiniz varsa, mütləq C#-da ona bənzərliyi hiss edəcəksiniz.
Əslində danılmaz bir həqiqətdir ki, Microsoft şirkəti özü də C#-ı digər proqramlaşdırma dillərindən üstün tutduğunu gizlətmir və məhz bu dil Microsoft-u proqramlaşdırma sektorunda da liderlik etməsinə səbəb olur.
Digər üstünlüyünü deyim, çünki bu hissəsi xüsusilə bilinməlidir. Siz C# dilini öyrənməklə yalnız Vizual C#-da deyil, Microsoft-un bütün yeni sistemlərində: Microsoft ASP.NET, WPF, WCF, Silverlight-da da heç bir problemsiz işləyə biləcəksiniz, çünki Microsoft bütün bu sistemlərdə işləmək üçün C# dilini təqdim edir.
Qısası, əgər öyrənmək üçün C# dilini seçmisinizsə, əcəb eləmisiniz :) Onu bilin ki, düz yoldasınız.

Giriş edib kod yazmasaq, günah etmiş olarıq, buyurun, bu da ilk kodumuz olsun, klassik "HELLO WORLD" proqramı:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.Sqlclient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
 public partial class Form1 : Form
 {
 public Form1()
 {
 InitializeComponent();
 }

 private void button1_Click(object sender, EventArgs eas)
 {
 MessageBox.Show("HELLO WORLD!");
 }
 }
}

C Giriş

Bu mətndə C dilində proqram tərtibindən bəhs olunur. Mətndən tələbələr, məktəblilər, informatika fənnini tədris edən müəllimlər, sistem inzibatçıları və ümumilikdə, C (si) proqramlaşdırma dilini öyrənmək istəyən kər kəs istifadə edə bilər. Bu mətndən istifadə edə bilmək üçün ilkin olaraq, heç bir proqramlaşdırma dilini bilmək tələb olunmur.

Kompüterlər, proqramlar, proqramlaşdırma dilləri, əməliyyat sistemləri

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ə idərə olunur. Milyardlarla insan məlumatları, içərisində axtarış parametrlərinə uyğun gələnini kompüterin verilənlər bazasından çox az bir zaman ərzində (saniyənin kiçik bir hissəsi) 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 və s.
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 komputerlə 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ı işi görmək olar, digəri ilə yox? Kompüterə ü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ərlə məşğul olmaq təcrübə tələb edir. Biz hələlik proqramın hazırlanması ilə məşğul olacağıq. Biz proqramın mətn kodunu C dilində yazırıq, daha sonra, xüsusi proqramlar vasitəsilə, bizim mətndən icra olunan proqram alınır.
İndi isə, bir qədər C dili barəsində danışaq.
C dili haqda Wikipedia-da kifayət qədər məlumat verilib. Qısa olaraq onu demək olar ki:
1. C dilinin sintaksisi C++, JAVA, PHP dillərinin sintaksisi ilə eynidir (buradan isə o çıxır ki, bütün bu dillərin sintaksisi eynidir :)). Bu, C dilini (və ya bu dillərdən hər hansı birini) bilməklə, digərlərinə keçməni xeyli asanlaşdırır.
2. C dilində yazılan proqramlar çox sürətli və təhlükəsiz olduğundan, ciddi proyektlər, əsasən bu dildə yaradılır. Buraya əməliyyatlar sistemləri (bütün Unix tipli sistemlərin hamısı C dilində yazılıb), Google axtarış sistemi və bir çox digər proqramları aid etmək olar. Bu siyahını istənilən qədər uzatmaq olar. Lakin C dilinin bu günkü gündə rolunu anlamaq üçün "bütün Unix tipli əməliyyatlar sistemi anlayışına" nəzər salmaq kifayətdir.
Unix tipli əməliyyatlar sistemlərinin dəqiq siyahısını vermək mümkün deyil. FreeBSD, OpenBSD, Solaris, HP_UX, AIX və xakerlərin sevimlisi GNU/Linux (çünki tamamilə xakerlər tərəfindən yaradılıb) sistemlərini bu siyahının parlaq nümunələri kimi misal göstərmək olar. Unix tipli anlayışına müəyyən qədər aydınlıq gətirdik, indi isə, əməliyyatlar sisteminin nə demək olduğuna baxaq.
Əməliyyatlar sistemi sadəcə və sadəcə müəyyən qrup proqramlar yığınıdır. Ancaq proqramlar, ayrı heç nə. Buraya müxtəlif server proqramları - webserver (Apache...), File server (FTP server...), məlumatlar bazası proqramları (Oracle, MySQL...), kompilyator, assembler, linker proqramları (proqram tərtib etmək üçün), mətn redaktorları, shell proqramları (digər proqramları yükləmək və icra etmək üçün), arxiv proqramları (tar, gzip... - faylların həcmini kiçiltmək üçün), 100-lərlə, 1000-lərlə digər proqramlar və əlbəttə ki, ən əsası, nüvə (kernel) proqramı daxildir. Təsəvvür edin, bu qədər proqramın hamısı C dilində yazılıb.
İndi isə, ən maraqlısı – nüvə. Nüvə proqramı kompüter əməliyyatlar sisteminin ən əsas proqramıdır. Bu proqram sistemin fəaliyyətinə tam olaraq nəzarət edir. O, əməliyyatlar sisteminin digər proqramlarının fəaliyyəti üçün lazim olan bütün funksiyaları özündə cəmləyir. Xüsusi olaraq, buraya kompüterin qurğularının idarə olunması (driver-lər), yaddaşının idarə olunması (memory management), proseslərin (yerinə yetirilən proqramların) idarə olunması, faylların idarə olunması, şəbəkənin idarə olunması (networking), kompüterin digər resurslarının və s. idarə olunması daxildir. Beləliklə, C dilini mükəmməl bilmək mənbə kodları açıq şəkildə verilən bu proqramları (bəziləri istisna olmaqla – Oracle və s.) başa düşməyə və müəlliflər tərəfindən verilmiş imkanlar daxilində (GPL, OSL, və s. lisenziyaları) bu proqramları dəyişib istifadə etməyə imkan verir.

C proqramlaşdırma dili

İlk proqram.
Bu mövzuda biz ilk proqramı yerinə yetirmək barədə danışacağıq. Yəni C dilində proqram yazmaq üçün bizə nə lazımdır, bunları haradan əldə edə və necə işlək vəziyyətə gətirə bilərik. Sonda hər şeyin qaydasında olduğunu yoxlamaq məqsədilə, test proqram yerinə yetirəcəyik.
C dilində və istənilən digər dildə proqram yazmaq üçün bizə kompüter, əməliyyatlar sistemi, kompilyator və mətn redaktoru proqramları lazımdır. Kompüter məsələsi aydındır.
Əməliyyatlar sistemi - hal-hazırda geniş yayılmış 2 əməliyyatlar sistemi ailəsi mövcuddur: Unix tipli sistemlər və Windows sistemləri ailəsi.

Windows əməliyyatlar sistemi
Windows istifadəçilər üçün çox rahatdır, amma Windows-la bağlı bir çox proqramçıların mövqeyi müsbət deyil. Məsələ ondadır ki, bir çox CPU (prosessor) arxitekturaları qoruyucu rejimdə (əsas işçi rejim) işlədikdə yaddaşı (RAM) seqmentlərə bölür və bir seqmentin proqram kodunun digər seqmentə müraciət etməsinin qarşısını alır (qoruyur). Belə halda, kompüterdə yerinə yetirilən proqramlar 2 qrupa bölünür.

Yüksək prioritetli seqmentlərə yüklənmiş proqramlar.
Bu proqram kodlarına nüvə(kernel) kodu aiddir. Driverlər, yaddaşın, şəbəkənin, fayllar sisteminin, proseslərin idarə olunması və bir çox digər işləri yerinə yetirən proqram kodları bu qrupa daxildir. Bu proqramlar kompüterin bütün resurslarına (portlar və s.) tam nəzarət edir və onlar yaddaşın istənilən seqmentinə istənilən müraciəti edə bilərlər.

Aşağı prioritetli seqmentlərə yüklənmiş proqramlar.
Bu proqramlara kompüterə yüklənmiş yerdə qalan proqramlar - istifadəçi proqramları aiddir.

Windows sistemi öz nüvəsinin proqram kodlarını gizli saxlayır. Bu isə, öz proqramlaşdırma biliyini daha da inkişaf etdirmək istəyən proqramçılara maneə yaradır.

Unix tipli sistemlər (GNU/Linux, FreeBSD, Solaris, AIX...)
Unix sistemləri proqramçılar tərəfindən yaradılıb və bütün proqram kodları açıqdır. Kompüter arxitekturasını öyrənmək istəyən proqramçılar üçün Unix əvəzedilməz əməliyyatlar sistemidir. Unix sistemləri həm interfeys, həm də daxili struktur baxımından bir-birinə çox yaxındır. Bu sistemlərin içərisində ən maraqlısı GNU/Linux sistemidir.
GNU/Linux sisteminin quraşdırılması barədə e-sənədi bu linkdən əldə edə bilərsiniz.
Bu mətndə verilmiş bütün proqramlar GNU/Linux sistemi üçün nəzərdə tutulub, lakin eyni qayda ilə, digər Unix sistemlərində də yerinə yetirilə bilər.
Windows-a gəlincə, ola bilsin ki, Windows bir çox proqramçılar üçün çox qiymətli hesab olunur. Lakin bu sahədə azacıq da olsa, təcrübəsi olan bir proqramçı kimi biz bütün proqramçılara bu sistemdən mümkün qədər kənar olmağı məsləhət görürük, əgər siz gələcəkdə sistem proqramlaşdırmanı öyrənməkdə qərarlısınızsa.
Bu barədə Sonrakı istiqamətlər bölməsində əlavə məlumat əldə edə bilərsiniz.
İstənilən halda bu mətndə verilmiş proqramları Windows sistemində də icra etmək olar, bunun üçün MS Visual C++, Borland C++ Builder və Delphi kompilyatorlarından istifadə edə bilərsiniz.

Proqram yazmaq üçün bizə lazım olan digər vasitə Mətn redaktoru proqramıdır. Biz gedit proqramından istifadə edəcəyik. gedit proqramını yükləmək üçün Applications->Accessories->Text Editor seçimini edin.

Kompilyator proqramı
Kompilyator proqramı olaraq, gcc-dən istifadə edəcəyik və bu kompilyator bütün Unix sistemlərində ən çox istifadə olunan proqramdır və o, hər bir sistemin paketinə daxil olduğundan, instalyasiyaya ehtiyac yoxdur.

İlk test proqram - "Hello world" proqramı
Qeyd edək ki, ilk test proqramını yerinə yetirib lazımi nəticəni almaq həqiqətən əzmkarlıq tələb edir və bir qayda olaraq, həmişə bir neçə uğursuz cəhddən sonra alınır. İlk olaraq, işçi qovluq (kataloq, papka, folder, directory) anlayışına aydınlıq gətirək. Terminal proqramını yükləyin.
Applications->Accessories->Terminal
Terminal pəncərəsindən aşağıdakı əmri daxil edin.
pwd
Ekranda sizin işci qovluq cap olunacaq.

user@gnu_linux:~$ 
user@gnu_linux:~$ 
user@gnu_linux:~$ pwd
/home/user
user@gnu_linux:~$ 
user@gnu_linux:~$
ls əmrini daxil edin.

user@gnu_linux:~$ 
user@gnu_linux:~$ ls
3_20 ch02.pdf f1.txt music Public ubuntu_ins
3_20.cpp Desktop german music_file fhedd Videos
arch documents mozilla.pdf music_file~ ramdisk.img.gz vmlinuz26
a.txt dff  mozilla.ps pictures telix wget
boot Examples m.txt prg Templates
user@gnu_linux:~$ 
user@gnu_linux:~$
Bu əmr hal-hazırda bizim işci qovluqda olan faylları və qovluqları göstərir.
mkdir proqs əmrini daxil edirik.
Nəticədə bizim işci qovluqda yeni proqs qovluğu yaranacaq.
cd proqs əmrini daxil edirik.
Nəticədə bizim işci qovluq proqs olacaq. Bu qovluğu yeni yaratdıq və orada olan faylları yoxlamaq üçün yenidən ls əmrini daxil edirik.

user@gnu_linux:~$ 
user@gnu_linux:~$ mkdir progs
user@gnu_linux:~$ 
user@gnu_linux:~$ cd progs
user@gnu_linux:~/progs$ 
user@gnu_linux:~/progs$ ls
user@gnu_linux:~/progs$ 
progs qovluğunu yeni yaratdıq və hələlik onda heç bir fayl yoxdur.
gedit proqramını yükləyək. Applications->Accessories->Terminal
Aşağıdakı mətni gedit proqramına köçürüb hello.c adı ilə yeni yaratdığımız proqs qovluğunda yadda saxlayırıq.

#include <stdio.h>

int main(){

printf("Hello World\n");

}
ls əmrini daxil edək. Nəticə aşağıdakına bənzər olmalıdır.

user@gnu_linux:~/progs$ 
user@gnu_linux:~/progs$ ls
hello.c
user@gnu_linux:~/progs$ 
user@gnu_linux:~/progs$ 
Hal-hazırda proqs qovluğunda bizim yaratmaq istədiyimiz proqramın mətn fayli (çox vaxt buna mətn kodu deyirlər) var (hello.c). Bu koddan yerinə yetirilə bilən proqram almaq üçün (mətn kodun kompilyasiya etmək üçün) gcc hello.c -o hello əmrini daxil edək. Əgər siz proqramın mətn kodunu düzgün köçürmüsünüzsə, onda proqramın kompilyasiyası uğurla başa çatmalıdır. Bunu yoxlamaq üçün yenə ls əmrini daxil edirik. Bu dəfə proqs qovluğunda hello adlı yeni faylın yarandığını görürük. Bu, bizim proqramdır.

user@gnu_linux:~/progs$ 
user@gnu_linux:~/progs$ gcc hello.c -o hello
user@gnu_linux:~/progs$ 
user@gnu_linux:~/progs$ ls
hello hello.c
user@gnu_linux:~/progs$ 
user@gnu_linux:~/progs$ 
Yeni yaratdığımız hello proqramını yerinə yetirmək üçün ./hello əmrini daxil edirik. Əgər ekranda Hello World sətri çap olundusa, onda sizi təbrik edirik, siz artıq C dilində ilk proqramı yerinə yetirdiniz.

user@gnu_linux:prg# 
user@gnu_linux:prg# gcc hello.c -o hello
user@gnu_linux:prg# ./hello
Hello World
user@gnu_linux:prg# 
user@gnu_linux:prg# 
İndi isə, gəlin, proqramın mətn kodu ilə daha ətraflı tanış olaq. Bunun üçün əvvəl bu proqramın bir qədər dəyişik variantlarını yerinə yetirək.

//prog hello_1.c

#include <stdio.h>

int main(){ 

printf("Hello World_1\n"); 

}

Nümunə
Proqramın mətnini hello1.c adlı faylda yadda saxlayırıq və kompilyasiya edirik.
gcc hello1.c -o hello1 və yerinə yetiririk: ./hello1

user@gnu_linux:~prg# 
user@gnu_linux:~prg# gcc hello1.c -o hello1
user@gnu_linux:~prg# 
user@gnu_linux:~prg# 
user@gnu_linux:~prg# ./hello1
Hello World_1
user@gnu_linux:~prg#
Bu dəfə ekranda Hello World_1 sətrinin çap olunduğunu görərik. Yəqin ki, oxucuya aydın olur ki, bu proqram yerinə yetirildikdə, printf("....................."); sətrində "" arasında olan ifadə ekranda çap olunur, \n–dən savayı. hello1.c faylında həmin sətri printf("Salam dünya. Bu, mənim C dilində 3-cü proqramımdır\n"); sətri ilə əvəz edək. Proqramı kompilyasiya edib yerinə yetirsək, ekranda "Salam dünya. Bu, mənim C dilində 3-cü proqramımdır" sətri çap olunacaq.

Tapşırıq:
Ekranda müxtəlif yazılar çap edən proqramlar yazmalı.

Beləliklə, proqram haqda təcrübə topladıq, indi isə, gəlin, hello.c proqramını daha dərin analiz edək. Proqramın ilk sətri#include <stdio.h> sətridir. Bu sətrin dəqiq izahı 10-cu paraqrafda verilir. Hələlik isə, onunla kifayətlənək ki, bu sətir proqramda printf funksiyasından istifadə etməyə imkan verir. Növbəti sətir int main(){ sətridir. Burada main adlı funksiya təyin olunur. Funksiyalar barəsində daha ətraflı 5-ci paraqrafda söhbət açacağıq. Hələlik isə, onu qeyd edək ki, main funksiyası bütün C proqramlarında olmalıdır və C dilində yazılmış hər bir proqram yerinə yetirilməyə məhz bu yerdən başlayır. Növbəti sətir printf("Hello World\n"); sətridir. Bu sətir bizə tanışdır. Ekranda hər hansı sətri, rəqəmi və s. məlumatı çap etmək üçün istifadə olunur. printf çox güclü çap funksiyasıdır və konkret yerlərdə bu imkanlarla tanış olacağıq. İndi isə, təcrübə kimi printf("%d%s%d=%d\n",3,"+",5,3+5); sətrini proqrama əlavə edib, onu yerinə yetirək. Proqramın son sətri isə } sətridir. Bu işarə main funksiyasının bitdiyini bildirir. Printf funksiyasında tez-tez rast gəldiyimiz \n isə, yeni sətir simvolu adlanır. Yəni printf çap edəcəyi sətirdə \n–nə rast gəldikdə, yerdə qalan hissəni növbəti sətirdən çap edir. Aşağıdakı sətri proqrama əlavə edib, bunu yoxlayın.
printf("\n1\n2 novbəti sətir\n\n\n\n\n");