DL1MP1K | Date: ხუთშაბათი, 2012-02-09, 7:44 PM | Message # 1 |
Lieutenant colonel
Group: VIP
Messages: 77
Awards: 0
Reputation: 1
Status: გასული
| თუკი რაიმე შეხება გვქონია რომელიმე პროგრამირების ენასთან, ყველგან არსებობს ციკლის და პირობის ოპერატორები, C++ შიც არის ასეთი მცნებები. განვიხილოთ ყველა ცალ ცალკე. 1. პირობის ოპერატორები:
if()
else
2. ციკლის ოპერატორები for ()
while()
do while();
დავიწყოთ პირობის ოპერატორების განხილვით, რადგანაც ყველა ციკლი რაღაც პირობამდე სრულდება ოპერატორი IF() if() ოპერატორის ფრჩხილებში იწერება პირობა თუ რა უნდა დაკმაყოფილდეს რომ შეიძლებოდეს ოპერატორის შემდგომი კოდის რეალიზაცია თუკი პირობა სრულდება if ოპერატორს გადაეცემა მნიშვნელობა true, ყველა სხვა შემთხვევაში false; if(a < b) //თუ პირველი ცვლადი ნაკლებია მეორეზე პირობა არის true თუ არა false
if(a > b) //თუ პირველი ცვლადი მეტია მეორეზე პირობა არის true თუ არა false
if(a <= b) //თუ პირველი ცვლადი ნაკლებია ან ტოლია მეორეზე პირობა არის true თუ არა false
if(a >= b) //თუ პირველი ცვლადი მეტია ან ტოლია მეორეზე პირობა არის true თუ არა false
if(a == b) //თუ პირველი ცვლადი ტოლია მეორესი პირობა არის true თუ არა false
if(a != b) //თუ პირველი ცვლადი არ უდრის მეორეს პირობა არის true თუ არა false if(bool cvladi romelic tolia an false an true) //თუ ცვლადს არა აქვს მნიშვნელობა true
განვიხილოთ ბოლო მაგალითი; bool rafika = true;
if(rafika)
{
rafika =false;
} აქ რაკი ცვლადს აქვს მნიშვნელობა true, if ოპერატორიც მიიღებს მნიშვნელობას true და შესრულდება ოპერატორის ფიგურულ ფრჩხილებში განთავსებული მოქმედება, თუმცა თუკი მეორეთ მიმართავს პროგრამა ამ ბლოკს პირობა უკვე აღარ იქნება შესრულებული და ეს ბლოკი გამოიტოვება, თუ არ მოხდა ცვლადისათვის ისევ trues მინიჭება; არის საშუალება რომ false მნიშვნელობამ ცვლადისა გამოიწვიოს true მნიშვნელობის გადაცემა if ოპერატორში; მაგ; bool iden=false;
if( ! iden)
{
iden =true;
} ამ შემთხვევაში if ოპერატორი მიიღებს მნიშვნელობა trues რადგან ცვლადის წინ დაწერილი ძახილის ნიშანი განსაზღვრავს შემდეგ პირობას თუ ცვლადს არა აქვს მნიშვნელობა true მაშინ პირობა შესრულებულია. ანუ შემდეგი მიმართვისას (რაკი ფრჩხილებში ხდება ცვლადისთვის trues მინიჭება ) პირობა უკვე აღარ შესრულდება და ბლოკი გამოიტოვება. ოპერატორი else სრულდება იმ შემთხვევაში თუ if ოპერატორის პირობა არ სრულდება , მარტო else oპერატორი არ მუშაობს, იგი ყოველთვის თანმდევია if ოპერატორის. მაგ bool iden=false;
int a=10, b=20;
if( ! iden)
{
iden =true;
}
else
{
a=a+b;
} განვიხილოთ ციკლები თანმიმდევრობით დავიწყოთ for ით. ამ ოპერატორის მოქმედება სრულდება მანამ სანამ მისი მეორე წევრი რომელიც პირობაც არის არ შესრულდება; მისი სინტაქსისი; for(int i=0; i<100; i++)
{
moqmedeba romelic unda Sesruldes
} პირველი წევრი როგორც უკვე ვიცით არის მთელი რიცხვი და მრიცხველის როლს ასრულებს , ციკლის მუშაობის დაწყებისას მოწმდება პირველი წევრი და შემდეგ საფეხურებზე მისი შემოწმება აღარ ხდება, მოწმდება მხოლოდ მეორე წევრის პირობა. რაც შეეხება მესამე წევრს ეს ახალი მცნებაა და ცოტა ფართოდ გავაშუქებთ; ორი პლუსი ცვლადის შემდეგ განაპირობებს ცვლადის ერთით გაზრდას ეს იგივეა რაც i=i+1; ამიტომ აუცილებელია თავიდან ცვლადს რაიმე მნიშვნელობა ჰქონდეს მიღებული, წინააღმდეგ შემთხვევაში არ მოხდება ცვლადის სიდიდის გაზრდა; მოქმედება შემდეგნაირად მიმდინარეობს; შემოწმდა პირობა და შემდეგ გაიზარდა ინკრემენტი ანუ ცვლადი i ; თუმცა არსებობს შემდეგი სინტაქსისიც ++i რაც იგივეს ნიშნავს მაგრამ აქ უკვე ჯერ სრულდება მომატება და შემდეგ მოწმდება პირობა; იგივე სინტაქსისი აქვს დეკრემენტს ოღონდ მინუს ნიშნით i-- ან --i და ნიშნავს i=i-1; მეორე ციკლის ოპერატორია while()
while(ცვლადი ან პირობა)
{
მოქმედება რომელიც უნდა შესრულდეს
} აქ ციკლის ოპერატორი მუშაობს მანამ სანამ ცვლადი ან პირობა რომელიც ოპერატორის ბრჩხილებშია არ მიიღებენ მნიშვნელობას false განვიხილოთ ორი მაგალითი;
1) int a=0;
int b=100;
while(a < b)
{
a++;
} ციკლის დასაწყისში მოწმდება ორივე ცვლადის მნიშვნელობა და ეს ხდება ყოველი შემდგომი გამეორებისას, ჯერ მოწმდება პირობა (a < b) და თუ პირობა სრულდება ციკლიც გრძელდება, რაც გამოიხატება იმაში რომ ფიგურულ ფრჩხილებში მოთავსებული მოქმედება შესრულდება, ცვლადს მოემატება ერთი და ისევ შემოწმდება პირობა, ასე გაგრძელდება მანამ სანამ ოპერატორში მოცემული პირობა არ დაირღვევა; მრიცხველის დაყენება იმითია ნაკარნახევი რომ თუ არ იქნება მრიცხველი და ეს ეხება ამ კონკრეტულ შემთხვევას, მაშინ ციკლი უსასრულოდ გაგრძელდება და გამოიწვევს სისტემის დაკიდებას; 2) bool soo=true;
int a=10;
while(soo)
{>BR> if(a == 120)
{
soo=false;
}
a++;
} ეს ის შემთხვევაა როცა ციკლი ტრიალებს მანამ სანამ ცვლადი truea და თან ყოველი შემდგომი ციკლის დროს ამოწმებს ორივე პირობას, როგორც კი soo გახდება false ციკლი მაინც მოუმატებს a - ს ერთს და დაასრულებს თავის მოქმედებას. თუმცა არსებობს ციკლის ხელოვნური გაწყვეტის ოპერატორიც რომელიც რეზერვირებულია ტრანსლიატორში. ეს არის Break; განვიხილოთ იგივე მაგალითზე; bool soo=true;
int a=10;
while(1)
{
if(a == 120)
{
soo=false;
break;
}
a++;
} ამ დროს შეიძლება ციკლის პირობა საეთოდ არ არსებობდეს ან უბრალოდ ფრჩხილებში ჩაიწეროს რიცხვი ერთი რაც უსასრულო ციკლს მოგვცემს; შემდეგი ციკლია do while
int a=6;
do
{
a=a+3;
}
while(a < 5) ამ შემთხვევაში ჯერ სრულდება ციკლის შიდა ნაწილი ხოლო შემდეგ მოწმდება პირობა, ჩვენს შემთხვევაში ეს ციკლი ერთხელ მაინც შესრულდება რადგანაც დასწყისშივე პირობა დარღვეულია, ცვლადს მაინც მოემატება სამი და დასრულდება; ყოველივე ზემოთ განხილულის უკეთ დასანახად გამოიძახეთ ხელახლა ჩვენი პროექტი, რომელიც განვიხილეთ თემაში 'პირველი მაგალითის ნაირი' გახსენით იგი და შეიყვანეთ შემდეგი კოდი; cout<<"////////////////////////////////////////////////////////////////////////////////" << endl;
int afo=20;
for(int x=0; x {
if( x == 15)
{
cout<<"SRULDEBA IF (x == 15) PIROBA x = " << x << endl;
}
else
{
cout << "mimdinareobs ciklis - " << x << " - safexuri \n";
}
}
cout<<"////////////////////////////////////////////////////////////////////////////////"<< endl;
ამით დავამთავრებ ციკლებთან მუშაობას რადგანაც წინ კიდევ ბევრჯერ მოგვიწევს მათთან შეხება, უფრო მეტ კომბინაციებს უკვე პრაქტიკულ სავარჯიშოებზე გამოვცდით; რაც შეეხება cout და endl ფუნქციებს მათ შესახებ არ ვწერ დაწვრილებით რადგანაც ეს ფუნქციები მხოლოდ პროგრამის ტესტირებისათვისაა მოსახერხებელი, ისინი შემდგომ ეტაპებზე დაკარგავენ თავიანთ აქტუალობას და აღარც გაგვახსენდება; პროგრამა დოსის ფანჯარაში მიმდინარეობს მაგრამ ეს მთლად დოსი არ არის რადგანაც ეს პროგრამები მხოლოდ ვინდოუსიდან ეშვებიან, და ეს ფუნქციებიც მხოლოდ დოსისთვისაა განკუთვნილი;
მიზანი ამართლებას საშუალებას ! ვინც ეძებს ის პოულობს : http://therealgta.ucoz.com ითამაშე ფლეშ თამაშები : http://gamesforboys.in
|
|
| |