<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>BUSE - Best Ucoz Search Engine</title>
		<link>http://none.ucoz.lv/</link>
		<description>Forum</description>
		<lastBuildDate>Sat, 15 Dec 2012 11:52:07 GMT</lastBuildDate>
		<generator>uCoz Web-Service</generator>
		<atom:link href="http://none.ucoz.lv/forum/rss" rel="self" type="application/rss+xml" />
		
		<item>
			<title>ჩვენს მიერ დაწერილი პროგრამები ჯავაში</title>
			<link>http://none.ucoz.lv/forum/19-68-1</link>
			<pubDate>Sat, 15 Dec 2012 11:52:07 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/19&quot;&gt;JAVA&lt;/a&gt;&lt;br /&gt;Thread description: PROJECT X&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>გამარჯობათ &lt;br /&gt; აქ დავდოთ ჩვენს მიერ დაწერილი, პატარა თუ დიდი პროგრამა ჯავაში. &lt;br /&gt;&lt;br /&gt; ვიწყებ : &lt;br /&gt;&lt;br /&gt; ჩაწერეთ ორი კათეტი და გამოთვლის ჰიპოთენუზას &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt;&lt;br /&gt; package project.x; &lt;br /&gt;&lt;br /&gt; /** &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;* @author DL1MP1K &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/ &lt;br /&gt; public class ProjectX { &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String&amp;#91;] args&amp;#41; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;double a=0; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;double b=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;double c=Math.sqrt(Math.pow(a, 2&amp;#41; + Math.pow(b, 2&amp;#41;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;answer: &quot; +c&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; a-ს და b-ს მიანიჭეთ მნიშვნელობა. ა და ბ არის კათეტები</content:encoded>
			<category>JAVA</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/19-68-1</guid>
		</item>
		<item>
			<title>ჯავა დამწყებებს გაკვეთილი 1 - გამარჯობა მსოფლიო</title>
			<link>http://none.ucoz.lv/forum/19-67-1</link>
			<pubDate>Sat, 08 Dec 2012 16:28:54 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/19&quot;&gt;JAVA&lt;/a&gt;&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>სანამ დავიწყებდეთ სწავლას, გავეცნოთ ზოგადად ამ ენას. ვიკიიიი : &lt;br /&gt;&lt;br /&gt; ჯავა (ინგლ. Java წარმოითქმის, /dʒɑːvə/) არის ზოგადი დანიშნულების, კონკურენტული, ობიექტურად ორიენტირებული პროგრამირების ენა. Java არის მკაცრად (სტატიკურად) ტიპიზირებული ენა. სინტაქსური აგებულებით ის წააგავს უფრო ადრეულ ენებს C და C++. მისი ობიექტური მოდელი აგრეთვე მნიშვნეოვნად ნასესხებია C++ და Smalltalk ენებიდან. Java პროგრამები კომპილირდება ბაიტ-კოდებში და ეშვება Java ვირტულურ მანქანაში (JVM), რაც უზრუნველყოფს კომპილირებული პროგრამის დამოუკიდებლობას გამშვები სისტემასთან მიმართებაში. &lt;br /&gt; ოფიციალურად Java 1995 წლის 23 მაისს გამოვიდა. Java-ს პირველადი შემუშავება ეკუთვნის Sun Microsystems, რომელიც დღემდე რჩება Java ვირტუალური მანქანის და ენის სპეციფიკაციის ძირითად განმსაზღვრელად. &lt;br /&gt; Java მხარდაჭერილია ძირითად კომპიუტერულ და მობილურ ოპერაციულ სისტემებში, უამრავ საყოფაცხოვრებო და ციფრული მოწყობილობაში, აგრეთვე საბანკო პლასტიკურ და სხვა სახის სერვის ბარათებში. &lt;br /&gt; დღეს Java ყველაზე გავრცელებული ენაა, მოწყობილობათა რაოდენობის მიხედვით, რომლებიც ასრულებენ Java პროგრამებს და, აგრეთვე, ყველაზე პოპულარული ენაა იმ პროგრამისტების რაოდენობის მიხედვით, რომლებიც წერენ თავის პროგრამებს Java-ზე. &lt;br /&gt;&lt;br /&gt; (ინფორმაცია აღებულია &lt;a class=&quot;link&quot; href=&quot;http://u.to/yAwJ&quot; title=&quot;http://wikipedia.org&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;Wikipedia&lt;/a&gt;) &lt;br /&gt;&lt;br /&gt; ზოგადად ჯავას დასაწერად შეგვიძლია გამოვიყენოთ ნოუთპადი და შევინახოთ გაფართოებით .ჯავა მაგრამ არსებობს სპეციალური პროგრამები წერის გასამარტივებლად. ყველაზე პოპულარულებია ეკლიპსი და ნეტბინსი. მე პირადად ნეტბინს ვხმარობ... საიტი : &lt;br /&gt;&lt;br /&gt; &lt;a class=&quot;link&quot; href=&quot;netbeans.org&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;download&lt;/a&gt; &lt;br /&gt;&lt;br /&gt; ეხლა კი შევუდგეთ საქმეს. ჯავას საწერად აუცილებელია თავიდან მთვარი კლასის მითითება. ამ შემთხვევაში ჩვენი კლასის სახელია &quot;გამარჯობა მსოფლიო&quot;. მაგრამ ამის დაწერა ნეტბინსი არ დაგჭირდებათ, კლასის შექმნის შემდეგ ის ავტომატურად აკეთებს ამ ყველაფერს. ჩვენი პროგრამის წერას კი ვიწყებთ ამის მერე : &quot;public static void main(String[] args) {&quot; დამხურავ ფრჩხილამდე &quot;}&quot; &lt;br /&gt;&lt;br /&gt; ნებისმიერი ტექსტის გამოსატანად ჩვენ ვიყენებთ კოდს &quot;System.out.println&quot; შემდეგ ფრჩხილებში და ბრჭყალებში ტექსტს. ბრჭყალებში რაც არ უნდა დავწეროთ, ჯავა აღიქვამს ამას როგორც გამოსატან ტექსტად. &lt;br /&gt;&lt;br /&gt; საბოლოო კოდი გამოვა ასეთი: &lt;br /&gt;&lt;br /&gt; &lt;!--uzcode--&gt;&lt;div class=&quot;bbCodeBlock&quot;&gt;&lt;div class=&quot;bbCodeName&quot; style=&quot;padding-left:5px;font-weight:bold;font-size:7pt&quot;&gt;Code&lt;/div&gt;&lt;div class=&quot;codeMessage&quot; style=&quot;border:1px inset;max-height:200px;overflow:auto;height:expression(this.scrollHeight&lt;5?this.style.height:scrollHeight&gt;200?&apos;200px&apos;:&apos;&apos;+(this.scrollHeight+5)+&apos;px&apos;);&quot;&gt;&lt;!--uzc--&gt; &lt;br /&gt;&lt;br /&gt; public class გამარჯობა მსოფლიო { &lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;public static void main(String&amp;#91;] args&amp;#41; { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;System.out.println(&quot;გამარჯობა, მსოფლიო&quot;&amp;#41;; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; &lt;!--/uzc--&gt;&lt;/div&gt;&lt;/div&gt;&lt;!--/uzcode--&gt; &lt;br /&gt;&lt;br /&gt; ამ გაკვეთილში ჩვენ ვისწავლეთ : &lt;b&gt;რა არის ჯავა, რა პროგრამა გამოვიყენოთ მის საწერად, პირველი ნაბიჯი: ტექსტის გმაოტანა&lt;/b&gt; &lt;br /&gt;&lt;br /&gt; მადლობა ყურადღებისთვის &lt;img src=&quot;http://s34.ucoz.net/sm/2/smile.gif&quot; border=&quot;0&quot; align=&quot;absmiddle&quot; alt=&quot;smile&quot; /&gt;</content:encoded>
			<category>JAVA</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/19-67-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 10 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-38-1</link>
			<pubDate>Thu, 09 Feb 2012 15:48:52 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: კლასები - კლასების თვისებები, მეთოდები და კონსტრუქტორი&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>როგორც წინა თავში ავღნიშნეთ, კლასები წარმოადგენენ ობიექტორიენტირებული პროგრამირების ძირითად საფუძველს. კლასის განსაზღვრისათვის შეიძლება შემოვიტანოთ ოთხი საფეხური: &lt;br /&gt; 1) თვისებები (ინსტანცის ცვლადები); &lt;br /&gt; 2) მეთოდები; &lt;br /&gt; 3) კონსტრუქტორი; &lt;br /&gt; 4) არტიბუტები. &lt;br /&gt;&lt;br /&gt; მთლიანი კლასის საერთო სინტაქსი შეიძლება წარმოვადგინოთ ასეთი სახით. &lt;br /&gt;&lt;br /&gt; class vektor // კლასის სახელი &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; //ატრიბუტი &lt;br /&gt;&lt;br /&gt; public: &lt;br /&gt;&lt;br /&gt; //თვისებები &lt;br /&gt;&lt;br /&gt; double x; &lt;br /&gt; double y; &lt;br /&gt;&lt;br /&gt; //კონსტრუქტორი &lt;br /&gt;&lt;br /&gt; vektor () &lt;br /&gt; { &lt;br /&gt; x = 0; &lt;br /&gt; y= 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; // მეთოდები &lt;br /&gt;&lt;br /&gt; void sekreba (vektor v2) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt; x += v2 . x; &lt;br /&gt; y += v2 . y; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void gadmocema () &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt; cout &lt;&lt; &quot; ( &quot; &lt;&lt; x &lt;br /&gt; &lt;&lt; &quot; , &quot; &lt;&lt; y &lt;&lt; &quot; ) &quot;; &lt;br /&gt; } &lt;br /&gt; }; &lt;br /&gt; // დაიხსომეთ, რომ ყველა კლასის ბოლოში ისმება წერტილ მძიმე }; &lt;br /&gt;&lt;br /&gt; საერთოდ კლასების განსაზღვრისას პროგრამისტმა უკვე უნდა იცოდეს, თუ რა დანიშნულებისა იქნება ესა თუ ის კლასი, რომელსაც იგი შექმნის და თუ ვისთვის იქნება იგი განკუთვნილი, საკუთრივ თვითონ პროგრამისტისათვის ვინც ამ კლას ქმნის თუ, სხვა პროგრამისტისათვის ვინც ამ კლასს გამოიყენებს. ასე რომ შეიძლება კლასების შექმნის ორ ფაზასთან გვქონდეს საქმე: ჩვენც დავიწყოთ თავიდან და შემოვიტანოთ მაგალითი, რომელიც შეეხება ვექტოთა მარტივ შეკრებას და მათ გადმოცემას, ეს მაგალითი წარმოვადგინოთ ორივე ფაზით. &lt;br /&gt; ფაზა პირველი (კლასის შექმნა საკუთრივ პროგრამისტისათვის) &lt;br /&gt;&lt;br /&gt; 1) გავხსნათ ახალი პროექტი &lt;br /&gt;&lt;br /&gt; // klasi1.cpp - კლასი ვექტორებისათვის &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; using namespace std; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt; საერთოდ რაც ჩვენს მაგალითში შავად იქნება დაწერილი, ეს უკვე იცით თქვენ და ყოველი ახალი ნაბიჯი იქნება ლურჯი ფერით. აქვე თავშივე ვთქვათ აგრეთვე ერთიც, რომ სიტყვა class არის კლასის განმსაზღვრელი სიტყვა და რაც მას მოსდევს ეს უკვე კლასის სახელია. როგორც კლასი ასევე ნებისმიერი ცვლადები სახელების დაწერისას C++ პროგრამირებაში ერთი კანონზომიერებით სარგებლობენ, რაზედაც ჩვენ უკვე ნათქვამი გვაქვს და ეს კანონზომიერება აქაც უნდა გაითვალისწინოთ. &lt;br /&gt;&lt;br /&gt; class klasissaxeli &lt;br /&gt; { &lt;br /&gt; // elementebi &lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt; 2) მოვახდინოთ კლასის განსაზღვრა; &lt;br /&gt;&lt;br /&gt; // klasi1.cpp - კლასი ვექტორებისათვის &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; using namespace std; &lt;br /&gt; class vektor &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; თვისებები &lt;br /&gt;&lt;br /&gt; თვისებები ანუ კლასების ფაილები კლასებში განისაზღვრებიან, როგორც ჩვეულებრივი ცვლადები. &lt;br /&gt; რას ნიშნავს ეს? --- ცვლადები, რომლებიც განსაზღვრულები არიან, როგორც კლასების ელემენტები უწოდებენ ინსტანცებს &lt;br /&gt;&lt;br /&gt; 3) განვსაზღვროთ ინსტანცის ცვლადები კლას ვექტორისათვის: &lt;br /&gt;&lt;br /&gt; // klasi1.cpp - კლასი ვექტორებისათვის &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; using namespace std; &lt;br /&gt; class vektor &lt;br /&gt; { &lt;br /&gt; double x; // x - კოორდინატი &lt;br /&gt; double y; // y - კოორდინატი &lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; წინა თავშიც ვთქვით და ახლაც ვიმეორებთ, რომ ობიექტის გეგმაზომიერი გამოყენების თვალსაზრისით ვიღებთ მისგან მხოლოდ იმ თვისებებს, რომლებიც პროგრამირებისათვის გვჭირდება. ჩვენს მაგალითშიც შევარჩიეთ ორი თვისება, x და y კოორდინატები, თუმცა შესაძლებელი იყო აგვეღო ვექტორის სხვა თვისებებიც, მაგ მისი სიგრძე და კუთხე (იანგარიშება ჰორიზონტალური), მაგრამ ამ ჩვენს მაგალთში გვჭირდება მხოლოდ ორი x და y თვისება. ისეთი თვისებები, როგორებიცაა მაგალითად ვექტორის ფერი, ან ვთქვათ სისქე, მათი გამოყენება ამ შემთხვევაში გასაგებია, რომ უაზრობა იქნებოდა. &lt;br /&gt; ახლა, როდესაც ვექტორის, ანუ ჩვენი ობიექტის თვისებები შევარჩიეთ და განვსაზღვრეთ ისმება კითხვა, როგორ შეიძლება ამ თვისებებით მუშაობა? &lt;br /&gt;&lt;br /&gt; ამისათვის კი კლასებში შემოდის მეთოდი &lt;br /&gt;&lt;br /&gt; მეთოდები &lt;br /&gt;&lt;br /&gt; მეთოდები კლასებში განსაზღვრავენ იმ ოპერაციებს, რომელთა გამოყენებითაც შესაძლებელია კლასების ობიექტებზე ზემოქმედების მოხდენა &lt;br /&gt;&lt;br /&gt; თუ თქვენ ჯერ კიდევ არ იცით თუ რა მეთოდი უნდა შემოიტანოთ თქვენს კლასში, მაშინ შეგიძლიათ თქვენს თავს რამოდენიმე კითხვა დაუსვათ: &lt;br /&gt;&lt;br /&gt; ა) რის გაკეთება შეიძლება ამ ჩემი კლსაის ობიექტით რეალურად? &lt;br /&gt;&lt;br /&gt; ბ) რა უნდა გააკეთონ იმ პროგრამისტებმა ამ ჩემი კლასით, თუ კი ისინი საერთოდ ამ ჩემს კლასს გამოიყენებენ? &lt;br /&gt;&lt;br /&gt; გ) და საერთოდ რაში შემიძლია მე თვითონ, ეს ჩემი კლასი გამოვიყენო? &lt;br /&gt;&lt;br /&gt; შეიძლება უფრო მეტი კითხვაც გაგვჩენოდა თავში, რადგან კლასები ძალზედ ფართო თემაა, ამჯერად ეს სამი კითხვაც გვეყოფა. ზემოთ ამავე თავში ჩვენ განვიხილეთ ვექტორთა მაგალითი და ახლაც განვაგრძოთ იგი. ე.ი. საჭიროა დავწეროთ მეთოდი, რომელიც შეკრებს ვექტორებს და აგრეთვე მეორე მეთოდი, რომელი უკვე მათ შედეგს გადმოგვცემს და გვაჩვენებს. &lt;br /&gt;&lt;br /&gt; 4) პირველ რიოგში მეთოდი უნდა განვსაზღვროთ: &lt;br /&gt;&lt;br /&gt; // klasi1.cpp - კლასი ვექტორებისათვის &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; using namespace std; &lt;br /&gt; class vektor &lt;br /&gt; { &lt;br /&gt; double x; // x - კოორდინატი &lt;br /&gt; double y; // y - კოორდინატი &lt;br /&gt;&lt;br /&gt; // მეთოდები &lt;br /&gt;&lt;br /&gt; void sekreba(vektor v2) &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; x += v2 . x; &lt;br /&gt; y += v2 . y; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void gadmocema() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; &quot; ( &quot; &lt;&lt; x &lt;&lt; &quot; , &quot; &lt;&lt; y &lt;&lt; &quot; ) &quot;; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; კი ბატონო დავწერეთ ორი მეთოდი, მაგრამ ბევრისათვის შეიძლება ეს გაუგებარი იყოს, კერძოდ კი ავიღოთ ვთქვათ მეთოდი მიმატება, რატომ ხდება ისე, რომ ვიღებთ მხოლოდ ერთ ვექტორს და მეორეს კი ვიყენებთ არგუმენტად, ჩვენ ხომ ორ ვექტორს ვკრებავთ? აი ამ კითხვას რომ ვუპასუხოთ უნდა გავიხსენოთ თუ რა არის ინსტანცი (ერთი ტიპის კლასის ცვლადებს უწოდებენ ინსტანცებს). როდესაც პროგრამისტი რომელიმე ინსტანცს მეთოდით იძახებს, იგი ელოდება რომ მეთოდი ამ აკტუალურ ინსტანცს დაამუშავებს. მაგალითად ვიძახებთ vektor1.gadmocema() , ველოდებით რომ მივიღოთ ვექტორი პირველის კოორდინატები, როგორც x, ასევე y. ვწერთ მაგ: vektr1.mimateba(vektr2) ველოდებით რომ ვექტორი პირველი და ვექტორი მეორე შეიკრიბება. ალბათ შეამჩნიეთ, რომ ობიექტსა და მეთოდს შორის არის წერტილი დასმული, სწორედ ეს წერტილია მათი დამაკავშირებელი ხიდი, რომლის საშუალებითაც მეთოდი ამუშავებს ობიექტს (ამ შემთხვევაში ინსტანცს). &lt;br /&gt; შეხედეთ ამ მაგალითს: &lt;br /&gt;&lt;br /&gt; vektor vektr1, vektr2; &lt;br /&gt;&lt;br /&gt; vektr1.x = 10; &lt;br /&gt; vektr2.y = 29; &lt;br /&gt; vektr2.x = -1; &lt;br /&gt; vektr2.y = 12; &lt;br /&gt;&lt;br /&gt; vektr1.gadmocema(); // შედეგად გადმოიცემა (10, 29) &lt;br /&gt; vektr2.gadmocema(); // შედეგად გადმოიცემა (-1, 12) &lt;br /&gt;&lt;br /&gt; ახლა არც მიმატების ფორმულირებული წარმოსახვა არ უნდა გაგიჭირდეთ: &lt;br /&gt;&lt;br /&gt; void sekreba(vektor v2) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt; x += v2.x; &lt;br /&gt; y += v2.y; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; გაიხსენეთ, რომ ეს ტოლობა x += v2.x; შეესიტყვება x = x + v2.x; &lt;br /&gt;&lt;br /&gt; ასეთი მეთოდური წარმოსახვების შედეგად შეგვიძლია ასეც დავწეროთ: &lt;br /&gt;&lt;br /&gt; void sekreba(vektor v2) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt; x += v2.x; &lt;br /&gt; y += v2.y; &lt;br /&gt;&lt;br /&gt; gadmocema(); &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; კონსტრუქტორი &lt;br /&gt;&lt;br /&gt; კონსტრუქტორი ეს არის განსაკუთრებული მეთოდი, რომელიც კლასებს მიეკუთვნება. როდესაც რაიმე კლასის ობიექტი იქმნება, იგი იკავებს კომპიუტერის სამუშაო სამახსოვრო ადგილში რაიმე ადგილს, უფრო ზუსტად ამ ობიექტის ცვლადები იკავებენ სამახსოვრო ადგილს. და ამ დროს სჭირდება კომპილერს რაღაცა მეთოდი, რომელიც ამ ცვლადებს და მთლიანობაში ობიექტს, ინიციალიზირებას გაუკეთებს, სწორედ ეს მეთოდია კონსტრუქტორი. იგი გამოიძახება ძირითადად ობიექტის ცვლადების განსაზღვრისას. კომპილერი ისეა შედგენილი, თუ პროგრამისტისაგან მოხდება ამ კონსტრუქტორის გამოტოვება (მიზან მიმართული ან უნებლიე), მაშინ იგი ამ კონსტრუქტორს თვითონ განავრცობს. ყოველივე ეს კი მიგვანიშნებს კონსტრუქტორის აუცილებლობაზე, ამით კომპილერი რწმუნდება, რომ კონსტრუქტორის დახმარებით ობიექტის ცვლადებს სწორედ გაუკეთდათ ინიციალიზირება. ხშირად კონსტრუქტორი გამოიყენება ინსტანცების ელემენტებისათვის საწყის მნიშვნელობების მისანიჭებლად. &lt;br /&gt;&lt;br /&gt; საკუთარი კონსტრუქტორის შესაქმნელად პირველ რიგში იგი უნდა განვსაზღვროთ, ამისათვის კი უნდა ვიცოდეთ ეს ოთხი კანონი: &lt;br /&gt;&lt;br /&gt; a) კონსტრუქტორები ატარებენ იგივე სახელს, რასაც თვით კლასი; &lt;br /&gt;&lt;br /&gt; b) მათ არ გააჩნიათ უკუ გადმოსაცემი მნიშვნელობები და არც ტიპაჟები (თვით void -იც უგულებელყოფილია); &lt;br /&gt;&lt;br /&gt; c) კონსტრუქტორები ავტომატურად კომპილერისაგან გამოიძახებიან მაშინ, როდესაც ხდება ინსტანცების განსაზღვრა კლასებში; &lt;br /&gt;&lt;br /&gt; d) ისინი სხვა მეთოდებისაგან განსხვავდებიან იმითაც, რომ explizit -ში რაიმე ინსტანცისათვის არ გამოიძახებიან. &lt;br /&gt;&lt;br /&gt; 5) განვაგრძოთ მაგალითი და დავსვათ კონსტრუქტორი: &lt;br /&gt;&lt;br /&gt; // klasi1.cpp - კლასი ვექტორებისათვის &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; using namespace std; &lt;br /&gt; class vektor &lt;br /&gt; { &lt;br /&gt; double x; // x - კოორდინატი &lt;br /&gt; double y; // y - კოორდინატი &lt;br /&gt;&lt;br /&gt; // კონსტრუქტორი &lt;br /&gt;&lt;br /&gt; vektor() &lt;br /&gt; { &lt;br /&gt; x = 0; &lt;br /&gt; y = 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; // მეთოდები &lt;br /&gt;&lt;br /&gt; void sekreba(vektor v2) &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; x += v2 . x; &lt;br /&gt; y += v2 . y; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void gadmocema() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; &quot; ( &quot; &lt;&lt; x &lt;&lt; &quot; , &quot; &lt;&lt; y &lt;&lt; &quot; ) &quot;; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; როგორც ხედავთ კონსტრუქტორი განვსაზღვრეთ იგივე სახელით, რაც კლასს გააჩნია და ობიექტის ცვლადებს საწყის მნიშვნელობებად მივანიჭეთ ნოლები; &lt;br /&gt;&lt;br /&gt; ძირითადად ამით შემოფარგლა კლასის მთლიანი წარმოდგენა, ახლა ჩვენი მაგალითი, რომ სრულვყოთ დავსახოთ ჯერ ამოცანა: 1)კერძოდ შევეცადოთ შემოვიტანოთ ორი ინსტანცი ჩვენი ვექტორის კლსიდან და გადმოვცეთ ისინი ჩვენი პროგრამით; და 2) მივუმატოთ შემდეგ მეორე ვექტორი პირველს და ასეთი სახით კვლავ გადმოვცეთ პროგრამის სახით. &lt;br /&gt;&lt;br /&gt; 6) ამოცანის ამოხსნა: &lt;br /&gt;&lt;br /&gt; // klasi1.cpp - კლასი ვექტორებისათვის &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; using namespace std; &lt;br /&gt; class vektor &lt;br /&gt; { &lt;br /&gt; double x; // x - კოორდინატი &lt;br /&gt; double y; // y - კოორდინატი &lt;br /&gt;&lt;br /&gt; // კონსტრუქტორი &lt;br /&gt;&lt;br /&gt; vektor() &lt;br /&gt; { &lt;br /&gt; x = 0; &lt;br /&gt; y = 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; // მეთოდები &lt;br /&gt;&lt;br /&gt; void sekreba(vektor v2) &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; x += v2 . x; &lt;br /&gt; y += v2 . y; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; void gadmocema() &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; &quot; ( &quot; &lt;&lt; x &lt;&lt; &quot; , &quot; &lt;&lt; y &lt;&lt; &quot; ) &quot;; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt; vektor vekt1; &lt;br /&gt; vektor vekt2; &lt;br /&gt;&lt;br /&gt; vekt1.x = 1; &lt;br /&gt; vekt1.y = 2; &lt;br /&gt; vekt2.x = 10; &lt;br /&gt; vekt2.y = 20; &lt;br /&gt;&lt;br /&gt; // ვექტორის გადმოცემა &lt;br /&gt; cout &lt;&lt; &quot;Vektor 1: &quot;; &lt;br /&gt; vekt1.gadmocema(); &lt;br /&gt; cout &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; &quot;Vektor 2: &quot;; &lt;br /&gt; vekt2.gadmocema(); &lt;br /&gt; cout &lt;&lt; endl &lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; // 2. ვექტორთა შეკრება &lt;br /&gt; vekt1.sekreba(vekt2); &lt;br /&gt;&lt;br /&gt; // ვექტორი შეკრების შემდეგ &lt;br /&gt; cout &lt;&lt; &quot;Vektor1 sekrebis Semdeg : &quot;; &lt;br /&gt; vekt1.gadmocema(); &lt;br /&gt; cout &lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt; ატრიბუტი &lt;br /&gt;&lt;br /&gt; ბოლოს დაგვრჩა მხოლოდ ატრიბუტი და შეიძლება ითქვას ჩვენც გადავდივართ მეორე ფაზაში &lt;br /&gt; როგორც უკვე ვთქვით კლასები თავიდანვე განისაზღვრება თუ რისთვისაა და ვისთვისაა ესა თუ ის კლასი დაწერილი, ეს ჩვენი დაწერილი კლასი მხოლოდ შეიძლება ჩვენსავე პროგრამაში გამოვიყენოთ, მაგრამ არც აქა გვაქვს ჯერ განსაზღვრაში შემოტანილი თუ როგორი მოქმედება შეიძლება ამ ჩვენს კლასზე. &lt;br /&gt; კლასზე მოქმედება შეიძლება როგორც შიგნიდან ასევე გარედან. სწორედ ატრიბუტია ამის განმსაზღვრელი, თუ რა მოქმედების არე ენიჭება კლასს. თუ ჩვენს ზემოთა მაგალითს გასინჯავთ კომპილერის საშუალებით, თქვენ მიიღებთ შეცდომას და ეს მართალიც იქნება, რადგან ატრიბუტი არა გვაქვს კლსაში შემოტანილი, ჩვენს ეს თავი სპეციალურად გადმოვიტანეთ აქ ბოლოში რომ უფრო კარგად შეძლოთ ყოველივე ამის გათვითცნობიერება. &lt;br /&gt; ატრიბუტი შეიძლება იყოს კერძო ანუ private და საერთო ანუ public. სწორედ ამის და მიხედვითაა კლასებიც განსაზღვრული. ატრიბუტის განსაზღვრა ხდება კლასების თავშივე და მიეთითება ან private ან public, რომელსაც მოსდევს შემდეგ ორი წერტილი: &lt;br /&gt;&lt;br /&gt; ასე, რომ თუ თქვენ ჩვენს მაგალითს გასინჯავთ, არ დაგავიწყდეთ ატრიბუტის შემოტანა.</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-38-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 9 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-37-1</link>
			<pubDate>Thu, 09 Feb 2012 15:47:19 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: ობიექტორიენტირებული პლათფორმა - თუ რა არის იგი&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>დიახ, თანდათან ვუახლოვდებით იმ მთავარს რაც ესოდენ მნიშვნელოვანია C++ პროგრამირების ენაში. ჩვენ არაერთხელ გვქონია უკვე ამის შესახებ საუბარი, თუ რა უპირატესობა გააჩნია ობოექტორიენტირებულ პლათფორმას არა ობიექტორიენტირებულ პლათფორმასთან შედარებით, არც ის გამოგვრჩენია, რომ ზუსტად C++ პროგრამირების ენამ მოახდინა სწორედ ეს ე. წ. პროგრამირების რევოლუცუია. თუმცა ჯერ კიდევ სამოცდაათიან წლებში არსებობდა პროგრამირების ენები, რომელთაც ეს თვისება გააჩნდათ, მაგრამ არასრულყოფით რა თქმა უნდა. ეს ენები იყო Smalltalk და Modula. ოთხმოციანი წლების შუა რიცხვებში ჩნდება C პროგრამირების ენა, რომელსაც შემდეგ ცვლის ჯერ-ჯერობით დღეისათვის შეუცვლელი C++ ენა. რაში გამოიხატება ამ ენის C++ უპირატესობა სხვა ენებთან შედარებით. კერძოდ იმაში, რომ ამ ენით შესაძლებელია კლასების შექმნა, რომელიც არის ობიექტორიენტირებული პროგრამირების ფაილების ტიპეპის ძირითადობა. &lt;br /&gt; რა იგულისხმება კლასებში და რატომ მაინც და მაინც კლასები? ესაა ძირათად იმ თვისებების და მეთოდების ერთობლიობა, რომლებიც ობიექტების ავ-კარგიანობას ასახავენ, გვაჩვენებენ ამ ობიექტების მოქმედების შესაძლებლობებს (როგორც თვით პროგრამაში, ასევე სხვა პროგრამისტის რომელიმე პროგრამაში), საშუალებას იძლევიან ინსტანცების შექმნასა და მათი ცვლადების განსაზღვრაში, რომლებიც შემდეგში ობიექტის თვისებებად აღიქმებიან. &lt;br /&gt; რას ნიშნავს უფრო მარტივად ყოველივე ეს? ეს ნიშნავს იმას, რომ კლასები აღწერენ ობიექტებს, თვით ამ ობიექტების თვისებებისა და ოპერაციების გამოყენებით. ახლა შესაძლებელია გაჩნდეს კითხვა, თუ რას წარმოადგენს თვით ობიექტი? ესაა მარტივად, რომ ვთქვათ მართლაც რაღაცა ობიექტი, რომელსაც შესაძლებელია ბევრი თვისება გააჩნდეს. წარმოვიდგინოთ ვთქვათ ფანქარი, რომელსაც შესაძლებელია გააჩნდეს თავისი სისქე, თავისი სიგრძე და თავისი ფერი. ჩვენ შეგვიძლია რა თქმა უნდა მას კიდევ ბევრი თვისება მოვუძებნოთ, მაგრამ ყოველი ობიექტიდან ვიღებთ იმას, რაც ჩვენ პროგრამირებისათვის გვჭირდება. ახლა შევხედოთ თუ რა შეუძლია ფანქარმა რომ გააკეთოს. მას შეუძლია ჩვენი დახმარებით დახატოს, ხაზი გაავლოს, გააფერადოს და ბევრი კიდევ სხვა. აი ფანქრის ამ შესაძლებლობებს კი, ფანქრის ოპერაციები შეიძლება ვუწოდოთ. სწორედ ამ თვისებების და ოპერაციების ერთობლიობაა კლასები. &lt;br /&gt; ვინც ჩვენს ლექციებს Games Programming თვალს ადევნებდა, რომელშიდაც საუბარი გვქონდა თამაშების პროგრამირებაზე Flash -ით, მათ არ გაუჭირდებათ ამ ჩვენი ნაამბობის გაგება, რადგან თამაშების პროგრამირების დროს ხდება პირველ რიგში ასეთი კლასების გამოყენება. კერძოდ პირველ რიგში ვხატავთ რაიმეს, რომელიც ინსტანცირებისას გარდაიქმნება ობიექტად და ჩვენ გვეძლევა შესაძლებლობა Flash -ში წინასწარ განსაზღვრული კლასების გამოყენებით, ჩვენს მიერ ახლად შექმნილ ობიექტზე ვიმოქმედოთ მისივე თვისებებით და ვამოძრავოთ ჩვენი ობიექტი საითაც გვინდა იქით, ან შევასრულებინოთ სხვა რაიმე ოპერაცია. &lt;br /&gt; თამაშების პროგრამირების გახსენება ჩემს მიერ მიუთითებს იმაზეც, რომ თვით პროგრამში Flash გამოყენებულია კლასები, რომლებიც C++ პროგრამირების ენაშია შექმნილი. ეს კი გვეუბნება კლასების (და C++ ენის) კიდევ ერთ უპირატესობას, მაშასადამე თქვენ შეგიძლიათ შექმნათ კლასი, რომელიც შემდეგში შეიძლება სხვამაც გამოიყენოს. &lt;br /&gt; არ ვიცი თუ რაოდენ გასაგებად ავხსენი ყოველივე ეს, მაგრამ იმედი მაქვს თანდათანობით და მაგალითების დახმარებით ადვილად გაერკვევით ყველაფერ ამაში.</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-37-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 8 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-36-1</link>
			<pubDate>Thu, 09 Feb 2012 15:46:39 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: სტრუქტურები - სტრუქტურების განსაზღვრა, კომპლექსური ფაილები&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>რა არის სტრუქტურა და რისთვის ვიყენებთ მათ? ამ კითხვაზე, რომ გავცეთ საფუძვლიანი პასუხი გავიხსენოთ ჩვენივე ლექციებიდან ნასწავლი მასივები. კერძოდ მასივების საშუალებით შესაძლებელია რამოდენიმე ცვლადის, რომელთაც ერთი სახის ტიპაჟი გააჩნიათ ერთ ფაილების ტიპად ჩამოყალიბება. ხოლო სტრუქტურების სახით შესაძლებელია უკვე აგრეთვე რამოდენიმე ცვლადის, რომელთაც სხვა და სხვა სახის ტიპაჟები გააჩნიათ, ერთ საერთო კომბინირებულ ფაილთა ტიპად ჩამოყალიბება. ცოტა რთულად კი გამოგვივიდა ნათქვამი, მაგრამ არა უშავს მაგალითების სახით ადვილად გაერკვევით ჩვენს ნათქვამში. ჯერ კი დავიწყოთ თავიდან, ანუ განვსაზღვროთ სტრუქტურა. &lt;br /&gt; პირველ რიგში კი უნდა ისწავლოთ თუ რა განსხვავებაა სტრუქტურების ტიპებსა და სტრუქტურის ცვლადებს შორის. &lt;br /&gt; სტრუქტურის ტიპი ესაა იგივე ფაილის ტიპი (როგორც int, double ან string) , რომელიც ჩვენგან განისაზღვრება და არა თვით პროგრამირების ენისაგან. ხოლო როდესაც ჩვენ უკვე სტრუქტურის ტიპს ანუ სახეობას განვსაზღვრავთ, მაშინ შეგვიძლია უკვე ცვლადებიც შემოვიტანოთ, როგორც სტრუქტურის ცვლადები და განვსაზღვროთ ისინი სტრუქტურულ ცვლადებად. &lt;br /&gt;&lt;br /&gt; კომპლექსური ფაილები &lt;br /&gt;&lt;br /&gt; როგორც სახელწოდება მიგვანიშნებს, აღნიშნული ფაილი შედგება სტრუქტურისაგან და მათში ჩვენს მიერ შემოტანილ-განსაზღვრული ცვლადებისაგან. ვცადოთ და დავწეროთ პროგრამა, რომელიც მოგვცემს საშუალებას შევქმნათ პატარა ე. წ. საბანკო სტრუქტურა, სადაც დაგვჭირდება აუცილებლად კლიენტის სახელი, მისი კონტო ნომერი (ნომერი, რომელიც საშუალებას აძლევს როგორც კლიენტს, ასევე ბანკის ადმინისტრაციას განსაზღვროს კლიენტის ყველა მონაცემი), კონტოს მდგომარეობა (თანხის რაოდენობა) და მთლიანი კრედიტი. &lt;br /&gt;&lt;br /&gt; მივყვეთ ნაბიჯ-ნაბიჯ ჩვენს მაგალითს. შემოვიტანოთ ახალი პროექტი სადაც გამოვიძახებთ აგრეთვე კლასს &lt; string &gt;. &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; #include &lt; string &gt; // შემოტანილია string &lt;br /&gt; using namespace std; &lt;br /&gt;&lt;br /&gt; struct konto // სტრუქტურის განსაზღვრა &lt;br /&gt; { &lt;br /&gt; string klientisSaxeli; // შემოგვაქვს სტრუქტურის ცვლადები &lt;br /&gt; int kontoNomeri; &lt;br /&gt; double kontosMdgomareoba; &lt;br /&gt; int krediti; &lt;br /&gt; }; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt; konto cemiKonto; &lt;br /&gt;&lt;br /&gt; cemiKonto.klientisSaxeli = &quot;xinkala&quot;; // წერტილის საშუალებით სტრუქურაზე ზემოქმედება &lt;br /&gt; cemiKonto.kontoNomeri = 1234567; &lt;br /&gt; cemiKonto.kontosMdgomareoba = 3000; &lt;br /&gt; cemiKonto.krediti = 1000; &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; &quot;Konto &quot; &lt;&lt; cemiKonto.klientisSaxeli // კლიენტის მონაცემების გადმოცემა &lt;br /&gt; &lt;&lt; endl &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; &quot;&amp;#92;tKontoNomeri: &quot; &lt;br /&gt; &lt;&lt; cemiKonto.kontoNomerir &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; &quot;&amp;#92;tKontosMdgomareoba: &quot; &lt;br /&gt; &lt;&lt; cemiKonto.kontosMdgomareoba &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; &quot;&amp;#92;tKreditis gacemis szRvari: &quot; &lt;br /&gt; &lt;&lt; cemiKonto.krediti &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; თქვენ ამ მაგალითში გარკვევა არ უნდა გაგიჭირდეთ, გნებავთ გაუკეთეთ კოპირება და მაგალითი თქვენი კომპილერის საშუალებით გამოსცადეთ. ჩვენ კი შეგნებულად ვუვლით გვერდს ამ თემაზე ფართო საუბარს, რადგან ეს სტრუქტურული ვარიანტი გამოიყენებოდა C პროგრამირების ენაში, რომელიც C++ ში კლასებმა შეცვალეს. კლასები კი უფრო ფართო მცნებაა ვიდრე სტრუქტურა, აქედან გადავდივართ ობიექტებზე და შესაბამისად ობიექტორიენტირებულ პლათმორმაზე.</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-36-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 7 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-35-1</link>
			<pubDate>Thu, 09 Feb 2012 15:45:56 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: ფუნქციათა პარამეტრები - პარამეტრების გადაცემა ფუნქციაზე&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>ჩვენს წინა ლექციაში ვისწავლეთ ფუნქციის განსაზღვრისა და მისი გამოძახების წესები, ავღნიშნეთ აგრეთვე ისიც, თუ რას წარმოადგენს ფუნქციის ბოლოში დასმული ფრჩხილები ( ). კერძოდ კი ის რომ ამ ფრჩხილებში შესაძლებელია განვსაზღვროთ ცვლადები, რომელთაც ვუწოდებთ პარამეტრებს. ამ ფრჩხილებში განსაზღვრული ცვლადები, ანუ ფუნქციის პარამეტრები მოქმედებენ მხოლოდ ფუნქციის არეში, ანუ მათ ფუნქციის გარეთ არავითარი დანიშნულება არ გააჩნიათ. &lt;br /&gt; ის მნიშვნელობები, რომლებიც ფუნქციის გამოძახებისას ამ პარამეტრებს გადეცემათ, ეწოდებათ არგუმენტები. მათ ზოგიერთი პროგრამისტი ასევე პარამეტრს უწოდებს. &lt;br /&gt; ახლა შევხედოთ ჩვენს წინა მაგალითს, სადაც შემოვიტანეთ ფუნქცია misalmeba(), რომელიც ერთ მარტივ ტექსტურ ჩანაწერს შიცავს. &lt;br /&gt; void misalmeba() &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt; cout &lt;&lt; &quot;gamarjobaT xalxooo!&quot; &lt;&lt; endl; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; ახლა წარმოვიდგინოთ, რომ ჩვენს ამ მისალმების ფუნქციაში გვინდა ეს მისალმება თითოეულ კონკრეტულ პიროვნებას მივმართოთ. შემოვიტანოთ პარამეტრი saxeli, რომელიც უნდა string ტიპისა უნდა იყოს. მის განსაზღვრას ვახდენთ ზუსტად ამ მისალმების ფუნქციის ფრჩხილებში. &lt;br /&gt; void misalmeba (string saxeli) &lt;br /&gt; { &lt;br /&gt; cout &lt;&lt; &quot;gamarjobaT xalxoo!&quot; &lt;&lt; endl; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; ახლა შევეცადოთ ჩვენი პარამეტრის გამოყენებას, ისე რომ მან ანუ პარამეტრმა გადმოგვცეს ჩვენთვის სასურველი სახელი; &lt;br /&gt;&lt;br /&gt; void misalmeba( string saxeli) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt; cout &lt;&lt;&quot;gamarjoba&quot; &lt;&lt; saxeli &lt;&lt; &quot; ! &quot; &lt;&lt; endl; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; ახლა კი გამოვიძახოთ ფუნქცია თავისივე არგუმენტით; &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt; .................... &lt;br /&gt; misalmeba(&quot;xinkala&quot;); &lt;br /&gt; .................... &lt;br /&gt; misalmeba(&quot;kaxfonso&quot;); &lt;br /&gt; .................... &lt;br /&gt;&lt;br /&gt; ამ შემთხვევაში ყველაზე მნიშვნელოვანი არის ის, რომ არგუმენტის ტიპაჟი უნდა იგივე იყოს, რაც პარამეტრის ტიპაჟია, ჩვენს შემთხვევაში string. &lt;br /&gt;&lt;br /&gt; არგუმენტების სახით შესაძლებელია პარამეტრს გადავცეთ, როგორც ცვლადები, ასევე კონსტანტები, მაგრამ როდესაც ვახდენთ ცვლადების გადაცემას, აქ ისმება კითხვა, თუ როგორ გადაეცემიან ეს ცვლადები თვით ფუნქციას. &lt;br /&gt; ერთი შესაძლებლობა ამისა არის ის, რომ ეს ცვლადები ფუნქციაში აისახოს, როგორც ფუნქციის შიგნით განსაზღვრული ცვლადები. ამ შემთხვევაში პარამეტრები და ცვლადები იდენტურნი იქნებიან და ფუნქციას ექნება შესაძლებლობა ცვლადების მნიშვნელობები ასე ვთქვათ პარამეტრების გავლით შეცვალოს. ამ გადაცემის ხერხს პროგრამირებაში call by reference ეწოდება. &lt;br /&gt; რაც შეეხება მეორე ხერხს, რომელსაც call by value ქვია, აქ პარამეტრები არგუმენტის კოპირებით ინიციალიზირდებიან. ეს ნიშნავს რომ ფუნქციის გამოძახებისას ცვლასდების მნიშვნელობები პარამეტრბში კოპირების სახით გადადიან. ამ შემთხვევაში შესაძლებელია პარამეტრის მნიშვნელობის ისე შეცვლა, რომ ცვლადის მნიშვნელობა ფუნქციაში არ შეიცვალოს. სწორედ ეს მეორე ხერხი გვაქვს ჩვენს მაგალითში გამოყენებული. &lt;br /&gt;&lt;br /&gt; სხვა და სხვა პარამეტრები &lt;br /&gt;&lt;br /&gt; აქამდე საქმე გვქონდა ფუნქციაში მხოლოდ ერთ პარამეტრთან, მაგრამ ფუნქციას შეუძლია აგრეთვე ბევრი პარამეტრების აღება. ამ შემთხვევაშიც ყველა პარამეტრი თავსდება ფუნქციის ფრჩხილებში ( ), და მათ შორის გამყოფია მხოლოდ მძიმე, , &lt;br /&gt;&lt;br /&gt; void demo(string paramtri1, int parametri2, int parametri3) &lt;br /&gt; { &lt;br /&gt; პროგრამის კოდი &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; ფუნქციის გამოძახებისას პარამეტრებს შესატყვისი ტიპაჟის არგუმენტები გადაეცემიან &lt;br /&gt; demo(&quot;ტექსტი&quot;, 12, 4940); &lt;br /&gt;&lt;br /&gt; ასეთი მარტივი ხერხით ხდება პარამეტრებზე მნიშვნელობის გადაცემა, ასევე მარტივად ხდება ფუნქციიდან ამ მნიშვნელობების გამოძახებაც. &lt;br /&gt; აქ მოვიყვანთ ერთ მარტივ მაგალითს, რომელიც რიცხვის კვადრატს ანგარიშობს: &lt;br /&gt;&lt;br /&gt; void kvadrati (int ricxvi); &lt;br /&gt; { &lt;br /&gt; long kvadrati; &lt;br /&gt; kvadrati = ricxvi * ricxvi; &lt;br /&gt; cout &lt;&lt; kvadrati &lt;&lt; endl; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; გამოძახება ხდება ასეთი სახით: &lt;br /&gt;&lt;br /&gt; int mniSvneloba = 12; &lt;br /&gt; kvadrati (mniSvneloba); // გადმოიცემა: 144 &lt;br /&gt;&lt;br /&gt; აქმდე ვიხილავდით ყოველთვის ფუნქციას და არ ვფიქრობდით მისი მნიშვნელობის გადმოცემაზე, ამიტომ ვიყენებდით აღნიშვნას void. დავუშვათ ახლა, რომ გვჭირდება ფუნქციის მნიშვნელობის პირდაპირი გადმოცემა, ამისათვის როგორც ვიცით ფუნქციას განსაზღვერისას უნდა სახელის წინ მივუთითოთ ტიპაჟის სახეობა. შევხედოთ ამ მაგალითს: &lt;br /&gt;&lt;br /&gt; long kvadrati (int ricxvi); &lt;br /&gt; { &lt;br /&gt; long kvadrati; &lt;br /&gt; kvadrati = ricxvi * ricxvi; &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; kvadrati &lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; შედეგის მნიშვნელობის გადმოცემას ვახდენთ return ბრძანებით &lt;br /&gt;&lt;br /&gt; long kvadrati (int ricxvi); &lt;br /&gt; { &lt;br /&gt; long kvadrati; &lt;br /&gt; kvadrati = ricxvi * ricxvi; &lt;br /&gt; return kvadrati; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; ფუნქციის გამოძახებისას კი შემოგვაქვს ცვლადები, როგორც მნიშვნელობისათვის, ასევე შედეგისათვის. &lt;br /&gt; int mniSvneloba = 12; &lt;br /&gt; long Sedegi; &lt;br /&gt; Sedegi = kvadrati(mniSvneloba); &lt;br /&gt; cout &lt;&lt; Sedegi &lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; შედეგად ამ შემთხვევაშიც მივიღებთ 144-ს. &lt;br /&gt;&lt;br /&gt; გლობალური და ლოკალური ცვლადები &lt;br /&gt;&lt;br /&gt; აქამდის ჩვენ ლაპარაკი გვქონდა მხოლოდ იმ ცვლადებზე, რომლებსაც ვსაზღვრავდით ფუნქციის ბლოკში, ანუ იქ სადაც იხსნება ამ ფრჩხილით { და მთაცრდება ამით } . ასეთ მონაკვეთს ვუწოდებთ ფუნქციის ბლოკს. ამ ბლოკში განსაზღვრულ ცვლადებზე ზემოქმედება შესაძლებელია მხოოოდ ფუნქციის ბლოკში, ან ფუნქციის პარამეტრების საშუალებით. ასეთ ცვლადებს უწოდებენ ლოკალურ ცვლადებს. &lt;br /&gt; თუ ჩვენ ცვლადებს ფუნქციის გარეთ განვსაზღვრავთ, მაშინ ისინი მიიღებენ ფართო დანიშნულებას და შესაძლებელია მათი გამოყენება პროგრამის მთლიან კოდში. ასეთი სახის ცვლადევს უწოდებენ გლობალურ ცვლადებს &lt;br /&gt; ჩვენ ახლა შემოგთავაზებთ ერთ მარტივ მაგალითს საიდანაც ადვილად მიხვდებით ამ ორი ცვლადის განსაზღვრის და მათი გამოძახების, უფრო ზუსტად მათი მოქმედების სფეროს წესებს. &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt; using namespace std; &lt;br /&gt;&lt;br /&gt; int globCvladi = 1; &lt;br /&gt;&lt;br /&gt; void funkcia() &lt;br /&gt; { &lt;br /&gt; globCvladi = 33; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; int main() &lt;br /&gt; { &lt;br /&gt; cout &lt;&lt; globCvladi &lt;&lt; endl; // გადმოიცემა = 1 &lt;br /&gt;&lt;br /&gt; funkcia(); &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; globCvladi &lt;&lt; endl; // გადმოიცემა = 33 &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; ნათლად ჩანს ის რაზედაც ზემოთ გვქონდა საუბარი, კერძოდ ერთი და იგივე ცვლადი განვსაზღვრეთ ორ ადგილზე, ერთი თავში, ანუ ფუნქციის გარეთ (გლობალური) და ერთიც ფუნქციის შიგნით (ლოკალური), ხოლო მათი გამოძახება მოვახდინეთ აგრეთვე ორ ადგილზზე, მაგრამ უკვე main() ფუნქციის ბლოკში. შედეგად მივიღეთ ის, რომ გლობალური ცვლადი მოქმედებს ყველგან, ხოლო ლოკალურო კი, მხოლოდ ფუნქციის შიგნით. &lt;br /&gt;&lt;br /&gt; ფუნქციის სინტაქსი &lt;br /&gt;&lt;br /&gt; და ფუნქციის შესახებ გვინდა სულ ბოლოს გადმოვცეთ მისი დაწერის, ანუ შექმნის სინტაქსი, ახლა როდესაც თქვენთვის ყველაფერი გასაგებია, ეს სინტაქსიც არ დაგრჩებათ გაუგებარი: &lt;br /&gt;&lt;br /&gt; FunkciisTipi FunkciisSaxeli (parametrebi) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; ფუნქციის კოდი ; &lt;br /&gt;&lt;br /&gt; }</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-35-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 6 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-34-1</link>
			<pubDate>Thu, 09 Feb 2012 15:45:10 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: ფუნქციები - ფუნქციათა განსაზღვრა და გამოძახება&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>საერთოდ ფუნქცია და მისი დანიშნულება პროგრამირების ენებში, ყველგან თითქმის ერთია. ჩვენი თემების ყველა ლექციებში ამ საკითხს უკვე შევეხეთ, განვიხილეთ თითოეული პროგრამირების და ენის მიხედვით მისი დანიშნულება და მისი შემოტანის პრიორიტეტი. ახლაც გვინდა მოკლედ აგიხსნათ ის, თუ რას წარმოადგენს ფუნქცია და რა დანიშნულება გააჩნია მას. &lt;br /&gt; წარმოიდგინეთ წერთ რომელიმე პროგრამის კოდს, სადაც ერთი და იგივე კოდის (ვთქვათ, რაიმე ტექსტური ჩანაწერის) მრავალჯერ გამეორება გიწევთ, რა ხდება ამ დროს? იძულებულები ვართ ეს კოდი ყველგან გავიმეოროთ, ამით რა თქმა უნდა იზრდება პროგრამის კოდი, რაც ხელს უშლის პროგრამის მოქნილობას და ასევე რა საკვირველია ვკარგავთ ბევრ დროს. აი ფუნქციის შემოტანით ამ შრომის აცილება შესაძლებელია და თუ როგორ, ამაზე ქვემოთ. &lt;br /&gt; ფუნქციის გამოყენება აადვილებს აგრეთვე პროგრამაში გაპარული შესაძლო შეცდომის პოვნას და შესაძლებელია აგრეთვე ამ ფუნქციის სხვა ახალ პროგრამაშიც გამოყენება, უბრალოდ კოპირების მეთოდით გადავიტანთ ფუნქციაში შესულ ბრძანებებს და მორჩა. &lt;br /&gt; როგორც ხედავთ, ფუნქციის შემოტანას პროგრამირებაში ბევრი უპირატესობანი გააჩნია, ამიტომ ჩვენი რჩევაა, გულმოდგინეთ მოეკიდოთ ამ საკითხს. &lt;br /&gt; როგორც ცვლადები, ასევე ფუნქციებიც პირველ რიგში უნდა განისაზღვრონ, ჩვენი ფუნქციის განსაზღვრა ხდება main() ფუნქციის წინ, ხოლო მისი გამოძახება შესაძლებელია თვით ამ main() ფუნქციიდან; მარტივად ვწერთ ჩვენი ფუნქციის სახელს და მორჩა. &lt;br /&gt; ფუნქციის განსაზღვრისას პირველ რიგში ვფიქრობთ მის სახელზე და იმაზე, თუ რა დანიშნულება უნდა ქონდეს ამ ჩვენს ფუნქციას, ანუ რა მუშაობა უნდა გაწიოს მან ჩვენს პროგრამაში. &lt;br /&gt; ფუნქციის სახელი სასურველია იყოს ნათელი, რათა შემდეგი მუშაობის შესრულებაში ადვილად შევძლოთ მთლიანი კოდის ანალიზება. &lt;br /&gt; შემოვიტანოთ ერთი მაგალითი ახლა და მივყვეთ მას ნაბიჯ-ნაბიჯ, რათა გავერკვეთ ფუნქციის წესებში. &lt;br /&gt; როგორც ყოველთვის ფუნქციას ეძლევა სახელი; misalmeba(), რომლის ბოლოშიც ვსვამთ ფრჩხილებს, თუ რას წარმოადგენენ ეს ფრჩხილები, ამაზე ქვემოთ გვექნება საუბარი, მოკლედ კი გეტყვით, რომ ეს ფრჩხილები წარმოადგენენ ადგილს სადაც ხდება ფუნქციის პარამეტრების განსაზღვრა. &lt;br /&gt; ახლა მივყვეთ კვლავ ჩვენს მაგალითს. რა მოვალეობა ეკისრება ჩვენს მიერ შექმნილ ახალ ფუნქციას misalmeba(), რა მუშაობა უნდა შესრულოს მან ჩვენს პროგრამაში. &lt;br /&gt; როგორც თვით ფუნქციის სახელი გვეუბნება, საჭიროა მან ჩვენს პროგრამაში შეასრულოს მისალმების ფუნქცია, ანუ როდესაც ჩვენ გვსურს მივესალმოთ ჩვენს მომხმარებელს (მას ვინც ჩვენი დაწერილი პროგრამით იხელმძღვანელებს). &lt;br /&gt; როგორც უკვე წინა ლექციებიდან ვიცით, ტექსტური ჩანაწერების გადმოცემას ვახდენთ ბრძანებით cout, რომელსაც მიეთითება აუცილებლად ეს ნიშანი &lt;&lt;, რომლის შემდეგაც ვათავსებთ ჩვენთვის სასურველ ტექსტს, რომელსაც ვხურავთ კვლავ ამ ნიშნით &lt;&lt;, და ბოლოს ვუთითებთ ბრძანებას endl, ამ უკანასკნელის დანიშნულებაა, შემოიტანოს ახალი სტრიქონის დასაწყისი. &lt;br /&gt; cout &lt;&lt; &quot;gamarjobaT xalxooo!&quot; &lt;&lt; endl; //არ დაივიწყოთ, რომ C++ პროგრამირებაში, ასევე ჯავა ენაში ყოველი საპროგრამო სტრიქონი მთავრდება წერტილ-მძიმეთი, ანუ ასე ; &lt;br /&gt; ფუნქციებს შეუძლიათ საბოლოო შედეგების უკუ ასახვა მოახდინონ, რომლებსაც ენიჭებათ ტიპაჟები, ანუ იმ ტიპების სახეობები, რომელი სახისაც უნდა იყოს შედეგის მნიშვნელობა. (int, duble ან string). ამიტომ ყოველ ფუნქციას მისი განსაზღვრისას ფუნქციის სახელის წინ მიეთითება შესაბამისი ტიპაჟი. ხოლო იმ შემთხვევაში, როდესაც არაა საჭირო ფუნქციის ბოლო შედეგის გადმოცემა, როგორც ამ ჩვენს მაგალითში, მაშინ მიეთითება სპეციალური ბრძანება void &lt;br /&gt; მაშასადამე ჩვენი ფუნქციის განსაზღვრა ხდება ასე: &lt;br /&gt; void misalmeba() &lt;br /&gt; ახლა ავდგეთ და მოვათავსოთ ჩვენი ტექსტური ჩანაწერი ფუნქციის იმ სპეციალურ ბლოკში, რომელიც იჭყება { ამ ფრჩხილით და მთავრდება ამით }. &lt;br /&gt; void misalmeba() &lt;br /&gt; { &lt;br /&gt; cout &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; &quot;gamarjobaT xalxooo!&quot; &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; endl; &lt;br /&gt; } &lt;br /&gt; კი ბატონო, დავწერეთ ფუნქცია, რომელსაც დანიშნულებაც მოვანიჭეთ, მაგრამ როგორ მოვახდინოთ მისი გამოძახება? როგორც ზემოთ ვთქვით, გამოძახებისას ვწერთ მხოლოდ ფუნქციის სახელს, თავისივე ფრჩხილების ( ) ჩათვლით და მორჩა. ჩაწერას ვახდენთ იმ ადგილას სადაც გვინდა, რომ ჩვენი მისალმება გამოჩნდეს. &lt;br /&gt; თუ შემოვიტანთ ჩვენი მაგალითის მთლიან სახეს, ვნახავთ შემდეგს, რომ ფუნქციის განსაზღვრას ვახდენთ თავში, კერძოდ კი main() ფუნქციის წინ, ხოლო გამოძახებას კი თვით ამ main() ფუნქციის ბლოკის არედან. &lt;br /&gt;&lt;br /&gt; #include &lt; iostream &gt; &lt;br /&gt;&lt;br /&gt; using namespace std; &lt;br /&gt;&lt;br /&gt; void misalmeba() &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; &quot;gamarjobaT xalxooo!&quot; &lt;&lt; endl; &lt;br /&gt; cout &lt;&lt; endl; &lt;br /&gt; } &lt;br /&gt; int main() &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; misalmeba(); &lt;br /&gt;&lt;br /&gt; return 0; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; როგორც ხედავთ არც თუ ისე ძნელი ყოფილა ფუნქციათა განსაზღვრა და მათი გამოძახება, მაგრამ ეს კიდევ დასაწყისია, ფუნქციები პროგრამირებაში უმნიშვნელოვანეს ადგილს იკავებენ, საჭიროა მათი საფუძვლიანად შესწავლა და მათი დახმარებით გვერწმუნეთ გადაჭრით თქვენთვის მნიშვნელოვან საკითხებს. &lt;br /&gt; ლექციის შემდეგ თავში ლაპარაკი გვექნება ფუნქციის პარამეტრებზე და მათ დანიშნულებაზე.</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-34-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 5 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-33-1</link>
			<pubDate>Thu, 09 Feb 2012 15:44:33 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: ციკლები და პირობითი ოპერატორები&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>თუკი რაიმე შეხება გვქონია რომელიმე პროგრამირების ენასთან, ყველგან არსებობს ციკლის და პირობის ოპერატორები, C++ შიც არის ასეთი მცნებები. განვიხილოთ ყველა ცალ ცალკე. &lt;br /&gt; 1. პირობის ოპერატორები: &lt;br /&gt;&lt;br /&gt; if() &lt;br /&gt;&lt;br /&gt; else &lt;br /&gt;&lt;br /&gt; 2. ციკლის ოპერატორები &lt;br /&gt; for () &lt;br /&gt;&lt;br /&gt; while() &lt;br /&gt;&lt;br /&gt; do while(); &lt;br /&gt;&lt;br /&gt; დავიწყოთ პირობის ოპერატორების განხილვით, რადგანაც ყველა ციკლი რაღაც პირობამდე სრულდება &lt;br /&gt; ოპერატორი IF() &lt;br /&gt; if() ოპერატორის ფრჩხილებში იწერება პირობა თუ რა უნდა დაკმაყოფილდეს რომ შეიძლებოდეს ოპერატორის შემდგომი კოდის რეალიზაცია &lt;br /&gt; თუკი პირობა სრულდება if ოპერატორს გადაეცემა მნიშვნელობა true, ყველა სხვა შემთხვევაში false; &lt;br /&gt; if(a &lt; b) //თუ პირველი ცვლადი ნაკლებია მეორეზე პირობა არის true თუ არა false &lt;br /&gt;&lt;br /&gt; if(a &gt; b) //თუ პირველი ცვლადი მეტია მეორეზე პირობა არის true თუ არა false &lt;br /&gt;&lt;br /&gt; if(a &lt;= b) //თუ პირველი ცვლადი ნაკლებია ან ტოლია მეორეზე პირობა არის true თუ არა false &lt;br /&gt;&lt;br /&gt; if(a &gt;= b) //თუ პირველი ცვლადი მეტია ან ტოლია მეორეზე პირობა არის true თუ არა false &lt;br /&gt;&lt;br /&gt; if(a == b) //თუ პირველი ცვლადი ტოლია მეორესი პირობა არის true თუ არა false &lt;br /&gt;&lt;br /&gt; if(a != b) //თუ პირველი ცვლადი არ უდრის მეორეს პირობა არის true თუ არა false &lt;br /&gt; if(bool cvladi romelic tolia an false an true) //თუ ცვლადს არა აქვს მნიშვნელობა true &lt;br /&gt;&lt;br /&gt; განვიხილოთ ბოლო მაგალითი; &lt;br /&gt; bool rafika = true; &lt;br /&gt;&lt;br /&gt; if(rafika) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; rafika =false; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; აქ რაკი ცვლადს აქვს მნიშვნელობა true, if ოპერატორიც მიიღებს მნიშვნელობას true და შესრულდება ოპერატორის ფიგურულ ფრჩხილებში განთავსებული მოქმედება, თუმცა თუკი მეორეთ მიმართავს პროგრამა ამ ბლოკს პირობა უკვე აღარ იქნება შესრულებული და ეს ბლოკი გამოიტოვება, თუ არ მოხდა ცვლადისათვის ისევ trues მინიჭება; არის საშუალება რომ false მნიშვნელობამ ცვლადისა გამოიწვიოს true მნიშვნელობის გადაცემა if ოპერატორში; მაგ; &lt;br /&gt; bool iden=false; &lt;br /&gt;&lt;br /&gt; if( ! iden) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; iden =true; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; ამ შემთხვევაში if ოპერატორი მიიღებს მნიშვნელობა trues რადგან ცვლადის წინ დაწერილი ძახილის ნიშანი განსაზღვრავს შემდეგ პირობას თუ ცვლადს არა აქვს მნიშვნელობა true მაშინ პირობა შესრულებულია. ანუ შემდეგი მიმართვისას (რაკი ფრჩხილებში ხდება ცვლადისთვის trues მინიჭება ) პირობა უკვე აღარ შესრულდება და ბლოკი გამოიტოვება. ოპერატორი else სრულდება იმ შემთხვევაში თუ if ოპერატორის პირობა არ სრულდება , მარტო else oპერატორი არ მუშაობს, იგი ყოველთვის თანმდევია if ოპერატორის. მაგ &lt;br /&gt; bool iden=false; &lt;br /&gt;&lt;br /&gt; int a=10, b=20; &lt;br /&gt;&lt;br /&gt; if( ! iden) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; iden =true; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; else &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; a=a+b; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; განვიხილოთ ციკლები თანმიმდევრობით &lt;br /&gt; დავიწყოთ for ით. ამ ოპერატორის მოქმედება სრულდება მანამ სანამ მისი მეორე წევრი რომელიც პირობაც არის არ შესრულდება; &lt;br /&gt; მისი სინტაქსისი; &lt;br /&gt; for(int i=0; i&lt;100; i++) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; moqmedeba romelic unda Sesruldes &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; პირველი წევრი როგორც უკვე ვიცით არის მთელი რიცხვი და მრიცხველის როლს ასრულებს , ციკლის მუშაობის დაწყებისას მოწმდება პირველი წევრი და შემდეგ საფეხურებზე მისი შემოწმება აღარ ხდება, მოწმდება მხოლოდ მეორე წევრის პირობა. რაც შეეხება მესამე წევრს ეს ახალი მცნებაა და ცოტა ფართოდ გავაშუქებთ; ორი პლუსი ცვლადის შემდეგ განაპირობებს ცვლადის ერთით გაზრდას ეს იგივეა რაც i=i+1; ამიტომ აუცილებელია თავიდან ცვლადს რაიმე მნიშვნელობა ჰქონდეს მიღებული, წინააღმდეგ შემთხვევაში არ მოხდება ცვლადის სიდიდის გაზრდა; მოქმედება შემდეგნაირად მიმდინარეობს; შემოწმდა პირობა და შემდეგ გაიზარდა ინკრემენტი ანუ ცვლადი i ; თუმცა არსებობს შემდეგი სინტაქსისიც ++i რაც იგივეს ნიშნავს მაგრამ აქ უკვე ჯერ სრულდება მომატება და შემდეგ მოწმდება პირობა; იგივე სინტაქსისი აქვს დეკრემენტს ოღონდ მინუს ნიშნით i-- ან --i და ნიშნავს i=i-1; &lt;br /&gt; მეორე ციკლის ოპერატორია while() &lt;br /&gt;&lt;br /&gt; while(ცვლადი ან პირობა) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; მოქმედება რომელიც უნდა შესრულდეს &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; აქ ციკლის ოპერატორი მუშაობს მანამ სანამ ცვლადი ან პირობა რომელიც ოპერატორის ბრჩხილებშია არ მიიღებენ მნიშვნელობას false &lt;br /&gt; განვიხილოთ ორი მაგალითი; &lt;br /&gt;&lt;br /&gt; 1) int a=0; &lt;br /&gt;&lt;br /&gt; int b=100; &lt;br /&gt;&lt;br /&gt; while(a &lt; b) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; a++; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; ციკლის დასაწყისში მოწმდება ორივე ცვლადის მნიშვნელობა და ეს ხდება ყოველი შემდგომი გამეორებისას, ჯერ მოწმდება პირობა (a &lt; b) და თუ პირობა სრულდება ციკლიც გრძელდება, რაც გამოიხატება იმაში რომ ფიგურულ ფრჩხილებში მოთავსებული მოქმედება შესრულდება, ცვლადს მოემატება ერთი და ისევ შემოწმდება პირობა, ასე გაგრძელდება მანამ სანამ ოპერატორში მოცემული პირობა არ დაირღვევა; მრიცხველის დაყენება იმითია ნაკარნახევი რომ თუ არ იქნება მრიცხველი და ეს ეხება ამ კონკრეტულ შემთხვევას, მაშინ ციკლი უსასრულოდ გაგრძელდება და გამოიწვევს სისტემის დაკიდებას; &lt;br /&gt; 2) bool soo=true; &lt;br /&gt;&lt;br /&gt; int a=10; &lt;br /&gt;&lt;br /&gt; while(soo) &lt;br /&gt;&lt;br /&gt; {&gt;BR&gt; &lt;br /&gt; if(a == 120) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; soo=false; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; a++; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; ეს ის შემთხვევაა როცა ციკლი ტრიალებს მანამ სანამ ცვლადი truea და თან ყოველი შემდგომი ციკლის დროს ამოწმებს ორივე პირობას, როგორც კი soo გახდება false ციკლი მაინც მოუმატებს a - ს ერთს და დაასრულებს თავის მოქმედებას. თუმცა არსებობს ციკლის ხელოვნური გაწყვეტის ოპერატორიც რომელიც რეზერვირებულია ტრანსლიატორში. ეს არის Break; განვიხილოთ იგივე მაგალითზე; &lt;br /&gt; bool soo=true; &lt;br /&gt;&lt;br /&gt; int a=10; &lt;br /&gt;&lt;br /&gt; while(1) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; if(a == 120) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; soo=false; &lt;br /&gt;&lt;br /&gt; break; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; a++; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt; ამ დროს შეიძლება ციკლის პირობა საეთოდ არ არსებობდეს ან უბრალოდ ფრჩხილებში ჩაიწეროს რიცხვი ერთი რაც უსასრულო ციკლს მოგვცემს; &lt;br /&gt; შემდეგი ციკლია do while &lt;br /&gt;&lt;br /&gt; int a=6; &lt;br /&gt;&lt;br /&gt; do &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; a=a+3; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; while(a &lt; 5) &lt;br /&gt; ამ შემთხვევაში ჯერ სრულდება ციკლის შიდა ნაწილი ხოლო შემდეგ მოწმდება პირობა, ჩვენს შემთხვევაში ეს ციკლი ერთხელ მაინც შესრულდება რადგანაც დასწყისშივე პირობა დარღვეულია, ცვლადს მაინც მოემატება სამი და დასრულდება; ყოველივე ზემოთ განხილულის უკეთ დასანახად გამოიძახეთ ხელახლა ჩვენი პროექტი, რომელიც განვიხილეთ თემაში &apos;პირველი მაგალითის ნაირი&apos; გახსენით იგი და შეიყვანეთ შემდეგი კოდი; &lt;br /&gt; cout&lt;&lt;&quot;////////////////////////////////////////////////////////////////////////////////&quot; &lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; int afo=20; &lt;br /&gt;&lt;br /&gt; for(int x=0; x &lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; if( x == 15) &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; cout&lt;&lt;&quot;SRULDEBA IF (x == 15) PIROBA x = &quot; &lt;&lt; x &lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; else &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; &quot;mimdinareobs ciklis - &quot; &lt;&lt; x &lt;&lt; &quot; - safexuri &amp;#92;n&quot;; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; cout&lt;&lt;&quot;////////////////////////////////////////////////////////////////////////////////&quot;&lt;&lt; endl; &lt;br /&gt;&lt;br /&gt; ამით დავამთავრებ ციკლებთან მუშაობას რადგანაც წინ კიდევ ბევრჯერ მოგვიწევს მათთან შეხება, უფრო მეტ კომბინაციებს უკვე პრაქტიკულ სავარჯიშოებზე გამოვცდით; რაც შეეხება cout და endl ფუნქციებს მათ შესახებ არ ვწერ დაწვრილებით რადგანაც ეს ფუნქციები მხოლოდ პროგრამის ტესტირებისათვისაა მოსახერხებელი, ისინი შემდგომ ეტაპებზე დაკარგავენ თავიანთ აქტუალობას და აღარც გაგვახსენდება; პროგრამა დოსის ფანჯარაში მიმდინარეობს მაგრამ ეს მთლად დოსი არ არის რადგანაც ეს პროგრამები მხოლოდ ვინდოუსიდან ეშვებიან, და ეს ფუნქციებიც მხოლოდ დოსისთვისაა განკუთვნილი;</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-33-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 4 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-32-1</link>
			<pubDate>Thu, 09 Feb 2012 15:43:31 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: მასივები&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>მასივები ერთ-ერთი ფუნდამენტალური მცნებაა პროგრამირების სამყაროში, ეს არის მეხსიერების ბლოკების(ბაიტების) თანმიმდევრული გამოყოფა. როგორც ვიცით (და თუ არ ვიცით ეხლა გავიგებთ) წინა თემებიდან ოპერატორის მეშვეობით შეგვიძლია გამოვაცხადოთ ცვლადი რომელიც მეხსიერებაში რაღაც ადგილს დაიკავებს, ყოველი შემდგომი ცვლადის გამოცხადებისას ჩვენ არა გვაქვს გარანტია რომ ცვლადები რომლებიც გამოვაცხადეთ, ერთმანეთის მიყოლებით განლაგდებიან მეხსიერებაში, და თუკი დაგვჭირდება მეხსიერებიდან ამ ცვლადების წაკითხვა ჩვენ უნდა სახელებით მივმართოთ მათ, სხვანაირად მათი მოძებნა შეუძლებელია. მასივი ამ მხრივ უნიკალურია რადგანაც ყოველი ცვლადი რომელიც მასივში იქნება, გარანტირებულად ერთმანეთის მიყოლებით იქნება მეხსიერებაში ჩაწერილი და მეხსიერებიდან შეიძლება ასევე მიმდევრობით წაკითხვა; მასივი შეიძლება არსებობდეს ნებისმიერი ტიპის; &lt;br /&gt; მაგ &lt;br /&gt; int masivi [10]; // int არის ოპერატორი რომელიც განსაზღვრავს რომ მასივი რომელიც გამოიყოფა და ჩვენს შემთხვევაში მასივს ქვია masivi მის თითოეულ წევრს ექნება 4 ბაიტის სიდიდე. აქ გამოყოფილი არის 10 წევრიანი მასივი(ანუ 10 არის მასივის სიგრძე) და თითოეული წევრის სიდიდე ოთხი ბაიტია; &lt;br /&gt; ჩვენ შეგვიძლია მის თითოეულ წევრს ცალცალკე მივანიჭოთ მნიშვნელობა &lt;br /&gt; მაგ: &lt;br /&gt; masivi[2] = 18; &lt;br /&gt;&lt;br /&gt; masivi[0]=100; &lt;br /&gt;&lt;br /&gt; masivi [5]=20; &lt;br /&gt;&lt;br /&gt; masivi [9]=43; &lt;br /&gt;&lt;br /&gt; masivi [10]=234; //EROR!!! &lt;br /&gt;&lt;br /&gt; საგულისხმოა ერთი რამ რომ , თუმცა მასივის სიგრძე 10 ის ტოლია ჩვენ არშეგვიძლია მივმართოთ მასივის მე 10 ელემენტს, რადგანაც მასივის ათვლა იწყება 0 დან და ამიტომაც მისი ბოლო წევრი არის მეათ ელემენტი ინდექსით 9; თუმცა მასივის გამოცხადებისას რიცხვი 10 განსაზღვრავს მასივის სიგრძეს მინიჭებისას ოთხკუთხედ ფრჩხილებში მოთავსებული რიცხვები უკვე მიუთითებენ არა სიგრძეს არამედ ინდექსს თუ მასივის რომელ წევრთან ხდება მოქმედება; &lt;br /&gt; განვიხილოთ ტექსტური მასივი; &lt;br /&gt; char TeMas[20]; // char არის ოპერატორი რომელიც განსაზღვრავს რომ მასივი რომელიც გამოიყოფა და ჩვენს შემთხვევაში მასივს ქვია TeMas მის თითოეულ წევრს ექნება 1 ბაიტის სიდიდე. აქ გამოყოფილი არის 20 წევრიანი მასივი(ანუ 20 არის მასივის სიგრძე) და თითოეული წევრის სიდიდე ერთი ბაიტია; &lt;br /&gt; განსხვავებით სხვა მასივებისა, რომლებიც რიცხვებთან სამუშაოთაა განკუთვნილი, char მასივების ინიციალიზაცია (ანუ მნიშვნელობის მინიჭება) გამოცხადებისთანავეა შესაძლებელი; გამოვიყენებ იგივე მასივს; &lt;br /&gt; char TeMas[20]=&quot;Hello C++&quot;; //მართალია მასივი 20 ბაიტიანია მაგრამ ჩვენ მხოლოდ 9 ბაიტი შევავსეთ, თითოეული ასო მეხსიერებაში იკავებს 1 ბაიტს. ცხრა ბაიტის შემდეგ ისე რომ ჩვენ არც ვიცით თავისთავად ეწერება დასასრულის აღმნიშვნელი &amp;#92;0. ეს ხდება იმ მიზეზით რომ წაკითხვისას წაკითხული იქნეს მხოლოდ მეხსიერების ის ნაწილი რომელიც შევსებულია და დანარჩენი იგნორირებული იქნება. აუცილებელი პირობაა ტექსტის ბრჭყალებში მოთავსება, სხვანაირად ტრანსლიატორისთვის გაუგებარი ხდება მინიჭების მოქმედება. &lt;br /&gt; ისევე როგორც სხვა მასივებში აქაც არის საშუალება რომ ცალცალკე მივანიჭოთ მნიშვნელობა მასივის წევრებს &lt;br /&gt; TeMas[0] = &quot;H&quot;; &lt;br /&gt;&lt;br /&gt; TeMas[1]=&quot;e&quot;; &lt;br /&gt;&lt;br /&gt; TeMas[2]=&quot;l&quot;; &lt;br /&gt;&lt;br /&gt; TeMas[3]=&quot;l&quot;; &lt;br /&gt;&lt;br /&gt; TeMas[4]=&quot;o&quot;; &lt;br /&gt;&lt;br /&gt; TeMas[5]=&quot; &quot;; &lt;br /&gt; და ასე შემდეგ. &lt;br /&gt; მართალია ჩვენი მასივი თავიდანვე 20 ბაიტი გამოვყავით და აქედან მხოლოდ 9 ბაიტი შევავსეთ, სინამდვილეში 10 ბაიტია შევსებული. მეათე არის დასასრულის ნიშანი &quot;&amp;#92;0&quot;. თუკი ჩვენ გამოვყოფდით აი ასე ; &lt;br /&gt; char TeMas[9]=&quot;Hello C++&quot;; // თითქოს გამართლებულია რომ გვაქვს 9 სიმბოლო და ამიტომაც 9 ბაიტი მოვითხოვეთ, მაგრამ ტრანსლიატორი შეცდომას აფიქსირებს რადგანაც არ რჩება ადგილი დასასრულის აღმნიშვნელი სიმბოლოსათვის: &lt;br /&gt;&lt;br /&gt; ისეთი შემთხვევებისათვის როცა არა აქვს მნიშვნელობა მასივის სიგრძეს, შეგვიძლია გამოვაცხადოთ მასივი წინასწარ განსაზღვრული სიდიდით, რომელიც ტრანსლიაციის დროს შემოწმდება და გამოიყოფა იმხელა მეხსიერება რამდენი სიმბოლოც არის ტოლობის შემდეგ. ამ სახის მასივი გამოცხადებისთანავე უნდა იქნეს ინიცირებული, მისი დინამიური ინიციალიზაცია არ მოხდება. მაგ: &lt;br /&gt; char TeMas[ ] =&quot;gamarjoba Cemo Tbilis qalaqo&quot;; &lt;br /&gt; როდესაც არანაირი მანიპულაციების ჩატარება არ იგეგმება ტექსტურ მასივთან და უბრალოდ ეკრანზე გამოსაყვანად გვჭირდება მასივი, მაშნ მიზანშეწონილია ამ სახით მასივის გამოცხადება, თუმცა არც ეს მასივია ურიგო მანიპულაციებისთვის, რასაც შემდეგ თავებში გავარკვევთ; ტექსტური მასივების გარდა ყველა სხვა დანარჩენი მასივები შეიძლება განხილულ იქნას ერთ ჯგუფში, ამიტომ ყველაზე ცალ ცალკე აღარ შევჩერდები; &lt;br /&gt; არაფრის შეცვლა არ არის საჭირო, ბოლო ხაზის შემდეგ დავწეროთ ეს კოდი &lt;br /&gt; cout &lt; &lt;&quot;/////////////////////////////////////////////////////////////////////////////////////////////////////////////////&quot;&lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; int array[10]; &lt;br /&gt;&lt;br /&gt; double darray[5]; &lt;br /&gt;&lt;br /&gt; char TextMas[20]; &lt;br /&gt;&lt;br /&gt; char Text2[]=&quot;ganusazgvreli sididis masivi&quot;; &lt;br /&gt;&lt;br /&gt; array[0]=10; &lt;br /&gt;&lt;br /&gt; array[1]= 15; &lt;br /&gt;&lt;br /&gt; array[8]=25; &lt;br /&gt;&lt;br /&gt; darray[2]=9.27; &lt;br /&gt;&lt;br /&gt; darray[1]=23.5; &lt;br /&gt;&lt;br /&gt; darray[4]=22.87; &lt;br /&gt;&lt;br /&gt; flomas[2]=22.987; &lt;br /&gt;&lt;br /&gt; flomas[8]=12.55; &lt;br /&gt;&lt;br /&gt; flomas[0]=10; &lt;br /&gt;&lt;br /&gt; TextMas[0]=&apos;I&apos;; &lt;br /&gt;&lt;br /&gt; TextMas[1]=&apos;L&apos;; &lt;br /&gt;&lt;br /&gt; TextMas[2]=&apos;I&apos;; &lt;br /&gt;&lt;br /&gt; TextMas[3]=&apos;A&apos;; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;1.int masivis pirveli elementi = &quot;&lt; &lt; array[0 ] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;2.int masivis meore elementi = &quot; &lt;&lt; array[1 ]&lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;3.int masivis meSvide elementi = &quot; &lt; &lt; array[8] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; array[2]=array[0] + array[8] *array[1]; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;4.int masivis mesame elementi = &quot; &lt; &lt; array[2] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;5.double masivis mesame elementi = &quot; &lt; &lt; darray[2] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;6.double masivis meore elementi = &quot; &lt; &lt; darray[1] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;7.double masivis mexuTe elementi = &quot; &lt; &lt; darray[4] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; darray[0]=(darray[2] + darray[4] )/(darray[1] + 30.76); &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;8.double masivis pirveli elementi = &quot; &lt; &lt; darray[0] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;9.char masivis pirveli elementi = &quot; &lt; &lt; TextMas [0] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;10.char masivis meore elementi = &quot; &lt; &lt; TextMas [1] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;11.char masivis mesame elementi = &quot; &lt; &lt; TextMas [2] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;12.char masivis meotxe elementi = &quot; &lt; &lt; TextMas [3] &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; cout &lt; &lt; &quot;13.ganusazgvreli masivi = &quot;&lt; &lt; Text2 &lt; &lt; endl;</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-32-1</guid>
		</item>
		<item>
			<title>C ++ დამწყებებს- 3 გაკვეთილი</title>
			<link>http://none.ucoz.lv/forum/28-31-1</link>
			<pubDate>Thu, 09 Feb 2012 15:42:18 GMT</pubDate>
			<description>Forum: &lt;a href=&quot;http://none.ucoz.lv/forum/28&quot;&gt;C ++&lt;/a&gt;&lt;br /&gt;Thread description: პირველი პროგრამის ნაირი&lt;br /&gt;Thread starter: DL1MP1K&lt;br /&gt;Last message posted by: DL1MP1K&lt;br /&gt;Number of replies: 0</description>
			<content:encoded>იმისათვის რომ უფრო თვალნათლივ დავინახოთ ოპერატორების მიერ გამოყოფილი ადგილის სიდიდეები გავაკეთოთ პატარა პროგრამა. გაუშვათ visual studio და მენიუ file ავირჩიოთ new გამოჩნდება ფანჯარა კონსტრუქტორების ჩამონათვალით . &lt;br /&gt;&lt;br /&gt; მოვნიშნოთ Win32 Console Aapplication და მინიშნებულ ადგილას დავარქვათ რამე ჩვენ პროექტს , როგორც ჩემს შემთხვევაში MyProg , ქვედა ფანჯარაში ავირჩიოთ ლოკაციის ადგილი თუ სად შეიქმნას დირექტორია რომელშიც ჩვენი პროექტი განთავსდება. არჩეულ ადგილას შეიქმნება ახალი საქაღალდე იმავე სახელით რაც პროექტს დავარქვით ანუ MyProg . ყველა მოთხოვნის შემდეგ ღილაკი OK და კონსტრუქტორი შემოგვთავაზებს პროგრამის ტიპის არჩევას ამ ფანჯარაში არაფრის შეცვლა არ არის საჭირო უბრალოდ დავასრულოთ ღილაკი FINISH ით პროექტის შექმნა. კონსტრუქტორი გვიპატაკებს რომ შექმნის მარტო პროექტს და დანარჩენი თქვენ იცითო, ჩვენც არ ვეკამათებით და ვეთანხმებით, სხვანაირად არაფერი არ გამოვა. ბოლოსდა ბოლოს პროექტი შექმნილია მაგრამ მასში არაფრის გაკეთება არ შეიძლება რადგანაც დასამატებელია ფაილი რომელშიც კოდი უნდა ჩაიწეროს. &lt;br /&gt; ამიტომაც მენიუ Project -ში ვირჩევთ პუნქტს Add Tu project -&gt; New რის შემდეგაც გამოჩნდება ფაილთა სია რომლის დამატებაც შესაძლებელია პროექტში &lt;br /&gt;&lt;br /&gt; მოვნიშნავთ C++ Source File და ფანჯარაში File name ვარქმევთ ფაილს სახელს რაც მოგვეხასიათდება. ვადასტურებთ ყოველივე ჩვენს მიერ ჩადენილს და ფაილი პროექტში გამოჩნდება აი ასე &lt;br /&gt;&lt;br /&gt; მართალია პროექტს ფაილი დავუმატეთ მაგრამ სამწუხაროა რომ ფაილში არაფერი არ წერია . თუ არ ჩავწერეთ არც ჩაიწერება. ჩვენც ვიწყებთ წერას. &lt;br /&gt; მაკროპროცესორი # include განაპირობებს მის შემდეგ მითითებული ფაილის ჩართვას ტრანსილირებულ ტექსტში. მისი სინტაქსია; &lt;br /&gt; # include &lt; iostream.h &gt; &lt;br /&gt; //ამ შემთხვევაში მიცემულია ფაილი რომელიც visual studios სპეციალურად განკუთვნილ საქაღალდეშია მოთავსებული ამ საქაღალდესაც იგივე სახელი აქვს რაც მაკროპროცესორს და მისი ნახვა შეიძლება visual studios პროგრამფაილების საქაღალდეში ასეთი ფრჩხილების გაკეთება თავისთავად მიანიშნებს იმაზე რომ პროექტსი ჩართულია სათაო ფაილი ( header File) visual studios სისტემიდან &lt;br /&gt; # include &quot;MyClass.h&quot;// ამ სახით ჩართული ფაილი შეიძლება იყოს როგორც visual studios სისტემიდან ასევე საკუთარი, ჩვენს მიერ შექმნილი სათაო ფაილი იმ შემთხვევაში თუ ის ფაილი რომელსაც მაკროპროცესორის შემდეგ ვწერთ იმყოფება იმავე საქაღალდეში რომელშიც ტრანსლირებული პროექტია მოთავსებული(ეს არ ეხება visual studios ფაილებს), სხვა შემთხვევაში უნდა მიეთითოს მთლიანი გზა ფაილამდე თუკი იგი სხვა საქაღალდიდან არის ჩართული. &lt;br /&gt; მას შემდეგ რაც ფაილი დავამატეთ პროექტს უკვე შეგვიძლია ჩავწეროთ მაკროპროცესორი რათა მისახწევი გახდეს იმ ფუნქციათა გამოყენება რომელიც ვიზუალ სტუდიოს სტანდარტულ ბიბლიოთეკაშია რეალიზებული. &lt;br /&gt; #include &lt; iostream.h &gt; &lt;br /&gt; void main() &lt;br /&gt;&lt;br /&gt; { &lt;br /&gt;&lt;br /&gt; cout &lt;&lt;&quot; &amp;#92;t&amp;#92;t**************** HELOO C++ **************** &quot;&lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; int a=0,B; &lt;br /&gt;&lt;br /&gt; char Tx=&apos;s&apos;; &lt;br /&gt;&lt;br /&gt; double Doi=8.9; &lt;br /&gt;&lt;br /&gt; float mani=10.45; &lt;br /&gt;&lt;br /&gt; B=sizeof(Tx); &lt;br /&gt;&lt;br /&gt; cout&lt;&lt;&quot;char mexsierebaSi ikavebs --- &quot;&lt; &lt; B &lt; &lt;&quot; baits &quot;&lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; B=sizeof(a); &lt;br /&gt;&lt;br /&gt; cout &lt;&lt;&quot;Int mexsierebaSi ikavebs --&quot;&lt; &lt; B &lt; &lt;&quot; baits&quot; &lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; B=sizeof(Doi); &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; &quot;double mexsierebaSi ikavebs --- &quot;&lt; &lt; B &lt; &lt;&quot; baits&quot;&lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; B=sizeof(mani); &lt;br /&gt;&lt;br /&gt; cout &lt;&lt; &quot;float mexsierebaSi ikavebs --- &quot;&lt; &lt; B &lt; &lt;&quot; baits&quot;&lt; &lt; endl; &lt;br /&gt;&lt;br /&gt; } &lt;br /&gt;&lt;br /&gt; მივყვეთ და განვიხილოთ კოდი ნაბიჯ-ნაბიჯ. პირველ ხაზში ჩავრთეთ სათაო ფაილი რომელშიც რეალიზებულია ეკრანზე გამოყვანის ფუნქციები აქედან მაქვს საშუალება გამოვიყენო ფუნქცია cout&lt;&lt; ამის გარდა კიდევ ბევრი ფუნქციაა რეალიზებული ამ სათაო ფაილში მაგრამ მე ჯერ სხვა არ მჭირდება. შემდეგ ხაზში იწყება პროგრამა ფუნქცია main() როგორც მისი დასახელებიდანაც ჩანს არის მთავარი ფუნქცია, იგი გლობალურია და რაიმე სათაო ფაილს არ მოითხოვს, მისი მოქმედება იწყება გახსნილი ფიგურული ფრჩხილიდან და მთავრდება დახურულ ფრჩხილთან. შეიძლებოდა უბრალოდ დაგვეწერა მარტო ფუნქცია მაინი თავისი ფრჩხილებით და პროგრამა უკვე გაეშვებოდა თუმცა არაფერს არ გააკეთებდა. შემდეგ ხაზში უბრალოდ გამოგვყავს მისალმება სუფთა ესთეთიკური თვალსაზრისით. როგორც ხედავთ ტექსტი ბრჭყალებშია მოთავსებული რაც მის უცვლელად გამოყვანის გარანტიაა და თანაც ბრჭყალების გარეშე იგი არ აღიქმება ტრანსლიატორის მიერ როგორც ტექსტი. ტექსტის თავში &amp;#92;t&amp;#92;t გაკეთებულია ტაბულაციის მიზნით რათა ტექსტი მარცხენა კიდედან ეკრანის ცენტრისკენ გადმოადგილდეს, ბოლო სიტყვა endl - ს მიზანია კურსორის შემდეგ ხაზზე გადმოტანა , წინააღმდეგ შემთხვევაში ყველა ტექსტი ერთ ხაზზე გამოვიდოდა რაც მაინცდამაინც ლამაზი არ იქნებოდა. შემდეგი ხაზიდან იწყება ცვლადების გამოცხადება, ოპერატორის შემდეგ შეიძლება ცვლადების ჩამონათვალი გაკეთდეს, ოღონდ ისინი ერთმანეთისაგან მძიმით უნდა გამოიყოს. ცვლადების გამოცხადების ბოლოს აუცილებლად უნდა დაისვას წერტილ მძიმე რომელსაც ცარიელი ოპერატორი ქვია და ყოველი გამოცხადების ბოლოში ისმევა. ასევე გლობალური ფუნქცია B=sizeof(ცვლადი) არ საჭიროებს რაიმე სათაო ფაილს . მისი მიზანია გაზომოს მის ფრჩხილებში მოთავსებბული ცვლადის სიდიდე მეხსიერებაში და აბრუნებს მთელ რიცხვს ცვლადის ზომას ბაიტებში, ამიტომაც იგი int ს გაუტოლე , ყოველი გამოძახების შემდეგ B ს მნიშვნელობა გამოგვყავს ეკრანზე.</content:encoded>
			<category>C ++</category>
			<dc:creator>DL1MP1K</dc:creator>
			<guid>http://none.ucoz.lv/forum/28-31-1</guid>
		</item>
	</channel>
</rss>