You are on page 1of 60

საგანი: პროგრამირების საფუძვლები

ლექცია 1: შესავალი

ირმა დავითაშვილი
განსახილველი საკითხები
■ კომპიუტერი
■ პროგრამირების არსი
■ ალგორითმის ცნება
■ პროგრამირების ძირითადი სტრუქტურები
■ პროგრამირების ძირითადი მახასიათებლები
■ პროგრამირების პროცესი
კომპიუტერი
• კომპიუტერი შეიძლება დაიყოს:
– აპარატურული უზრუნველყოფა (Hardware)
• სისტემური ბლოკი (System Unit)
• ინფორმაციის შემტანი მოწყობილობები (Input
devices)
• ინოფრმაციის გამომტანი მოწყობილობები
(Output devices)
– პროგრამული უზრუნველყოფა (Software)
• პროგრამები სისტემებისთვის (System
softwares)
• პროგრამები პროგრამირებისთვის
(Programming softwares)
• სამომხმარებლო პროგრამები (Application 3
კომპიუტერის შემადგენელი ნაწილები –
აპარატურული უზრუნეველყოფა (Hardware)

ინფორმაციის შემყვანი მოწყობილობები


• ინფორმაციის შემტანი მოწყობილობები გადასცემს
ინფორმაციას კომპიუტერს;
• მათი საშუალებით ხდება ინტერაქტიული კავშირი
მომხმარებელსა და კომპიუტერს შორის;

4
კომპიუტერის შემადგენელი ნაწილები –
აპარატურული უზრუნველყოფა (Hardware)

ინფორმაციის გამომყვანი მოწყობილობები


• გამომტან მოწყობილობებს მიეკუთვნება ყველა
ის მოწყობილობა, რომლის საშუალებითაც
შესალებელია კომპიუტერის მიერ
გადამუშავებული მონაცემების (შედეგების)
Disk repair
გარეთ გამოტანა
სისტემური
პროგრამები

ოპერაციული პროგრამა
დრაივერები
სისტემები უტილიტები

ხმის
დრაივერი; ანტივირუსები
Windows; დისკის
ვიდეოკარტის
დეფრაგმენტაციის
Ubuntu; დრაივერი; პროგრამები;
Linux; პრინტერის დისკის
Unix; დრაივერი; შემკეთებელი;
და ა.შ. დისკის
გამწმენდი ...
პროგრამული უზრუნველყოფა

პროგრამირების პროგრამები
• ეს არის პროგრამული უზრუნველყოფა ან
პროგრამული ინსტრუმენტი, რომელსაც იყენებს
პროგრამის დეველოპერი სხვა პროგრამებისა და
აპლიკაციების შესამუშავებლად.
• პროგრამის შემუშავების ინტეგრირებული გარემო
(Integrated Development Environments (IDE))-
აერთიანებს სხვა და სხვა ინსტრუმენტების ფუნქციებს
ერთ პაკეტში.
პროგრამული უზრუნველყოფა

პროგრამირების პროგრამები
• როგორც წესი პროგრამის შემუშავების
ინტეგრირებული გარემო IDE (Integrated
Development Environments) მოიცავს:
– კოდის რედაქტორს
– კომპილატორს
– ამწყობს
– დებაგერს
პროგრამული უზრუნველყოფა

სამომხმარებლო პროგრამები

წარმოადგენს ისეთ კომპიუტერულ პროგრამებს რომელიც


ეხმარება მომხმარებელს გადაჭრას ცალკეული თუ
მრავლობითი ამოცანა.
პროგრამული უზრუნველყოფა

სამომხმარებლო პროგრამები

წარმოადგენს ისეთ კომპიუტერულ პროგრამებს რომელიც


ეხმარება მომხმარებელს გადაჭრას ცალკეული თუ
მრავლობითი ამოცანა.
ძირითადი ოპერაციები
კომპიუტერზე
კომპიუტერი ასრულებს ოთხ ძირითად
ოპერაციას:
• საწყისი მონაცემების მიღება
• მონაცემთა დამუშავება
• გამოსასვლელი ინფორმაციის
წარმოება
• მონაცემების, ინფორმაციისა და
ინსტრუქციების შენახვა
ძირითადი ოპერაციები კომპიუტერზე

მონაცემთა დამუშავება

მონაცემები ინფორმაცია
(შესასვლელ (გამოსასვლელი
ი) )

მონაცემების,
ინფორამაციისა და
ინსტრუქციების
შენახვა
მანქანური ციკლი

• მანქანურ ციკლი - ეს არის


კომპიუტერის პროცესორის
ძირითადი სამუშაო ციკლი.
• ეს არის პროცესი, რომლითაც
კომპიუტერის პროცესორი
მეხსიერებისგან იღებს პროგრამის
ინსტრუქციას, განსაზღვრავს თუ რა
მოქმედებებს მოითხოვს ეს
ინსტრუქცია და ახორციელებს ამ
მოქმედებებს;
• მოცემული პროცესი გრძელდება
კომპიუტერის ჩატვირთვიდან მის
გამორთვამდე
.
მანქანური ციკლი
• მანქანური ციკლი მოიცავს ოთხ ეტაპს:
– შესწავლის ფაზა (Instruction Phase)
• ამოღება- ინსტრუქციის მიღება მთავარი
მეხსიერებიდან
• გაშიფვრა- კომპიუტერის ბრძანებებად
გარდაქმნა;
– შესრულების ფაზა (Execution Phase)
• შესრულება - მიმდინარე ბრძანებების
დამუშავება
• შენახვა - შედეგის მთავარ მეხსიერაბაში
ჩაწერა
მონაცემთა იერარქია

• უმცირესი ერთეული -ბიტი, რომელიც


ღებულობს მხოლოდ 0-ს ან 1-ს
• სიმბოლო, რომელიც წარმოადგენს
1 ბაიტს-8 ბიტს, სიმბოლოებს
მიეკუთვნება, ციფრები, ასოები და
სხვა დანარჩენი
სიმბოლოები.უნიკოდის სიბოლოთა
ნაკრები მოიცავს მსოფლიო ენებს;
• ველი- სიმბოლოთა გაერთიანება
• ჩანაწერი- რამდენიმე ველის
გაერთიანება;
• ფაილი - ჩანაწერების გაეთიანება
• მონაცემთა ბაზა - ცხრილები,
რომლებიც შედგება ჩანაწერებისგან
რა არის პროგრამირება?

■ პროგრამირება - არის იმ ბრძანებათა ნაკრების შექმნის პროცესი,


რომელიც აცნობებს კომპიუეტერს როგორ შეასრულოს ესა თუ ის
დავალება;
■ ალგორითმი -კონკრეტული ამოცანის შესრულების გზა;
■ პროგრამირების ენა - ეს არის ფორმალური ენა კომპიუტერისთვის,
რომელიც შედგება ინსტრუქციების ნაკრებებისგან; იგი გამოიყენება
ალგორითმების იმპლემენტაციისთვის;
პროგრამირების ძირითადი
სტრუქტურები
ნებისმიერი პროგრამა შესაძლებელია შემუშავებული
იქნეს შემდეგი სტრუქტურების საშუალებით:
• მიმდევრობითი (წრფივი) (Sequences of instructions)
• განშტოებითი (ამორჩევის) ; (Branches)
• ციკლური (განმეორების) (Loops)
• მოდულური (Modules)
პროგრამირების ძირითადი სტრუქტურები

მიმდევრობითი სტუქტურა
თითოეული ეტაპი სრულდება
ერთმანეთის მიყოლებით
პროგრამირების ძირითადი სტრუქტურები

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

მაგალითი: მოიყვანეთ განშტოებითი


სტრუტურის ცხოვრებისეული მაგალითები
და დახაზეთ მათი ბლოკ-დიაგრამა
პროგრამირების ძირითადი სტრუქტურები

ციკლები

ამოცანის პირობიდან გამომდინარე ადგილი


აქვს პროგრამული კოდის ერთიდაიმავე
ფრაგმენტის მრავალჯერად განმეორებას.

მაგალითი: მოიყვანეთ განმეორებითი


სტრუტურის ცხოვრებისეული მაგალითები და
დახაზეთ მათი ბლოკ-დიაგრამები
პროგრამირების ძირითადი
მახასიათებლები
მოდულები

ხშირად საჭიროა
მოქმედებათა
ერთობლიობის
რამდენჯერმე შესრულება.
ამიტომ, სიმარტივისთვის
ასეთ მოქმედებათა
ერთობლიობა
გაფორმებულია მოდულში,
ე.წ. მინი პროგრამად,
რომლის გამოძახება
შესაძლებელია პროგრამის
შიგნით საჭიროებისდა
პროგრამირების ძირითადი
მახასიათებლები

ამ სტრუქტურებთან ერთად ასევე საჭიროა:

• მონაცემები ;
• ოპერაციები;
• მონაცემთა შეტანა/ გამოტანის
შესაძლებლობები;
პროგრამირების პროცესი მოიცავს
შემდეგ ეტაპებს
1: პრობლემის განსაზღვრა.
2: პრობლემის გადაჭრის გზის დაგეგმვა.
3: პროგრამის კოდის შემუშავება.
4: პროგრამის გატესტვა.
5: დოკუმენტირება.
პროგრამირების პროცესი
ეტაპი 1: პრობლემის განსაზღვრა

მაგალითი:
• რა უნდა გააკეთოს პროგრამამ?
• რა იქნება პროგრამის გამოსასვლელი?
• რა არის პროგრამის შესასველი?
პროგრამირების პროცესი
ეტაპი 2: პრობლემის გადაჭრის გზის დაგეგმვა
ალგორითმის ჩაწერა შესაძლებელია ორი გზით, ბლოკ-
დიაგრამის ან ფსევდოკოდის საშუალებით;

ბლოკ-დიაგრამა წარმოადგენს ალგორითმის ჩაწერის


გრაფიკულ ფორმას, რომელიც აადვილებს პროგრამის
აღქმას. მოცემულ დიაგრამაში თითოეული ეტაპი
განისაზღვრება სპეციალური ფორმის ბლოკებით,
რომლებიც ერთმანეთთან დაკავშრებულია ისრებით.

ფსევდოკოდი წარმოადგენს ალგორითმის ჩაწერის


სიტყვიერ ფორმას, სადაც ლოგიკა გაფორმებულია
ინგლისური ტექსტების საშუალებით
პროგრამირების პროცესი
ეტაპი 3: პროგრამის კოდის შემუშავება (კოდირება)

• ბლოკ-დიაგრამიდან ან ფსევდოკოდიდან საჭიროა


ლოგიკის თარგმნა პროგრამირების რომელიმე ენაზე
• კოდირება - ნიშნავს პრობლემის გადასაჭრელად
შემუშავებული ალორითმის გამოსახვას
პროგრამირების ენაზე
პროგრამირების პროცესი
ეტაპი 4: პროგრამის გატესტვა
• თითქმის ყველა პროგრამა შესაძლებელია
შეიცავდეს სხვადასხვა ტიპის შეცდომებს
(errors, bugs).
• პროგრამის ტესტირება აუცილებელია
რათა დავაგინოთ იძლევა თუ არა
პროგრამა საჭირო შედეგს.
• ტესტირება აუცილებელია შეცდომების
გამოვლენისა და აღმოფხვრისთვის
პროგრამირების პროცესი
ეტაპი 4: პროგრამის გატესტვა

შეცდომის ტიპები:

პროგრამირების ენის სინტაქსის დარღვევა


წარმოშობს სინტაქსურ შეცდომებს.

შედეგი? ინტერპრეტატორი ან კომპილატორი


აღმოაჩენს მათ სინტაქსის შემოწმების ფაზაში.
პროგრამირების პროცესი
ეტაპი 4: პროგრამის გატესტვა

შეცდომის ტიპები:

ლოგიკური შეცდომები პროგრამულ კოდში


წარმოქმნის სემანტიკურ (ლოგიკურ) შეცდომებს.

შედეგი? ინტერპრეტატორი ან კომპილატორი ვერ


აღმოაჩენს მათ სინტაქსის შემოწმების ფაზაში,
თუმცა პროგრამის შესრულების დროს შედეგი
არასწორია
პროგრამირების პროცესი
ეტაპი 4: პროგრამის გატესტვა

შეცდომის ტიპები:

პროგრამის შესრულების დროს წარმოქმნილი


შეცდომები (Run-time Errors). ძირითადად
წარმოიშობა მონაცემების არასწორი შეყვანისას ან
არარსებული რესურსების გამოყენების
მცდელობისას;

შედეგი? ის ხდება პროგრამის გაშვებისას და


შესაძლოა შეწყვიტოს პროგრამის მუშაობა
პროგრამირების პროცესი
ეტაპი 5: დოკუმენტირება

დოკუმენტაცია არის წერილობით დეტალური


აღწერა პროგრამირების ციკლისა და პროგრამის
შესახებ.

ტიპიური პროგრამის დოკუმენტაციის მასალებში


შედის პრობლემის წარმოშობა და ბუნება,
პროგრამის მოკლე თხრობის აღწერა, ლოგიკური
საშუალებები, როგორიცაა ნაკრები და ფსევდოდო
კოდი, მონაცემთა ჩანაწერების აღწერილობა,
პროგრამის ჩამონათვალი და ტესტირების
შედეგები.

უმნიშვნელოვანესია კოდის კომენტირება, რაც


აიოლებს პროგრამის წაკითხვას
კომპიუტერული პროგრამა
■ პროგრამა არის ინსტრუქციების ნაკრები არჩეული ენის
წესების შესაბამისად.
■ პროგრამების გარეშე კომპიუტერი აზრს კარგავს;
■ პროგრამა რეცეპტის მსგავსია.

■ იგი შეიცავს „ ინგრედიენტების“ ჩამონათვალს (ე.წ.


ცვლადებს) და იმ მიმართულებების ჩამონათვალს (ე.წ.
განაცხადებს), რომლებიც კომპიუტერს მიუთითებენ
როგორ იმოქმედონ ცვლადებთან.
პროგრამირების ენა

■ პროგრამირების ენა -ესაა გარკვეული სინტაქსის


მქონე ბრძანებათა ნაკრები, რომელიც საშუალებას
იძლევა ალგორითმის იმპლემანტაციისა;
■ პროგრამირების ენების საშუალებით
შესაძლებელია კომპიუტერული პროგრამების
შექმნა;
■ პროგრამირების ენების ქვეშ მოიაზრება ისეთი
მაღალი დონის ენები, როგორიცაა:C++,Java, C#,
Phyton, Basic, …
პროგრამირების ენა
■ პროგრამა საბოლოოდ უნდა ითარგმნოს მანქანურ ენაზე,
რომელიც გასაგები გახდება კომპიუტერისთვის. ამისთვის
არსებობს ორი გზა:
■ კომპილაცია - რაც ნიშნავს მაღალი დონის ენის პროგრამის
გარდაქმნას ობიექტის კოდად. ამას ასრულებს
კომპილატორი. იგი კითხულობს მთელ კოდს და გადაყავს
მანქანურ ენაზე და ქმნის ერთ გამოსასვლელ ფაილს.
■ ინტერპრეტაცია - რაც ნიშნავს იგივეს, მხოლოდ ამ
შემთხვევაში ინტერპრეტატორი კითხულობს არა მთელ
კოდს, არამედ სტრიქონ-სტრიქონ, გადაყავს მანქანურ ენაზე
და ასრულებს მას;
პროგრამირების ენების თაობები
პროგრამირების ენები იყოფა 5 თაობად:
1 . პირველი თაობის (1GL) ენები წარმოადგენენ დაბალი დონის ენებს -მანქანური
ენებს;
2 . მეორე თაობის ენები (2GL)-ასევე დაბალი დონის ენები, რომელიც მოიცავს
ძირითადად ასემბლერს;
3 . მესამე თაობის ენები (3GL) -მაღალი დონის ენები- როგორიცაა მაგალითად C,
C++, Java, FORTRAN, Pascal, Cobol;
4 . მეოთხე თაობის ენები (4GL)- რომელიც ადამიანის ენის მსგავსი ფრაზებისგან
შედგება და ძირითადად გამოიყენება მონაცემთა ბაზებისთვის და
სკრიპტებისთვის; მათი დიდი ნაწილი წარმოადგენს 3GL -ის ბიბლიოთეკებით
გაფართოებას.
5 . მეხუთე თაობის ენები (5GL) -მეხუთე თაობის ენებს მიეკუთვნება ენები,
რომლებიც გამოიყენება ხელოვნური ინტექლეტისთვის. ასეთებია მაგ, OPS5 ,
Mercury
პროგრამირების ენების ტიპები:
■ მანქანური ენა (დაბალი დონის ენა)
■ ასემბლერი (დაბალი დონის ენა)
■ მაღალი დონის ენა;
დაბალი დონის ენები უფრო ახლოსაა ისეთ ენებთან,
რომელსაც იყენებს კომპიუტერი, ხოლო მაღალი დონის
ენები, კი ადამიანის ენასთან;
მანქანური ენა
■ მანქანური ენა შედგება ორობითი ციფრების ან ბიტებისაგან, რომელსაც
კომპიუტერი კითხულობს და განმარტავს. ეს არის ენა, რომელიც
გასაგებია მხოლოდ მანქანისთვის, ხოლო ადამიანისთვის გაუგებარია,
რადგან შეიცავს მხოლოდ ციფრებს;
მაგალითი:
ვთქვათ ელექტრულ კბილის ჯაგრისს აქვს პროცესორი და მეხსიერება;
პროცესორს შეუძლია ატრიალოს ჯაგრისი მარცხნივ და მარჯვნივ და
ამოწმოს ჩამრთველი. მანქანური ინსტრუქციები ერთი ბაიტის სიგრძისაა და
შეესაბამაბა შემდეგ მანქანურ ოპერაციებს:
მანქანის ინსტრუქცია მანქანის ოპერაცია
0000 0000 Stop
0000 0001 Rotate bristles left
0000 0010 Rotate bristles right
0000 0100 Go back to start of program
0000 1000 Skip next instruction if switch is off
ასემბლის (ასემბლერის) ენა
■ ასემბლის ენაზე დაწერილი პროგრამა მოიცავს მნემორიკული
ინსტრუქციების ნაკრებს, რომლებიც შეესაბამებიან ასემბლერის მიერ
ნათარგმნ ინსტრუქციების ნაკრებს, რომებიც იტვირთება მეხსიერებაში და
სრულდება;
■ ასემბლის ენა იყენებს საკვანძო სიტყვებს და სიმბოლოებს, რომლებიც
გავს ინგლისურს სიტყვებს, თუმცა ქმნის ახალ პრობლემას; რადგან
მანქანას არ ესმის ეს ენა და საჭიროა მისი თარგმნა, რომელსაც აკეთებს
ასამბლერი;
მაგალითი:
მანქანური ენა: 10110000 01100001
ასემბლის ენა: mov a1, #061h , რაც ნიშნავს
■ Move the hexadecimal value 61 (97 decimal) into the processor register named "a1".
მაღალი დონის ენა
■ მაღალი დონის ენა შესაძლებობას იძლევა პროგრამა დაიწეროს
ადამიანისთვის გასაგები სიტყვებით მაგალითად ისეთებით როგორიცაა
if, while, for, break, continue …, რომელიც შემდეგ იქნება გადათარგმნილი
მანქანურ ენაზე;
■ ასეთი თარგმანისთვის ზოგიერთი მაღალი დონის ენა იყენებს
ინტერპრეტატორს, ზოგი კი კომპილატორს;
მაღალი დონის ენებს მიეკუთვნებიან: Basic, C, C++, Pascal, Phyton, Cobol….
შედარება
მანქანური ენა ასემბლერი მაღალი დონის ენა
შესრულების ვინაიდან ეს არის კომპიუტერის ასემბლერზე დაწერილი საჭიროებს კომპილერს
დრო ძირითადი ენა, იგი არ პროგრამა საჭიროებს ან ინტერპრეტატორს,
მოითხოვს თარგმანს მანქანურ ენაზე მანქანურ ენაზე
შესაბამისად, უზრუნველყოფს გადაყვანას, რაც გადასაყვანად, რაც
ეფექტურობას, რაც ნიშნავს, მოითხოვს შედარებით პროგრამის
რომ პროგრამები უფრო მეტ დროს ვიდრე შესრულებისთვის
სწრაფად მუშაობს მანქამური ენაზე მოითხოვს უფრო მეტ
დაწერილი პროგრამა დროს
კოდის შექმნის საჭიროებს ბევრი დეტალის უფრო იოლი გამოსაყენებლად
დრო ცოდნას და საკმაოდ მოსახმარია, ვიდრე უმარტივესია,
ჩახლართული და გრძელია, მანქანური ენა, თუმცა პროგრამის შემუშავება
რაც მოითხოვს საკმაოდ დიდ მოითხოვს მოითხოვს ბევრდან
დროს ინსტრუქციების ნაკლებ დროს, ხოლო
დამახსოვრებას; ეფექტურობა ყველაზე
პროგრამის მაღალია
შემუშავებისთვის
საჭიროებს ნაკლებ
დროს ვიდრე მანქანური
ენა
მაღალი დონის ენების მოკლე ისტორია
■ FORTRAN (FORmula TRANslator, 1956)- ძალიან ეფექტური
მათემატიკური გამოთვლებისთვის
■ COBOL (Common Business Oriented Language) - ძირითადად
გამოიყენება ადმინისტრირებისა და სააღრიცხვო
პროგრამებისთვის;
■ BASIC (Beginners All-purpose Symbolic Instruction Code, 1965) -
ძალიან მარტივია, მაგრამ არ არის კარგად
სტრუქტურირებული
■ PASCAL (Niklaus Wirth, 1970, named after Blaise Pascal). კარგად
სტრუქტურირებული ენა, ძირითადად გამოიყენება
საგანმანათლებლო მიზნებისთვის
C++ მოკლე ისტორია
■ C (Dennis M. Ritchie and Brian W. Kerninghan, 1972) - კარგად
სტრუქტურირებული და ძალიან ეფექტური პროგრამირების
ენა, რომელიც ხელმისაწვდომია მანქანების
უმეტესობისთვის. იგი ფართოდ გამოიყენება ისეთი
სისტემების შესამუშავებლად, რომლებიც მოითხოვენ
შესრულების მაღალ ხარისხს, როგორებიცაა ოპერაციული
სისტემები, ჩაშენებული სისტემები, რეალურ დროში
სისტემები და საკომუნიკაციო სისტემები, ასევე
პროგრამული აპლიკაციების შესაქმნელად;
■ C++ (B. Stroustrup, 1986): C + object-oriented programming (OOP =
Object Oriented Programming)
მაღალი დონის ენების პროგრამირების პროცესი (10-19
სლაიდების გაფართოება)

■ ეტაპი 1: პროგრამის შექმნა, რაც გულისხმობს რომელიმე ტექსტ-ედიტორის


გამოყენებით კოდის შეტანა ascii ფაილში, რომელსაც ასევე საწყის კოდს (source
code) უწოდებენ; მოცემულ კურსში გამოყენებული იქნება პლატფორმა Visual Studio
2017 , რომელსაც გააჩნია ჩაშენებული ედიტორი -კოდის შეტანის მარტივი
საშუალება, ან Dev C++. ყველა ამ ფაილის გაფართოვებაა program1.cs, ან
program1.cpp

■ ეტაპი 2: კომპილაცია. საწყისი კოდის მანქანურ კოდში გადაყვანა, რომლის


შედაგად მიიღება ე.წ ობიექტის კოდი (მაგ. program1.obj ან program1.o ფაილები).
სისტემაში პროგრამის ტრანსლაციის ეტაპს წინ უსწრებს პროგრამა, რომელიც
ახდენს მომხმარებლის მიერ შექმნილი პროგრამის წინასწარ დამუშავებას. იგი
ექვემდებარება სპეციალურ ბრძანებებს, რომელთაც პრეპროცესორის
დირექტივები ეწოდებათ. დირექტივები, როგორც წესი, მიუთითებენ ამა თუ იმ
ცვლილებათა განხორციელების შესახებ პროგრამის კომპილირებამდე.
კომპილიაციის დროს, თუ კომპილატორი ვერ ამოიცნობს რაიმეს გააკეთებს
შეტყობინებას სინტაქსური შეცდომის შესახებ, რომელიც შესაძლებელია
გასწორდეს საწყის კოდში)
მაღალი დონის ენების პროგრამირების პროცესი (10-19
სლაიდების გაფართოება)

■ ეტაპი 1: პროგრამის შექმნა, რაც გულისხმობს რომელიმე ტექსტ-


ედიტორის გამოყენებით კოდის შეტანა ascii ფაილში, რომელსაც ასევე
საწყის კოდს (source code) უწოდებენ; მოცემულ კურსში გამოყენებული
იქნება პლატფორმა Visual Studio 2017 , რომელსაც გააჩნია ჩაშენებული
ედიტორი -კოდის შეტანის მარტივი საშუალება, ან Dev C++. ყველა ამ
ფაილის გაფართოვებაა program1.cs, ან program1.cpp
მაღალი დონის ენების პროგრამირების პროცესი (10-19
სლაიდების გაფართოება)

■ ეტაპი 2: პრეპროცესორული დამუშავება, რაც გულისხმობს რომელიმე


ტექსტ-ედიტორის გამოყენებით კოდის შეტანა ascii ფაილში,
მაღალი დონის ენების პროგრამირების პროცესი (10-19
სლაიდების გაფართოება)

■ ეტაპი 3: კომპილაცია. საწყისი კოდის მანქანურ კოდში გადაყვანა,


რომლის შედაგად მიიღება ე.წ ობიექტის კოდი (მაგ. program1.obj ან
program1.o ფაილები). სისტემაში პროგრამის ტრანსლაციის ეტაპს წინ
უსწრებს პროგრამა, რომელიც ახდენს მომხმარებლის მიერ შექმნილი
პროგრამის წინასწარ დამუშავებას. იგი ექვემდებარება სპეციალურ
ბრძანებებს, რომელთაც პრეპროცესორის დირექტივები ეწოდებათ.
დირექტივები, როგორც წესი, მიუთითებენ ამა თუ იმ ცვლილებათა
განხორციელების შესახებ პროგრამის კომპილირებამდე. კომპილიაციის
დროს, თუ კომპილატორი ვერ ამოიცნობს რაიმეს გააკეთებს
შეტყობინებას სინტაქსური შეცდომის შესახებ, რომელიც შესაძლებელია
გასწორდეს საწყის კოდში)
მაღალი დონის ენების პროგრამირების პროცესი (10-19 სლაიდების
გაფართოება)
■ ეტაპი 4 : დაკავშირება (linking). C++ზე შექმნილ პროგრამებს ხშირ
შემთხვევაში გააჩნიათ გარკვეული "მიმართვები" იმ ფუნქციებზე,
რომლებიც ზოგჯერ განსაზღვრულია პროგრამის გარეთ, მაგ:
სტანდარტულ ბიბლიოთეკებში. კომპილატორის მიერ შექმნილი ობიექტის
კოდის დაკავშირება ამ ფუნქციათა კოდებთან ხორციელდება
კომპილირების შემდეგ ეტაპზე სპეციალური დამაკავშირებლის
მეშვეობით. ასეთი გზით კი საბოლოოდ ყალიბდება ჩამტვირთავი
შესრულებადი მოდული. ამ ეტაპის შემდგომ უკვე გამშვები ფაილი
(program1.exe)
■ ამ ეტაპზე წარმოქმნილ შეცდომებს ეწოდება ბმის შეცდომები
(მაგალითად, არარსებული ფუნქციების გამოძახება). ამ შემთხვევაშიც ,
საჭიროა კოდის კორექტირება და 1 ეტაპიდან დაწყებული ყველა ნაბიჯის
ხელახლა შესრულება.
მაღალი დონის ენების პროგრამირების პროცესი (10-19 სლაიდების
გაფართოება)
■ ეტაპი 3 : დაკავშირება (linking). C++ზე შექმნილ პროგრამებს ხშირ
შემთხვევაში გააჩნიათ გარკვეული "მიმართვები" იმ ფუნქციებზე,
რომლებიც ზოგჯერ განსაზღვრულია პროგრამის გარეთ, მაგ:
სტანდარტულ ბიბლიოთეკებში. კომპილატორის მიერ შექმნილი ობიექტის
კოდის დაკავშირება ამ ფუნქციათა კოდებთან ხორციელდება
კომპილირების შემდეგ ეტაპზე სპეციალური დამაკავშირებლის
მეშვეობით. ასეთი გზით კი საბოლოოდ ყალიბდება ჩამტვირთავი
შესრულებადი მოდული. ამ ეტაპის შემდგომ უკვე გამშვები ფაილი
(program1.exe)
■ ამ ეტაპზე წარმოქმნილ შეცდომებს ეწოდება ბმის შეცდომები
(მაგალითად, არარსებული ფუნქციების გამოძახება). ამ შემთხვევაშიც ,
საჭიროა კოდის კორექტირება და 1 ეტაპიდან დაწყებული ყველა ნაბიჯის
ხელახლა შესრულება.
მაღალი დონის ენების პროგრამირების პროცესი (10-19 სლაიდების
გაფართოება)
■ ეტაპი 5. ჩატვირთვა. შესრულებამდე, პროგრამა უნდა განთავსდეს
მეხსიერებაში, რასაც ასრულებს სპეციალური ჩამტვირთავი

■ ეტაპი 6. შესრულება. საბოლოოდ კომპიუტერი ასრულებს პროგრამში


დასმულ ამოცანას. ამ დროს წარმოქმნილ შეცდომებს Run-Time
შეცდომებს ან იგივე ლოგიკურ შეცდომებს უწოდებენ.
მაღალი დონის ენების პროგრამირების პროცესი (10-19 სლაიდების
გაფართოება)
ალგორითმები
■ ბლოკ-დიაგრამის შემადგენელი ელემენტები:
მიმდევრობითი სტრუქტურა
მაგალითი:
ვიპოვოთ ორი x და y რიცხვის საშუალო არითმეტიკული
Input: two numbers x and y
Output: the average of x and y
Steps:
1.Input x
2.Input y
3.sum=x+y
4.average=sum/2
5.Output average
ამორჩევითი სტრუქტურა
მაგალითი: ვიპოვოთ ორ A,B რიცხვს შორის
მაქსიმუმი
Input: three numbers A,B,
Output: A,or, B,(maximum of them)
Steps:
1.Input A
2.Input B
3. If A > B Output A
4 if A< B Output B
მაგალითი: ვიპოვოთ სამ A,B,C რიცხვს შორის
მაქსიმუმი
Input: three numbers A,B,C
Output: A,or, B, or C (maximum of them)
Steps:
1.Input A
2.Input B
3. Input C
3. If A > B and A>C Output A
4 if B>A and B>C Output B
5. If C>A and C>B Output C
განმეორებითი სტრუქტურა

You might also like