
ნებისმიერი ახალი პროგრამირების ენის შესწავლის საუკეთესო საშუალებაა თეორიასთან ერთად პრაქტიკული სავარჯიშოები, ამ კურსშიც სწორედ ამ პრაქტიკას გამოვიყენებ და ნაბიჯ-ნაბიჯ პრაქტიკული გაკვეთილების საშუალებით გავიაზრებთ C ენას.
გავხსნათ ჩვენი ფავორიტი ტექსტის რედაქტორი, ან ნებისმიერი ონლაინ C ედიტორი და დავწეროთ შემდეგი კოდი. ფაილს დავარქვათ hello.c
#include <stdio.h>
int main() {
printf("Hello, world!\n");
return 0;
}
C არის ენა, რომლის კოდის შესასრულებლად საჭიროა მანქანურ კოდად გარდაქმნა, იგივე კომპილაცია. C-ის ფაილის გაფართოება უნდა სრულდებოდეს .c-ით.
დავიწყოთ არსებული კოდის განხილვა.
#include <stdio.h>
მოცემული ხაზი ნიშნავს, რომ ჩვენს პროგრამაში ვამატებთ C-ის სტანდარტულ I/O (Input/Output) ბიბლიოთეკას, რომელიც პასუხისმგებელია ტექსტის ეკრანზე გამოსატანად. რაც შეეხება "main" ფუნქციას ის წარმოადგენს C-ის კოდის გასაშვებად საჭირო ფუნქციას.
main ფუნქციის შიგნით გვაქვს კიდევ ერთი ფუნქცია, სახელად printf რომელსაც გადავცემთ ერთ არგუმენტს, "Hello, world!\n". printf() ფუნქცია ხელმისაწვდომია <stdio.h> ბიბლიოთეკაში, ანუ მისი დამატების გარეშე ეს ფუნქცია არ იმუშავებდა.
ასევე შეამჩნევდით \n სიმბოლოებს, რაც ნიშნავს იმას, რომ როდესაც ეკრანზე დაიბეჭდება "Hello, world!" პროგრამა გადავა ახალ ხაზზე.
return 0 გამოიყენება პროგრამის წარმატებით დასრულების აღსანიშნავად და ოპერაციულ სისტემას ატყობინებს, რომ პროგრამამ მუშაობა შეცდომების გარეშე დაასრულა.
მას შემდეგ რაც ჩვენს კოდს დავწერთ, მისი შესრულებისთვის აუცილებელია მანქანურ კოდად ე.წ. ბინარულ კოდად გარდაქმნა კომპილატორის დახმარებით.
როგორც წინა გაკვეთილში ვახსენეთ კომპილაციისთვის საჭიროა ჩვენს კომპიუტერზე კომპილატორის დაყენება, ან ონლაინ კომპილატორი, რომელიც ამ ბმულზე შეგიძლიათ ნახოთ და კომპილაციისთვის დააჭიროთ "Run" ღილაკს.
ვინაიდან ჩემი ოპერაციული სისტემაა macOS მე გამოვიყენებ მაკის ტერმინალის ბრძანეებას gcc hello.c ან cc hello.c, რომელიც კოდს გარდაქმნის მანქანურ კოდად და დააგენერირებს ბინარულ (binary) ფაილს.
gcc hello.c
დააგენერირებს ფაილს a.out ფაილს, რომელიც არის ე.წ. default, ხოლო იმ შემთხვევაში თუ გვინდა დაგენერირებულ ფაილს ერქვას ჩვენთვის სასურველი სახელი საჭიროა -o option-ის გამოყენება, რომელსაც მოსდევს სასურველი ფაილის სახელი.
gcc -o hello hello.c
ეს ბრძანება ნიშნავს, რომ კომპილირებული ფაილის სახელი იქნება hello
კოდის გასაშვებად ტერმინალში ჩავწეროთ ბრძანება ./hello რის შემდეგაც გამოისახება "Hello, world!".
Preprocessing არის პირველი ეტაპი, რომელიც კოდის კომპილაციამდე სრულდება. ამ ფაზაში C კომპილატორის სპეციალური ნაწილი — preprocessor — ამუშავებს სპეციალურ დირექტივებს, რომლებიც # სიმბოლოთი იწყება.
ამ ეტაპზე ხდება:
#include დირექტივების დამუშავება (სხვა ფაილების ჩასმა)
#define მაკროების ჩანაცვლება რეალური მნიშვნელობებით
#ifdef, #ifndef, #if პირობითი კოდის ფილტრაცია
კომენტარების ამოღება კოდიდან
Preprocessing-ის შემდეგ მიღებული კოდი ჯერ კიდევ C კოდია, მაგრამ უკვე „გაშლილი“ და მომზადებული კომპილაციისთვის.
კომპილაციის ფაზაში preprocessed კოდი გადადის კომპილატორში, რომელიც ამოწმებს კოდის სინტაქსსა და ლოგიკურ სისწორეს.
ამ ეტაპზე ხდება:
სინტაქსური შეცდომების აღმოჩენა
ცვლადებისა და ტიპების შემოწმება
C კოდის გარდაქმნა ობიექტურ კოდად (object file) — მანქანური კოდის შუალედურ ფორმატად
ამ ფაზის შედეგად პროგრამა ჯერ არ არის გასაშვები — ის მხოლოდ ნაწილია საბოლოო პროგრამის.
კიდევ უფრო რომ დავაზუსტოთ object file არის უკვე მანქანურ ენაზე ნათარგმნი კოდი, მაგრამ ჯერ არაა საბოლოო კოდი, რაც გულისხმობს იმას, რომ ის არაა გაერთიანებული მაგალითად პროექტში გამოყენებულ ბიბლიოთეკებთან.
Object file არის ჩვენს მიერ დაწერილი C კოდის მანქანურ ენაზე გადათარგმნილი ვერსია, რომელიც შეიცავს მხოლოდ ამ ფაილის კოდს.
მასში არ არის ჩასმული ბიბლიოთეკების რეალური კოდი, არამედ მხოლოდ მითითებები (references), თუ რომელი ფუნქციები სჭირდება სხვა ფაილებიდან ან ბიბლიოთეკებიდან.
Linking არის საბოლოო ეტაპი, სადაც ყველა ნაწილი ერთ მთლიან პროგრამად ერთიანდება.
ამ ფაზაში ხდება:
ობიექტური ფაილების გაერთიანება
სტანდარტული ბიბლიოთეკების (მაგ: stdio.h) ფუნქციების დაკავშირება
გარე ფუნქციებისა და ცვლადების მისამართების განსაზღვრა
როდესაც იყენებთ printf() ფუნქციას, მისი რეალური კოდი სწორედ Linking-ის ეტაპზე ემატება თქვენს პროგრამას.
შეისწავლეთ ვებდეველოპმენტის ენები სრულიად უფასოდ, ისეთები როგორებიცაა Javascript, HTML, CSS და კიდევ სხვა მრავალი ენა











ქვემოთ მოცემულია უახლესი 3 ბლოგი პროგრამირების თემატიკასთან დაკავშირებით