Wednesday, June 24, 2015

თავი 5 (5,1 - 5,3)



                           თავი 5
                                           განმეორება


5.1 ცვლადების განახლება



ტოლობის ზოგადი ნიმუშია, როცა გატოლება ცვლადს ანახლებს - სადაც ცვლადის ახალი მნიშვნელობა დამოკიდებულია ძველ მნიშვნელობაზე.

x = x + 1

ეს ნიშნავს "აიღე x - ს მნიშვნელობა დაუმატე ერთი და განაახლე x ახალი მნიშვნელობით."  თუ ცდი რომ განაახლო ისეთი ცვლადი, რომელიც არ არსებობს, მიიღებ შეცდომას, იმიტომ რომ პითონი ითვლის მარჯვენა ნაწილს სანამ x - ს გაუტოლებს.

>>> x = x + 1
NameError: name 'x' is not defined

ცვლადს ჯერ მნიშვნელობა უნდა მიანიჭო და შემდეგ შეგეძლება განაახლო.

>>> x = 0
>>> x = x + 1

ცვლადის განახლებას ერთის დამატებით ჰქვია "ზრდა" (an increment) და ერთის გამოკლებით - "კლება" (a decrement.)

5.2  while ბრძანება

კომპიუტერები ხშირად იყენებენ ავტომატურად განმეორებად დავალებებს. იდენტური ან მსგავსი დავალებების გამეორება შეცდომის გარეშე კომპიუტერისთვის ადვილია, ადამიანისთვის კი უხეირო. პითონი უზრუნველყოფილია რამდენიმე ენის მახასიათებლებით, რომ განმეორებები გააკეთოს  ადვილად.
პითონში გამეორების ერთ - ერთი ფორმაა while ბრძანება. აქაა მარტივი პროგრამა რომელიც უკუღმა თვლის ხუთიდან და ამბობს Blastoff!”.

n = 5
while n > 0:
      print n
      n = n - 1
print 'Blastoff!'

შეგიძლია წაიკითხო while  ბრძანება ინგლისურად.  ეს ნიშნავს;  while(სანამ) n მეტია ნულზე, გამოსახე n - ის მნიშვნელობა და მოაკელი 1. როცა მიიღებ ნულს, while  ბრძანება მორჩება და გამოსახავს სიტყვას 'Blastoff!'.
უფრო ფორმალურად აქაა განხორცილებათა დინება while ბრძანებისთვის.

1.  პირობის შეფასება,  True ან False
2.  პირობა თუ მცდარია (False), მორჩეს  while ბრძანებას და განახორციელოს სხვა ბრძანება.
3.  პირობა თუ მართალია, შეასრულე  body კოდი და დაუბრუნდი პირველ ნაბიჯს.

დინები ამ ტიპს ჰქვია მარყუჟი (loop) , იმიტომ რომ მესამე ნაბიჯი ამარყუჟებს. ყოველთვის, როცა ვაკეთებთ მარყუჟს, ამას ვეძახით გამეორებას. ზემო მაგალითზე შეგვიძლია ვთქვათ, რომ იქ იყო 5 გამეორება, რაც ნიშნავს რომ მარყუჟის  სხეული(კოდი) განხორციელდა ხუთჯერ.
მარყუჟის კოდმა ცვლადის ან ცვლადების მნიშვნელობა უნდა ცვალოს მანამ, სანამ პირობა არ გახდება მცდარი და მარყუჟი დასრულდება. ცვლადს, რომელიც მარყუჟის მიერ ყოველ ჯერზე იცვლება ვეძახით გამეორებად ცვლადს. ასეთი ცვლადი თუ არაა, მარყუჟი განმეორდება უსასრულოდ.

5.3 უსასრულო მარყუჟი

პროგრამისტების უსასრულო თავშესაქცევია დაკვირვება შამპუნზე. "ქაფი,გარეცხვა, გამეორება" .ესაა უსასრულო მარყუჟი, იმიტომ რომ არაა გამეორებადი ცვლადი, რომელიც გეტყვის რამდენჯერ განხორციელდება მარყუჟი.
უკუღმა თვლის შემთხვევაში შეგვიძლია დავამტკიცოთ, რომ მარყუჟი როდესღაც მორჩება - ვიცით რა n - ის მნიშვნელობა, და  ვხედავთ რომ n - ის მნიშვნელობა მარყუჟის ყოველ შესრულებაზე იკლებს. საბოლოოდ ვიღებთ 0.  სხვა შემთხვევებში მარყუჟი უსასრულოა, იმიტომ რომ არა აქვს განმეორებადი ცვლადი.