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) proqaramlaşdırma dilini örgə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 onunmur.
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 Texnalogiyalarında yeri barədə söz açmazdan öncə gəlin əvvəl bugünkü həyatımızada 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üter 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əttdə ki proqram. Məhz proqram kompüterə hansı işlər görməli olduğunu tam detalları ilə bildirir. Proqramsız kompüter təmamilə yararsız bir dəmir parçasıdır. Proqramı isə əlbəttdə 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 olacayıq. Biz proqramın mətn kodunu yazırıq C dilində , daha sonra xüsusi proqramlar vasitasilə 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 Wikipediada 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 proektlər əsasən bu dildə yaradılır. Buraya əməliyyatlar sistemləri (bütün UNİX-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 bugünkü gündə rolunu anlamaq üçün "bütün UNİX-tipli əməliyyatlar sistemi anlayışına" nəzər salmaq kifayətdir.
UNİX-tipli əməliyyatlar sistemlərinin dəqiq siyahısını vermək mümkün deyil. FreeBSD, OpenBSD SOLARİS, HP_UX, AİX... və xakerlərin sevimlisi GNU/LİNUX (çünki təmamilə 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. UNİX-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 daxildir müxtəlif server proqramları webserver(appache...), 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 proqaramları (tar, gzip ... faylların həcmini kiçiltmək üçün) , 100 -lərlə, 1000 -lərlə digər proqramlar və əlbəttdə ki ən əsası nüvə (kernel) proqramı. 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əaliyyatinə 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ı(driverlə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əkliklə C dilini mükəmməl bilmək mənbə kodları açıq şəkildə verilən bu proqramları(bəziləri istisna olmaqla – oracle,...) başa düşməyə və müəlliflər tərəfindən verilmiş imkanlar daxilində (GPL, OSL, v.s. lisenziyaları) bu proqaramları dəyişib istifadə etməyə imkan verir.
C proqaramlaş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 proaramları 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. UNİX tipli sistemlər və Windows sistemləri ailəsi.
Windows əməliyyatlar sistemi.
Windows istifadəçilər üçün çox rahatdır, amma Windowsla 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 aiddir nüvə(kernel) kodu. 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 segmentinə 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ı örgə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/LİNUX sistemidir.
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.
İ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əhtdə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
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#
Indi 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
int main(){
printf("Hello World_1\n");
}
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ə " və " arasında olan ifadə ekranda çap olunur \n – dən savayı. hello1.cfaylı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 ediib 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
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 proqaramları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ə kimiprintf("%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.
Dostları ilə paylaş: |