31 Temmuz 2013 Çarşamba

TEMEL PROGRAMLAMA ELEMANLARI




 Veri Türleri

KLIPLERI bilgi temsil için sekiz temel veri türleri sağlar. Bu türfloatintegersymbolstringexternaladdressfactaddressinstancename ve instanceaddress. Sayısal bilgi mantarlar ve tamsayılar ile temsil edilebilir. Sembolik bilgi semboller ve dizeleri ile temsil edilebilir.
Bir sayı sadece basamak (09), bir ondalık nokta (.), bir işaret (+ veya), ve isteğe bağlı olarak, bir (e) üstel gösterim için oluşur karşılık gelen işareti ile. Bir dizi ya da bir kayan nokta olarak depolanır ya da bir tam sayıdır. Sadece rakam ardından isteğe bağlı bir işaret oluşan herhangi bir sayı bir tamsayı olarak saklanır (C uzun tamsayı olarak KLIPLERI tarafından dahili olarak temsil). Diğer tüm numaralar şamandıra olarak saklanır s (C doubleprecision float olarak KLIPLERI tarafından dahili olarak temsil). Önemli basamak sayısı Makine uygulanmasına bağlı olacaktır. Roundoff hataları da yeniden makine uygulama bağlı olarak meydana gelebilir. Birbirine floatingpoint değerleri karşılaştırarak veya floatingpoint değerlerine tamsayı karşılaştırırken herhangi bir bilgisayar dili olduğu gibi, dikkat edilmelidir. Tamsayıların bazı örnekleri
 237 15 +12 -32
Bir kısmı yüzer örnekleridir

 237e3 15.09 12,0-32.3e-7
Özellikle, tamsayılar aşağıdaki biçimi kullanın:
 tamsayı :: = [+ | -] P <sene> +
 P <sene> :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
Kayan noktalı sayılar aşağıdaki biçimi kullanın:
 <float> :: = tamsayı <exponent> |
             tamsayı.  [Üs]
             .  <unsigned integer> [üs]
             tamsayı.  <unsigned integer> [üs]
 <unsigned-integer> :: = P <sene> +
 <exponent> :: = E | E tamsayı

Tam bir sayı biçimini takip etmez karakter dizisi bir sembol (bir sonraki paragrafa bakın) olarak kabul edilir.
Bir sembol KLIPLERI herhangi bir yazdırılabilir ASCII karakter ile başlar ve sıfır veya daha fazla yazdırılabilir ASCII karakterleri izler herhangi bir karakter dizisidir. Sınırlayıcı bulunduğunda, sembol sonlandırılır. Aşağıdaki karakterler sınırlayıcı olarak hareket s: Herhangi bir yazdırılamayan ASCII karakter (boşluk dahil olmak üzere s, sekme s, satırbaşı s, ve satır besleme s), bir çift tırnak , Parenthes açılış ve kapanış ES I ( î ve ì) î, bir ve işareti ì & î, bir dikey çubuk ì | daha î, daha az ì < î, ve bir tilde ì ~ î. Bir noktalı virgül ì; î bir KLIPLERI Yorum başlar (Bölüm 2.3.3) ve aynı zamanda bir sınırlayıcı olarak görür. Sınırlayıcı bir sembol ilk karakteri olabilir ì <ì karakter dışında semboller dahil olmayabilir. Buna ek olarak, bir sembol ì ya başlamayan olabilir? î karakter veya ì $? karakter î dizisi (bir sembol bu karakterler içeriyor olsa da). Bu karakterler değişken için ayrılmıştır s (bu bölümde daha sonra tartışılmıştır olan). KLIPLERI küçük harfe duyarlıdır (Yani büyük harf sadece büyük harflerle eşleşir). Sayı sembollerin özel bir durum (onlar bir sembol tanımı tatmin yani, ama farklı bir veri türü olarak kabul edilir) olduğunu unutmayın. Semboller bazı basit örnekler
 foo Merhaba B76-HI bad_value
 127A 456-93-039 @ + = -% 2each
Bir dize bir çift tırnak ile başlar karakter bir dizi (") Ve sıfır veya daha fazla yazdırılabilir karakter izler. Bir dize çift tırnak ile sona erer. Çift tırnak bir ters eğik çizgi koyarak bir dize içinde gömülü olabilir (\) Karakteri önünde. Ters eğik çizgi dize iki ardışık ters eğik çizgi karakterleri koyarak gömülü olabilir. Bazı örnekler
 "Foo" "a ve b" "1 numarası" "bir \" alıntı "
Unutmayın ìabcd "sembolü abcd ile aynı değildir. Her ikisi de aynı karakterler, ancak farklı tiptir. Aynı örnek adı için de geçerlidir dize [abcd].

Bir externaladdress Bir dış veri yapısının adresi bir fonksiyonu (C gibi bir dilde yazılmış tarafından döndürülen veya Ada gibi ) Bu KLIPLERI ile entegre edilmiştir. Bu veri türü sadece bir fonksiyonu (yani değeri yazarak bir externaladdress belirtmek mümkün değildir) arayarak oluşturulabilir. KLIPLERI temel sürümü (ki hiçbir kullanıcı tanımlı dış işlev vardır içinde s), bu veri türü oluşturmak için mümkün değildir. Externaladdresses İleri Programlama Kılavuzu daha da ayrıntılı olarak ele alınmıştır . CLIPS içinde, bir externaladdress bir basılı temsilidir

 <Pointer-XXXXXX>
XXXXXX externaladdress olduğu.

Bir gerçeği ya positionally başvurulan (sıralı gerçekler) veya adı (nonordered veya şablon gerçekler) tarafından olan atomik değerler listesidir. Bilgiler indeksi veya adres tarafından verilir; bölüm 2.4.1 Daha fazla bilgi verir. Bir factaddress bir basılı formatta olduğu:
 
<Fact-XXX>
XXX factindex olduğu.

Bir örneği bir amacıdır Bu sınıfın bir örnekleme veya spesifik bir örneğidir . KLIPLERI nesneler şamandıra olduğu tanımlanır s, tam sayı s simgesi s, dize s, multifield değeri s, externaladdress es, factaddress es veya kullanıcı tanımlı sınıfın örneklerini. Bir sınıf defclass kullanılarak oluşturulur inşa. Bir kullanıcı tanımlı sınıfın bir örneğini makeinstance oluşturulur.fonksiyonu, ve böyle bir durumda adres tarafından eşsiz bir şekilde ifade edilebilir. Bir modül (bölüm 10.5.1 bakınız) kapsamında, bir örnek de benzersiz adıyla sevk edilebilir. Bu tanımların tüm bölümleri 2.4.2, 2.5.2.3, 2.6 ve 9 daha ayrıntılı olarak ele alınacaktır. Bir örnekadı Sol ve sağ parantez içinde bir sembol parça ile oluşturulur. Bu nedenle, saf semboller ayraç olmayabilir. CLIPS Odaklı Dil (SOĞUK Nesne ise ) Belirli bir KLIPLERI yapılandırma dahil değildir, parantez semboller sarılı olabilir. InstanceNames bazı örnekler şunlardır:

 [Pompalamak-1] [foo] [+ + +] [123-890]

Onlar sadece kapalı sembolü bir örnekadı olduğunu gösterir; parantez örneğinin adını bir parçası değildir unutmayın. Bir instanceaddress sadece instanceaddress adında bir işlevin dönüş değeri bağlanarak ya da bir kural Sol bir model nesne eşleştirme örneğine bir değişken bağlanarak elde edilebilir (yani, bu değeri yazarak bir instanceaddress belirtmek mümkün değildir). Bir Bir kullanıcı tanımlı sınıfın bir örneği ya adı veya adresi ile olabilir; hızı kritik olduğu instanceaddresses kullanılmalıdır. CLIPS içinde, bir instanceaddress bir basılı temsilidir

 <Instance-XXX>
XXX örneğinin adıdır.

CLIPS olarak, (ilkel veri türlerinden biri) bir değeri olan bir yer tutucu bir alan olarak adlandırılır . Ilkel veri türleri singlefield değeri olarak adlandırılır s. Sabit bir nonvarying tek bir alan değerini doğrudan karakter bir dizi (ki bu externaladdress gelir olarak ifade edilir es, factaddress es ve instanceaddress sadece işlev çağrıları ve değişken bağları) ile elde edilebilir, çünkü es sabitler olarak ifade edilemez. Bir multifield değer sıfır ya da daha fazla tek alan değerleri arasında bir dizidir. KLIPLERI tarafından görüntülenen zaman, multifield değerleri parantez içine alınır. Toplu olarak, tek ve multifield değerleri değeri olarak adlandırılır s. Multifield değerlerin bazı örnekler şunlardır

 (A) (1 bar foo) () (x 3.0 "kırmızı" 567)

Multifield değeri (a) tek bir alan değeri ile aynı olmadığını unutmayın. Multifield değerleri kuralları için patternmatching sürecinde deffunction, nesne messageHandler, veya yöntem, ya da bağlayıcı değişkenler joker argümanlar kullanarak, multifield değerler döndüren işlevler arayarak ya da oluşturulur. KLİPLER, bir değişken değerleri saklamak için kullanılan sembolik bir yerdir. Değişkenler KLİPSİ yapıları (örneğin defrule, deffunction, defmethod ve defmessagehandler gibi) ve bunların kullanımı, bu yapıların her açıklayan bölümlerde detaylı olarak anlatılmıştır birçok kişi tarafından kullanılmaktadır.

Temel Programlama Eğitimi

Temel Programlama Eğitimi : Programlama, bilgisayarda bir işi yapması için komutları sıralama, test etme ve bütünleştime sürecidir. Programcı olmak isteyen kişiler; belli bir seviyede matematik mantığına sahip olmalıdır.
Programcılık, günümüzde çok çeşitlidir. Sistem, multimedya, web, masaüstü programcılığı... gibi. Temel Programlama Eğitimi, programlamanın temelini, programcı olmak isteyenlere öğretir. Katılımcı, Temel Programlama Eğitimi sonunda istediği programlama diline yönelebilir.

Algoritma

Algoritma, matematikte ve bilgisayar biliminde bir işi yapmak için tanımlanan, bir başlangıç durumundan başladığında, açıkça belirlenmiş bir son durumunda sonlanan, sonlu işlemler kümesidir. Yani belli bir problemi çözmek veya belirli bir amaca ulaşmak için çizilen yola algoritma denir. Genellikle programlamada kullanılır ve tüm programlama dillerinin temeli algoritmaya dayanır. Aynı zamanda algoritma tek bir problemi çözecek davranışın, temel işleri yapan komutların veya deyimlerin adım adım ortaya konulmasıdır ve bu adımların sıralamasına dikkat edilmelidir. Bir problem çözülürken algoritmik ve sezgisel (herustic) olmak üzere iki yaklaşım vardır. algoritmik yaklaşımda da çözüm için olası yöntemlerden en uygun olan seçilir ve yapılması gerekenler adım adım ortaya konulur. Algoritmayı belirtmek için ; metinsel olarak düz ifade ve akış diyagramı olmak üzere 2 yöntem kullanılır. Algoritmalar bilgisayarlar tarafından işletilebilirler. Algoritma kelimesi, Özbekistan'ın Harezm, bugünkü Türkmenistan'ın Khiva kentinde doğmuştur.

9 Temmuz 2013 Salı

TEMEL PROGRAMLAMA ELEMANLARI


TEMEL PROGRAMLAMA ELEMANLARI DÖNGÜLER


Bu makalede Temel Programlama Elemanlarından döngülerden bahsedeceğiz



 Döngüler ve Diziler 

Modern bilgisayarlar milyonlarca hatta talimatlar ikinci bir milyarlarca yapabilirsiniz. Şimdiye kadar açıklanan teknikler ile, bir ikinci bir kısmını fazla tek başına aday olacağını bir program almak zor olacaktır.
Pratik olarak, biz bilgisayar meşgul tutmak için talimatlar milyonlarca yazamıyor. Biz tekrar tekrar kod aynı blok üzerinde geri döngü, tekrarı gereken bir bilgisayar yararlı işler yapmaya devam etmek. Basit döngüler for, biz kısa bir süre sürebilir ve biz, daha sonra döngüler, kaplar hangi süre: bunu yapmanın iki Python açıklamada türü vardır Tablolar da .
İki ön hazırlıklar:
  1. Önceden tanımlanmış değişkenlerin değeri güncellenebilir. Bu döngüler özellikle önemli olacaktır. Öncelikle değişkenleri daha basit, sıralı durumda güncellenebilir nasıl izlemeniz için hazırlamak.
  2. Dizi tipi for döngüler kullanılır. Listesi: Biz temel bir dizi tipi bakacağız.
Sonra hep birlikte bu koymak. Bu, uzun bir kesittir. Yavaş ve dikkatli gidin.

Değişkenler güncelleme 

Bu fonksiyonu öz yineleme ile mümkündür, ama bu giriş ileri konu önlemek olacaktır.
Programları şimdiye kadar tanımlanmış ve değişkenler kullanılır, ancak erken kabuk örneklerde dışında biz mevcut değişkenlerin değeri değişmemiştir var.Şimdilik sadece örnek dosya updateVar.py içinde, bir örnek olarak seçilmiş, özellikle basit bir örnek göz önünde bulundurun:
 1
 2
 3
 4
 5 
  x = 3 # basit sıralı kodu
 y = x + 2 # iki değişken güncelleme
 y = 2 * y        
 x = y - x      
 baskı (x, y)    
Eğer sonucu tahmin edebilirsiniz? Programı çalıştırın ve kontrol edin. Eğer doğru tahmin etmedi özellikle, ne bir seferinde bir adım olur, anlamak önemlidir.Değişkenlere değişiklikler her deyimi ile yapılır ne kayıtlarını tutmak anlamına gelir.
Aşağıdaki tabloda, Yukarıdaki açıklamalarımızın kod untmalayım sayılarla adlandırılır. Her satırın çalıştırıldıktan sonra her değişkenin durumunu izleyebilirsiniz. Bir değişken tanımlanmamış olduğu bir çizgi gösterilir. Hat 1 sonra Örneğin çalıştırılır, bir değer x verilen, ancak y hala belirsiz olduğunu.Daha sonra y hat 2 bir değer alır. Sağdaki yorum neler olduğunu özetlemektedir. Hat 2 başladığında x 3 değerine sahip olduğu, x +2 3 +2 ile aynıdır.Doğrultusunda üç biz sol nedenleri değişken y hattı (idam tablonun bir önceki satırdan sonra kalanları) yürütme başladığında atama deyiminin sağ tarafındaki değişkenlerin değerleri kullanıyor olması, ancak atama kullanın Y için bir değişiklik ve bu nedenle Y, 10, güncel değeri, tabloda gösterilmiştir.Line 4 sonra y en son değeri (10 değil, başlangıç ​​değeri 5!) Kullanarak değişiklikler x,. Hat 5 elde edilen sonuç, x ve y değerleri teyit etmektedir.

ÇizgixyYorum
13-
235Önceki satırından x değerini kullanarak 5 = 3 +2,
3310Sağdaki 10 = 2 * 5, bir önceki hattan y değerini kullanın
4710Sağdaki 7 = 10-3, bir önceki satırından x ve y değerini kullanın
5710Baskı: 7 10

Yürütme sırasını her zaman tablodaki satır sırasını olacaktır. Bu basit sıralı kodda, bu da programın metin sırasını izler. Değişkenlerin geçerli değerlerini kayıtlarını tutmak, dikkatli, yürütme doğru sırayla bir program yürütme her satırı ardından, bilgisayar oynamak çağrılır. Yukarıdaki gibi bir tablo takip etmek için organize bir yoldur.

Bu liste Tipi 

Listesi keyfi veri dizileri sıralanmıştır. Listeler değiştirilebilir olduğu kadar tartışılan verilerin ilk tür: sırası uzunluğu değiştirilebilir ve elemanları yerine. Biz bir daha giriş kadar nesnelere listelerine değişiklikleri tartışma geciktirir. Listesi açıkça yazılabilir. Aşağıdaki örnekler Oku

  ['Kırmızı', 'yeşil', 'mavi']
 [1, 3, 5, 7, 9, 11]
 ['Aptal', 57, 'karışık', - 23, 'örnek']
 [] # Boş liste

 Aralığı Fonksiyon, Bölüm 1 

Temel biçimi keyfi veri kare dirsek-kapalı, virgülle ayrılmış listesi.
Otomatik olarak düzenli aritmetik dizileri oluşturmak için kullanılabilecek bir dahili fonksiyonu dizi var. Kabuğu'nda aşağıdaki deneyin:
  listesi (aralık (4))
 listesi (aralık (10))
Kullanım için genel modelidir
aralığı (sizeOfSequence)
Gerektiğinde Bu sözdizimi, tamsayılar, her seferinde bir oluşturur . Bir kez bir liste olarak tüm sonuçları görmek isterseniz, yukarıdaki örneklerde olduğu gibi bir listeye dönüştürebilirsiniz. Elde edilen dizi 0 ile başlar ve parametre önce sona erer. Biz Python 0 başlamak için iyi nedenler vardır göreceksiniz.Dizi tarafından üretilen dizilerin önemli bir özellik (n) elemanları toplam sayısı n olmasıdır. Sıra numarası n, kendisi atlar, ancak bunun yerine 0 içerir.
Daha fazla parametre ile, aralık fonksiyon dizilerinin çok daha geniş bir çeşitli oluşturmak için kullanılabilir. Elaborations tartışılmıştır Rastgele Renkler ve En Genel aralığı Fonksiyon .

Bilgisayar jargonunda, sadece gerektiği gibi bir dizi üretim değerleri tembel değerlendirme denir.

Döngüler için temel 

Kabuğu'nda aşağıdaki deneyin. Shell yanıt önce devam satırları bir dizi olsun. İkinci ve üçüncü satırlarda girinti emin olun. (Bir düzenleme penceresinde girinti otomatik olarak) yanıt vermek için Shell almak için sonunda başka bir boş bir satır (Sadece Enter tuşuna basın.) Girdiğinizden emin olun...:
 1
 2
 3 
  [1, 2, 3] saymak için: 
     baskı (sayısı) 
     print ('Evet' * sayısı) 
Bu döngü için bir olduğunu. Bu bir değişken adı (bu durumda saymak), sözcüğü, bazı dizi ve son bir iki nokta üst üste için ile başlığı başlangıç ​​vardır.Fonksiyon tanımlaması ve diğer başlığı hatları olduğu gibi, satırın sonunda kolon tabloların sürekli girintili blok döngüsü için tamamlamak için takip gösterir.
sırayla ürün için:
tekrar ifadeleri girintili, madde kullanabilir
Hatlarının bloğu bu nedenle bu örnekte girintili bloğundaki iki çizgi üç kere tekrar edilir, sırası her eleman için bir kez tekrarlanır. Ayrıca (burada saymak)pozisyonunda değişken blok kullanılabilir, ve içinden her zaman 2 sonra, 1 döngü sayısı ile ilk kez çok, sırayla bir sonraki değeri alır ve son olarak 3.Çıkışta tekrar bakın ve bu sıra uygun görüyoruz. Daha detaylı bir dizi tabloda, bilgisayar oynayan verilmiştir:

Çizgisaymakyorum
11Listenin ilk elemanı ile başlar
211 yazdırma
31'Evet' * 1 'evet'; baskı evet
12Listede sonraki öğeye saymak değiştirmek
222 yazdırmak
32Baskı yesyes; 'evet' * 2 'yesyes' olduğu;
13Listede sonraki öğeye saymak değiştirmek
23baskı 3
33Baskı yesyesyes,, liste ile yapılır 'evet' * 3 'yesyesyes' olduğu
başlığı döngü için iki amaca hizmet ettiği adım adım yürüterek, not:
  • Başlığı çizgi yürütür her zaman, bu dolaylı bir öğe yerine kullandığınız değişken adı için yeni bir değer atar.
  • Ilerleme çizgisinin her yürütme sonra, girintili bloktaki ifadeler genellikle başlığı atanan değişken için yeni değer yararlanarak, yürütülür.
Dikkat 
 Altında döngü başlığı hattı ve girintili vücut için her tekrar tekrar yürütülür ve her yürütüldüğünde zaman dizisi halinde, ayrı bir liste halinde gerekir, çünkü bir döngü ile bilgisayar oynarken, aynı satır numaraları, tekrar tekrar yeniden görünür ve olabilir!
Tercüman döngü bloğu olacaktı ne kadar bilmiyordum: Bir döngü girmek için Shell kullanıldığında, tercüman boş bir satır girdikten sonra kadar cevap bekledi bir nedeni vardı! Boş satır döngü blok ile yapılır tercüman için bir sinyaldir.
Aşağıdaki örnek program for123.py bak, ve çalıştırın.

  [1, 2, 3] saymak için:
     baskı (sayısı)
     print ('Evet' * sayısı)
 print ('sayma Bitti.')
 ['kırmızı', 'mavi', 'yeşil'] renk için:
     baskı (renkli)

Bir dosyasında, tercüman hemen yanıt gerekmez yerde, boş bir satır gerekli değildir. Bunun yerine, girintili blok ile bir işlev tanımı veya başka bir biçim olduğu gibi, de için-döngü başlığı ile sıraya tarak ile girintili blok geçmiş olmak belirtiniz. Bu nedenle yukarıdaki kodda, "Sayma Bitti." Ilk döngü tüm tekrarlar tamamlandıktan sonra bir kez yazdırılır. Yürütme başka bir basit döngü ile sona erer.
Bir fonksiyonu girintili blok olduğu gibi, doğru girinti almak önemlidir. Yukarıdaki kod Alter, dördüncü satır girintili şekilde:

  [1, 2, 3] saymak için:
     baskı (sayısı)
     print ('Evet' * sayısı)
     print ('Bitti sayma.') # değişti çok girintili
 ['kırmızı', 'mavi', 'yeşil'] renk için:
     baskı (renkli)

Değişikliği tahmin ve test için kodun yeniden çalıştırın.
Döngüler programlama en önemli özelliklerinden biridir. Döngü sözdizimi için yaratıcı sorunları (yerine sadece bir gösteri bakmak) çözmek için bunları kullanarak, oldukça basit olsa da bir giriş düzeyinde birçok öğrenciler için en büyük zorluklardan biridir. Öğrenme eğrisi basitleştirmek için bir yolu genel durumları ve desenler sınıflandırmak ve onlara isimler vermektir. En basit desen biri, bugüne kadar döngü örnekleri için tüm döngü-her biri için basit gösterilmiştir: sırası her öğe için, onunla bir şey aynı tür yapmak. Mor Pythonic pseudocode olarak şunları söyledi:
sırayla ürün için:

Geçerli madde ile bir şey yapmak
(Her biri için tarafından yerine olan için ise İngilizce gibi daha olurdu, ama kısa versiyonu Python tarafından kullanılan biridir.)
Yukarıdaki döngü örnekler için, bir şey listedeki her öğe ile ilişkili olduğu yazdırılır. Baskı kesinlikle "yaptığımız bir şey" bir formu, ama için olanakları "bir şeyler yapmak" tamamen genel!
Biz ilk örnek revize döngü-her biri için bir kullanabilirsiniz madlib.py gelen kodu hatırlayın.:

  addPick ('hayvan', userPicks)
 addPick ('gıda', userPicks)
 addPick ('şehir', userPicks)

Hattın geri kalanı tekrar ederken her satır, işaret olarak kullanılan dize değişen dışında, tam olarak aynı şeyi yapıyor. Bu için-her desen, ama biz ipuçları geldiği dizisi listelemek için gereken alternatif okuyun.:

  # başlığı: ['hayvan', 'gıda', 'şehir'] 'de işaret için
     addPick (işaret, userPicks) # vücut

Bu özelliği gören grup fo örneklerden soyut genel desen yeteneği gerektirir. Bu etkin döngüler kullanmak için gereklidir.
Bu küçük değişiklik ile tüm programı görmek veya çalıştırmak isterseniz, örnek madlibloop.py bakın. Ortak bir adlandırma kuralı programda kullanılır: tüm unsurları ile liste çoğul ipuçları ile adlandırılır iken Listedeki her öğe, bir ipucudur. Daha sonra durumlarda bir liste adı listenin tek bir öğe için kullanılan değişken adı ve çoğul olarak yapmak.
İki program sürümleri arasındaki dönüşüm mantığı Not: veri alternatif adet döngüsü başlığı için listede toplanır. Tek bir değişken adı (burada işaret seçti) işlenen mevcut seçim başvurmak için bir yer tutucu olarak başlık kullanılan ve vücudun açık veri değerleri yerine bu değişkeni işaret anlamına gelir orijinal her zaman dahil no- döngü sürümü.
Bu yürütme başlığı ve vücut arasında ileri ve geri gidiyor nasıl işlemlerin sırası, anlamak önemlidir. İşte detaylar:
  1. ilk kez başlığı: değişken işaret 'hayvan', dizinin ilk elemanı olarak ayarlanır
  2. vücut ilk kez: işaret şimdi 'hayvan' olduğu için, etkili addPick ('hayvan', userPicks) yürütmek (bu anahat işlev çağrısı Ayrıntıları atla.)
  3. ikinci kez başlığı: değişken işaret 'gıda', dizinin bir sonraki elemanı olarak ayarlanır
  4. vücut ikinci kez: işaret şimdi 'gıda' olduğu için, etkili bir ('gıda', userPicks) addPick yürütmek
  5. üçüncü kez başlığı: değişken işaret dizisinin bir sonraki (son) öğesi, 'şehir' olarak ayarlanır
  6. vücut üçüncü kez: işaret şimdi 'şehir' olduğu için, etkili addPick ('şehir', userPicks) yürütmek
  7. başlığı yapılır: sırayla daha fazla unsurlar olduğundan, döngü için tüm yapılır ve yürütme ondan sonra deyimi (girintili değil) ile devam edecektir.
Bu örnekte, veri değerleri sadece birkaç belirli değişmezdir ve tekrarlanan sadece bir satır bulunmaktadır. Bu nedenle döngü için bir de kullanımı büyük bir anlaşma değil, ama basit bir örnek yapar! Özgün deli lib örnek değiştirmek için, ve daha birçok hissi veren bir hikaye vardı, bu döngü inşaat çok handier olacaktır. Ayrıca bu revizyon daha da iyi sağlayacaktır Revize Mad Lib Programı biz dize işleme hakkında daha fazla tanıtmak sonra,.

Desen Döngü Egzersiz 

Örnek dosya types1.py Bu kodu aynı etkiye sahip olacaktır türüne işlevine bir çağrı içeren bir dosya types2.py döngü-her biri için bir iki satır yazmak:
 baskı (2, tipi (2))
 baskı (3.5, tipi (3,5))
 baskı ([], tipi ([]))
 baskı (Doğru, tipi (Doğru))
 baskı (Yok, tipi (Yok))
Kendinizi kontrol etmek için her iki sürümü de yürütün. 

Üç Egzersiz 

Aşağıdaki fonksiyonu tamamlayın. Bu başlangıç ​​kod tripleStub.py bulunmaktadır. Yeni adı triple.py kaydedin. Bir örnek belgelere dizesinde verilen şekilde unutmayın. Bu Shell işlevinin kullanımını simüle eder. Bu ortak bir kuralıdır:

  def tripleAll (nums):
     '' 'Baskı listede nums sayıları her üç katına.
 >>> TripleAll ([2, 4, 1, 5])
 6
 12
 3
 15
 >>> TripleAll ([-6])
 -18
 '' '

Başlığı döngü için listede unsurları aynı türdeki tüm değildir.

Bu döngü vücutta iki kez döngü değişkeni kullanmanız gerekir.

Basit Tekrar Döngü 

Her şeyden örnekler döngü başlığı için de değişkenin değeri kullanılır. Bir döngü kullanım için daha basit sadece aynı şeyi kez belirli bir sayıda tekrarlamak istediğinizde olduğunu. Bu durumda, dizinin sadece uzunluğunda değil, bireysel unsurları önemlidir. Biz zaten aralığı fonksiyonu elemanlarının belirli bir sayı ile bir dizi üretmek için bir kolaylık yol sağlar gördük. Örnek program repeat1.py okuyun ve çalıştırın:
  '' 'Basit bir tekrar döngüsü'''

 : aralığında i (10) için
     print ('Merhaba')
Bu durumda, i değişkeni için döngü gövdesinde kullanılmaz.
Kullanıcı tekrar sayısını seçebilirsiniz. Örnek program repeat2.py okuyun ve çalıştırın:
  '' 'Tekrar sayısı kullanıcı tarafından belirtilir.'''

 n = int (input ('tekrar sayısını girin:'))
 : aralığında i (n) için
     print ('Bu tekrarlayan var!')

Ardışık Modifikasyon Döngüler 

Ben öğeleri adı verilen öğelerin bir listesi var varsayalım, ve ben her öğe ve gittikçe sayısı onları yazdırmak istiyorum. Örneğin eğer öğe ['kırmızı', 'turuncu', 'sarı', 'yeşil'], ben çıkış görmek istiyorum:
  1 kırmızı
 2 turuncu
 Sarı 3
 4 Yeşil
Bu geliştirmek için aşağıdaki düşünce süreci hakkında bilgi edinin:
Kendimi numaraları ihmal izin verirseniz, bu kolaydır: Listede herhangi bir öğe için, ben ile işleyebilir
  baskı (madde)
ve ben sadece listede gezinmek ve her biri için bunu yapmak. (Kopyalayın ve isterseniz çalıştırın.)
  öğeleri = ['kırmızı', 'turuncu', 'sarı', 'yeşil']
 öğeler madde için:
     baskı (madde)
Açıkça numaraları ile daha ayrıntılı bir versiyonu bir kıvamda bir desene sahiptir, her bir hattı en az şekildedir:
numarası öğe
ancak sayı her zaman değiştirir, ve sayıları öğeleri listesinden düz gelmiyor.
Bir değişken değiştirebilirsiniz, bu nedenle bir değişken sayıda olması mantıklı, bu yüzden doğru değiştirmek yapmak potansiyeline sahiptir. Biz kolayca doğru ilk kez almak ve daha sonra aynı sayıda tekrar olabilir. Örnek program numberEntries1.py okuyun ve çalıştırın:
  '' 'Bu sürüm numarası değişmez.'''

 öğeleri = ['kırmızı', 'turuncu', 'sarı', 'yeşil']
 sayısı = 1
 öğeler madde için:
     baskı (sayı, madde)
Fikir saymak beri Tabii ki bu, hala tam olarak doğru değil. Ilk kez sayı basıldıktan sonra, aşağıdaki kodda olduğu gibi, döngü içinde hemen sonraki olmak, 2 için değiştirilmesi gerekiyor: örnek program numberEntries2.py okuyun ve çalıştırın:
  '' 'Listeden kötü sayılı girişleri yazdırır'''

 öğeleri = ['kırmızı', 'turuncu', 'sarı', 'yeşil']
 sayısı = 1
 öğeler madde için:
     baskı (sayı, madde)
     sayısı = 2 # baskı 1 sonra 2 değişecektir
Biz 3 asla çünkü bu, daha yakın, ama yine de tam olarak doğru değil! Biz döngü içinde her zaman çalışacak sayısı değerini değiştirmek için bir yol gerekir.Sayma desen muhtemelen bir sayı diğerine gitmek konusunda bilinçli sanmıyorum aslında çok basit, basit: Her ardışık sayısı bir önceki sayısından bir fazlasöyleyerek desen tanımlayabiliriz. Bu daha önce olduğundan daha bir daha bu yüzden biz numarasını değiştirmek gerekiyor. Bu ihtiyacımız olan ek bir fikir!Örnek program numberEntries3.py almak için döngü vücudun son satırı değiştirin. Ayrıca görmek ve çalıştırın:
  1
 2
 3
 4
 5 
  öğeleri = ['kırmızı', 'turuncu', 'sarı', 'yeşil']
 sayısı = 1                                   
 # baskı numaralı girişleri: öğeleri öğe için
     baskı (sayı, madde)                      
     sayı = sayı + 1 # önemli eklendi çizgi
Bu yürütme sırasında adım adım değişiklikleri anlamak önemlidir. Aşağıda bilgisayar oynama sonuçlarını gösteren bir tablodur. Satır numaraları, çünkü döngü sonunda etrafında atlama, kontrol akışını takip etmek için burada çok daha önemlidir.
Yine altında döngü başlığı hattı ve girintili vücut için her tekrar tekrar yürütülür çünkü oyun bilgisayarın tablonun Hattı sütununda program satır numaraları, tüm sıralı unutmayınız.
Her zaman hat 1 yorum gösterilen değeri olmadığından kompakt için, değişken öğeleri, kendi sütununda almaz:
çizgimaddesayıyorum
1--['kırmızı', 'turuncu', 'sarı', 'yeşil'] öğeleri ayarlamak
2-1
3'Kırmızı'1sırasında ilk olarak madde ile başlar
4'Kırmızı'1Baskı: 1 kırmızı
5'Kırmızı'22 = 1 +1
3'Turuncu'2sırayla bir sonraki elemana üzerine
4'Turuncu'22 turuncu baskı
5'Turuncu'33 = 2 +1
3'Sarı'3sırayla bir sonraki elemana üzerine
4'Sarı'33 sarı baskı
5'Sarı'44 = 3 +1
3'Yeşil'4sırayla son öğe için
4'Yeşil'44 yeşil yazdırmak
5'Yeşil'55 = 4 +1
3'Yeşil'5dizisi yapılır, son döngü ve kod
Sayısının son değer kullanılır, ama Tamam asla. Ne istediğimizi basılı alır.
Dikkatli bir şekilde geçmesi ve tablodaki her giriş anlamını anlamak ve emin olun sıralama ve değişiklikleri her adımda her girişin tam konumunu nedeni nedeni! Özellikle nasıl ve neden birbirini izleyen her satır için satır numarası her zaman bir önceki satır birden fazla değil görmek. Özellikle, numaralı çizgiler aynı sırayla tabloda birden fazla yerde tekrar edilebilir bakın. Bu anlayış olmadan bilgisayar kendinizi oynamak ve gerçekten döngüler anlamak mümkün olmayacaktır.
Bu kısa örnek döngüler için önemli bir sürü fikir göstermektedir:
  • Döngüler çeşitli değişkenler içerebilir.
  • Bir değişken değiştirebilirsiniz bir yolu döngü başlık için bir de değişken olmak gereğidir, otomatik olarak döngü listesi için değerleri geçer.
  • Değişkenleri bir döngü içinde değişmesi için başka bir yol izleyen değişiklikler neden döngü içinde değişken değiştirir açık bir bildirimde olmaktır.
Yukarıda numarası gibi bir değişkenin ardışık değişiklik ile döngüler için genel bir model vardır:
  1. Değiştirilecek değişkenler döngü önce başlangıç ​​değerleri (yukarıdaki örnekte hat 1) gerekir.
  2. Başlığı döngü tekrarı neden olur. Bir için-döngü, tekrar sayısını liste büyüklüğü aynıdır.
  3. Döngü gövdesi genellikle tekrar tekrar yapılan istediğiniz (line 4 yukarıda baskı gibi) "bir şey yok".
  4. Değiştirmek gerekiyor değişken bir sonraki değeri (yukarıdaki örnekte hattı 5) için dönüştürülmüş olur döngü, üzerinden bir sonraki kez kurmak için döngü gövdesi içinde kod vardır.
Bu bilgiler bir kod anahat konabilir:
Değiştirilecek değişkenleri başlatılamıyor
Döngü tekrar kontrol başlığı:
Mevcut değişkenler istenen eylemi yapmak
Eylem bir sonraki için hazır olması değişkenleri değiştirmek
Size bu desen karşılaştırırsanız için-her ve basit tekrar döngüler Döngüler için temel , orada örnekler basit olduğunu görüyoruz. Döngü olsa bir sonraki hazırlanmak için gerekli açık bir değişken değişiklik vardı. Biz bir ardışık değişiklik döngü gibi en son, daha genel desen sevk edecektir.
Fonksiyonlar bir program kullanım ve yeniden kullanım için bir fikir kapsüllenmesinde kullanışlı ve aynı zamanda test için. Biz numarasına bir liste bir fonksiyon yazmak ve kolayca farklı veri ile test edebilirsiniz. Örnek program numberEntries4.py okuyun ve çalıştırın:
  '' 'Herhangi bir liste numara girişleri için bir işlevini kullanın'''

 def numberList (öğe):
     '' 'Için numaralı bir liste öğeleri, her öğe yazdırın.'''
     sayısı = 1
     öğeler madde için:
         baskı (sayı, madde)
         sayı = sayı + 1

 def main ():
     numberList (['kırmızı', 'turuncu', 'sarı', 'yeşil'])
     print ()
     numberList (['elma', 'armut', 'muz'])

 Ana ()
Adım adım, tüm sırası takip edebilirsiniz emin olun! Bu program işlev çağrıları ve döngüler için hem değişen, şimdiye kadar kontrolü en karmaşık akış vardır.
  1. Önceki satır tanımları olduğu için yürütme, çok son satırı ile başlar
  2. Daha sonra ana yürütülmesi başlar.
  3. NumberList için ilk çağrı etkili biçimsel parametre ayarlar
      öğeleri = ['kırmızı', 'turuncu', 'sarı', 'yeşil']
    
    ve fonksiyon sadece numberEntries3.py takip edilen akışı gibi yürütür. Bu süre, ancak, yürütme ana döner.
  4. Boş bir satır ana ikinci satırda yazdırılır.
  5. NumberList için ikinci çağrı farklı bir gerçek parametre ['elma', 'armut', 'muz'], bu da sonuç olarak biçimsel parametre bu kez ayarlar vardır
      öğeleri = ['elma', 'armut', 'muz']
    
    ve fonksiyon numberEntries3.py olduğu gibi benzer bir desen çalıştırır ancak döngü boyunca farklı veri ve bir daha az zaman.
  6. Yürütme ana döner, ama yapmak için daha fazla bir şey yok.

Birikim Döngüler 

Bir liste, nums tüm numaraları eklemek istediğinizi varsayalım. Bize bu baştan bir fonksiyonu olarak, bu nedenle aşağıdaki kodu okuma planı olsun. Biz ile başlayabilirsiniz:
  def sumList (nums):
     '' 'Nums içinde sayıların toplamı dön.'''
Hemen ne göremiyorsanız, yapmak için yararlı bir şey somut bir durumda yazmak, ve tam ayrıntılı olarak, bunu çözmek nasıl düşünüyorum. Nums [2, 6, 3, 8] ise, büyük olasılıkla hesaplarız:
2 + 6 8
8 + 3 11'dir
11 + 8 19 olduğu
19 döndürülecek cevaptır.
Liste oldukça uzun olabilir yana, bir döngü gerekir. Eğer döngü içinde aynı ifadeleri yeniden tutmak, böylece bu nedenle bir model bulmak gerekir. Açıkçası sırayla sırayla her numara kullanıyor. Ayrıca bir sonraki adımda yeniden her adımda bir miktar üretir. Daha önce hiç toplamı var ve listeden iki unsur kullanın: desen farklıdır, ancak, ilk satırda, 2 +6 8'dir. 2 bir önceki toplamı eklenmez.
Elle hesaplama yapmak için en kısa yolu olmasa da, 2 0 + 2 bir toplamıdır: Biz desen tutarlı yapmak ve hesaplayabilirsiniz:
0 bir miktar ile başlar
0 + 2 2'dir
2 + 6 8
8 + 3 11'dir
11 + 8 19 olduğu
19 cevaptır.
Daha sonra, her toplamının ikinci bölümü listesi, nums arasında bir sayıdır. Biz liste sayısı gelen numarayı ararsanız, döngü temel hesaplama hat olabilir
  nextSum = toplam + num
İşin püf noktası döngü içinde kod bir sonraki zaman aynı hat kullanmaktır. Bir sonraki geçişte toplamı olur tek seferde nextSum ne demek. Bu işlemek için bir yoludur:
  toplam = 0
 nums içinde num için:
     nextSum = toplam + num
     toplam = nextSum
Eğer desen görüyor musunuz? Yine öyle
başlatma
döngü başlığı:
tekrarlanması için ana iş
Bir sonraki döngüde bir süre için hazırlık
Bazen iki genel döngü adımlar kombine edilebilir. Bu, böyle bir durumdur. NextSum sadece bir kez kullanılan bu yana, biz sadece kullanıldığı yerde değeri(toplamı) yerine ve kolaylaştırabilirsiniz:
  toplam = 0
 nums içinde num için:
     toplam = toplam + num
böylece return deyimi ile tüm işlevi vardır:
  1
 2
 3
 4
 5
 6 
  def sumList (nums):
     '' 'Listesinde nums içinde sayıların toplamı dön.'''
     toplam = 0
     nums içinde num için:
         toplam = toplam + num
     toplam geri
Örnek program sumNums.py fonksiyonu (girintili değil) test etmek için sonuna eklenir aşağıdaki satırı ile yukarıdaki kodu vardır. SumNums.py çalıştırın.
  baskı (sumList ([5, 2, 4, 7]))
Burada kullanılan desen kesinlikle başarılı değişiklik (toplamı değişkenin) 'dir. Burada kalıp bu sürümü için bir daha özel ad vermek için yararlıdır. Bubirikimi bir yol izler:
dizisi hiçbiri (burada = 0 Özetle) dahil etmek birikimi başlatmak
sırayla ürün için:
birikim son değeri ile madde birleştirerek birikimi yeni değeri = sonuç
Bu model numaraları ekleyerek yanı sıra diğer birçok durumlarda çalışacak.