http___programarcadegames.com_index.php_chapter_sorting_lang_tr_4.xml
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 11.2 12.1 12.2 14.1 15.1 16.1 16.2 17.1 17.2 18.1 19.1 20.1 22.1 22.2 22.3 22.4 23.1 24.1 25.1 26.1 27.1 29.1 30.1 31.1 31.2 32.1 32.2 33.1 33.2 34.1 35.1 35.2 35.3 36.1 38.1 39.1 40.1 40.2 40.3 41.1 42.1 43.1 44.1 44.2 45.1 46.1 46.2 47.1 48.1 50.1 51.1 52.1 53.1 55.1 56.1 57.1 59.1 59.2 59.3 59.4 60.1 61.1 61.2 61.3 62.1 62.2 62.3 63.1 64.1 65.1 65.2 66.1 67.1 68.1 69.1 70.1 71.1 72.1
Arcade Türü Oyun Programlamayıve Bilgisayar Bilimleri Öğrenin English Dutch - Nederlands French Hungarian - Magyar Portuguese - Português Russian - Pycckий Spanish - Español Turkish - Türkçe Lab 9: Functions Write this as all one program. The entire thing should be able to run straight through. There are several parts to this program. Here is a description of each part: Write a function called min that will take three numbers as parameters and return the smallest value. If more than one number tied for smallest, still return that smallest number. Once you've finished writing your function, copy/paste the following code and make sure that it runs against the function you created: print(min(4, 7, 5)) print(min(4, 5, 5)) print(min(4, 4, 4)) print(min(-2, -6, -100)) print(min("Z", "B", "A")) You should get this result: The function should return the value, not print the value. Also, while there is a min function built into Python, don't use it. Please use if statements and practice creating it yourself. Leave the testing statements in the program so the instructor can check the program. - (5 pts) Write a function called box that will output boxes given a height and width. Once you've finished writing your function, copy and paste the following code after it and make sure it works with the function you wrote: box(7,5) # Print a box 7 high, 5 across print() # Blank line box(3,2) # Print a box 3 high, 2 across print() # Blank line box(3,10) # Print a box 3 high, 10 across You should get the following results from the sample code: Go back and look at Chapter 6 if you've forgotten how to do this. - (5 pts) Write a function called find that will take a list of numbers, list, along with one other number, key. Have it search the list for the value contained in key. Each time your function finds the key value, print the array position of the key. You will need to juggle three variables, one for the list, one for the key, and one for the position of where you are in the list. This code will look similar to the Chapter 7 code for iterating though a list using the range and len functions. Start with that code and modify the print to show each element and its position. Then instead of just printing each number, add an if statement to only print the ones we care about. Copy/paste this code to test it: ...check for this output: Found 12 at position 11 Found 12 at position 13 Found 91 at position 5 Use a for loop with an index variable and a range. Inside the loop use an if statement. The function can be written in about four lines of code. - Write one program that has the following: - (15 pts, 5 for each function) Functions: - Write a function named create_list that takes in a list size and returns a list of random numbers from 1-6. i.e., calling create_list(5) should return 5 random numbers from 1-6. (Remember, Chapter 7 has code showing how to do something similar, creating a list out of five numbers the user enters. Here, you need to create random numbers rather than ask the user.) To test, use this code against the function you wrote: my_list = create_list(5) print(my_list)And you should get output of five random elements that looks something like: - Write a function called count_list that takes in a list and a number. Have the function return the number of times the specified number appears in the list. To test, use this code against the function you wrote: count = count_list([1,2,3,3,3,4,2,1],3) print(count)And you should get output something like: - Write a function called average_list that returns the average of the list passed into it. To test, use this code against the function you wrote: avg = average_list([1,2,3]) print(avg)And you should get output something like: - Write a function named create_list that takes in a list size and returns a list of random numbers from 1-6. i.e., calling create_list(5) should return 5 random numbers from 1-6. (Remember, Chapter 7 has code showing how to do something similar, creating a list out of five numbers the user enters. Here, you need to create random numbers rather than ask the user.) - (10 pts) Now that the functions have been created, use them all in a main program that will: - Create a list of 10,000 random numbers from 1 to 6. This should take one line of code. Use the function you created earlier in the lab.) - Print the count of 1 through 6. (That is, print the number of times 1 appears in the 10,000. And then do the same for 2-6.) - Print the average of all 10,000 random numbers. - (15 pts, 5 for each function) Functions: You are not logged in. Log in here and track your progress. English version by Paul Vincent Craven Spanish version by Antonio Rodríguez Russian version by Vladimir Slav Turkish version by Güray Yildirim Portuguese version by Armando Marques Sobrinho and Tati Carvalho Dutch version by Frank Waegeman Hungarian version by Nagy Attila French version by Franco Rossi
1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1 11.1 12.1 13.1 14.1 15.1 16.1 17.1 19.1 20.1 21.1 22.1 23.1 24.1 25.1 26.1 27.1 28.1 29.1 30.1 31.1 32.1 33.1 34.1 35.1 36.1 37.1 38.1 39.1 40.1 41.1 42.1 43.1 44.1 45.1 46.1 47.1 48.1 49.1 50.1 51.1 52.1 53.1 54.1 55.1 56.1 57.1 58.1 59.1 60.1 62.1 64.1 66.1 67.1 68.1 69.1 70.1 71.1 72.1 73.1 74.1 75.1 76.1 77.1 78.1 79.1 80.1 81.1 82.1 83.1 84.1 85.1
Arcade Türü Oyun Programlamayıve Bilgisayar Bilimleri Öğrenin English Dutch - Nederlands French Hungarian - Magyar Portuguese - Português Russian - Pycckий Spanish - Español Turkish - Türkçe Chapter 18: Sıralama Bölerek arama sadece sıralanmış listelerde çalışmaktadır. Peki programlar listeleri nasıl sıralarlar? Bir program kullanıcı sütun başlığına tıkladığında öğelerin listesini nasıl sıralar ya da bir şeyin sıralanması gerektiğinde ne yapar? Bunu yapmak için birkaç algoritma vardır. Sıralama yapabilmek için en basit iki algoritma ise selection sort ve insertion sort'dır. Diğer sıralama algoritmaları da bulunmaktadır, mesela shell, merge, heap ve quick sıralama algoritmaları. Çok kullanılan sıralama lgoritmalarının uygulamaları için, alttaki siteye göz atın: http://www.sorting-algorithms.com/ Her sıralama avantaj ve dezavantajlara sahiptir. Bazıları başlangıçta liste neredeyse sıralıysa bu tür listeleri oldukça hızlı sıralar. Bazıları liste tamamen rastgele sıralandıysa o tür listeleri hızlı sıralar. Diğer listeler hızlı sıralanır, fakat daha fazla hafıza tüketir. 18.1 Değerleri Takas Etmek Bir dizide iki değeri değiş tokuş etmek çoğu sıralama algoritmasının ortak işlemidir. Örneğin, programın alttaki gibi bir listesinin olduğunu varsayalım: Geliştirici sırayla 15 ve 14 sayılarını içeren 0 ve 2 konumlarının yerlerini değiştirmek istiyor. Bu kodu yazmak için ilk deneme şuna benzer: list[0] = list[2] list[2] = list[0]Grafikte, gerçekleşen şu olacaktır: Açıkça görünüyor ki bu çalışmıyor. İlk list[0] = list[2] ataması 0 konumundaki 15 değerinin üzerine 2 pozisyonundaki 14 değerinin yazılmasına sebep oluyor ve geri alınamaz kayıp ortaya çıkıyor. Alttaki satırda list[2] = list[0] ile 14 sadece değeri zaten 14 olan 2. hücreye geri kopyalanıyor. Bu sorunu çözmek için, bir dizideki değerlerin yerlerinin değiştirilmesi üç aşamada yapılmalıdır. Değiştirme işlemi esnasında değeri tutması için geçici bir değişken oluşturmak gereklidir. Değişimi yapacak kod alttaki gibidir: temp = list[0] list[0] = list[2] list[2] = temp İlk satır 0 konumundaki değeri temp değişkenine kopyalıyor. Bu, kodun 0 konumuna veri kaybedilmeden 2 konumundaki veriyi yazmasına izin veriyor. Son satırda o anda temp değişkeninde tutulan 0 konumunun eski değeri alınıyor ve 2 konumuna yerleştiriliyor. 18.2 Seçmeli Sıralama Seçmeli sıralama listenin başından başlar. Daha sonra kod listenin kalanını tarar ve en küçük sayıyı bulur. En küçük sayı o konumdakiyle yer değiştirir. Daha sonra kod bir sonraki sayıya kayar. Görsel olarak, sıralama alttaki resimdeki gibidir: Seçmeli sıralama için olan kod iki iç içe döngü içerir. Dış döngü kodun en küçük değerle yer değiştireceği konumu tutar. İç döngü geçerli konumdan başlayarak sağa doğru en küçük değeri tarar. En küçük değeri bulduğunda, değiş tokuş işlemi gerçekleşir. # Seçmeli sıralama def selection_sort(list): # Tüm dizi boyunca döngü for curPos in range( len(list) ): # En küçük sayıya sahip konumu bul # Geçerli konumdan başla minPos = curPos # Kalanını tara for scanPos in range(curPos+1, len(list) ): # Bu konum en küçük mü? if list[scanPos] < list[minPos]: # Bu en küçük, bu konumu en küçük olarak işaretle minPos = scanPos # İki değerin yerini değiştir temp = list[minPos] list[minPos] = list[curPos] list[curPos] = temp Dış döngü yer zaman $n$ kez çalışacaktır. İç döngü $n/2$ kez çalışacaktır. Bu listenin sıralı olup olmadığına bakılmaksızın gerçekleşecektir. Döngülerin verimliliği 16. satırda minPos ve curPos'un eşit olup olmadığının kontrolüyle artırılabilir. Bu değerler eşitse, üç satırlık değiştirme kodunun yapılmasına gerek yoktur. Yukarıdaki sıralama kodunu test etmek için alttaki kod kullanılabilir. İlk fonksiyon listeyi ekrana yazdıracaktır. Sontaki kod rastgele sayılardan oluşan bir liste oluşturacak, onu yazdıracak, sıralayacak ve sonra tekrar yazdıracaktır. def print_list(list): for item in list: print( "%3d" % item,end="" ) print() # Rastgele sayılardan oluşan bir liste oluştur list = [] for i in range(10): list.append(random.randrange(100)) # Sıralamayı dene print_list(list) selection_sort(list) print_list(list) 18.3 Eklemeli Sıralama Eklemeli sıralama seçmeli sıralamaya dıştaki döngünün nasıl çalıştığı konusunda benzerdir. Eklemeli sıralama listenin sol tarafından başlar ve sağ tarafı ile çalışır. Fark ise eklemeli sıralama en küçük elemanı seçip onu yerine koymaz; eklemeli sıralama zaten sıralanmış olanın sağındaki bir sonraki elemanı seçer. Daha sonra ekleme yapacağı doğru yeri bulana kadar her daha büyük elemanı ileri kaydırır. Görsel olarak, şuna benzer: Eklemeli sıralama listeyi iki bölüme ayırır; "sıralanmış" yarısı ve "sıralanmamış" yarısı. Dış döngünün her bir devrinde, algoritma bir sonraki sıralanmamış elemanı alır ve onu listede gerekli araya ekler. Alttaki kodta, keyPos listenin sıralanmış ve sıralanmamış kısımları arasındaki sınırı işaretler. Algoritma scanPos değişkenini kullanarak keyPos'un solunu tarar. Eklemeli sıralamada scanPos'un artmak yerine azaldığına dikkat edin. keyValue'den büyük her hücre konumu bit yöne taşınır(sağa doğru). Döngü keyValue'den daha küçük bir konum bulduğunda, durur ve keyValue değerini onun soluna koyar. Bir eklemeli sıralamada dış döngü $n$ kez çalışacaktır. İç döngü eğer döngü rastgele karıştırıldıysa ortalama $n/2$ kez çalışacaktır. Eğer döngü sıralanmış bir döngüye zaten yakın durumdaysa, iç döngü pek fazla çalışmaz ve sıralama zamanı $n$'e daha yakındır. def insertion_sort(list): # İkinci elemandan başla (konum 1). # Bu elemanı kullanarak listeye # ekleme yap. for keyPos in range(1, len(list)): # Eklenecek elemanın değerini al keyValue = list[keyPos] # Sol tarafa doğru tara scanPos = keyPos - 1 # Her elemana döngü kur, konuma # ulaşana kadar onları kaydır while (scanPos >=0) and (list[scanPos] > keyValue): list[scanPos+1] = list[scanPos] scanPos = scanPos - 1 # Her şey yoldan dışarı taşındı, keyValue # değerini doğru konuma ekle list[scanPos+1] = keyValue 18.4 Tekrar Bu sorular çalışma kağıdı olarak da aynı şekilde indirilebilir: [docx] [doc] [pdf] Çalışma kağıdını tamamladıktan sonra, ne kadar iyi yaptığınızı cevap kağıdına bakarak kontrol edebilirsiniz. Cevap anahtarı buradan indirilebilir: [docx] [doc] [pdf] Çalışma kağıdındaki cevapların tam açıklamasını içeren bir video [buradan] görüntülenebilir. - Yatay bir satıra on adet yıldız (*) yazdıran bir "for" döngüsü yazın. - 10x10 yıldız kutusu yazdıran iki iç içe for döngüsü yazın. - 100 sıfırdan bir dizi oluşturan Python kodu yazın. - Bir sınıf ve nesne arasındaki fark nedir? - Fonksiyon ile metot arasındaki fark nedir? - Uğurlu sayınızı yazdıran bir fonksiyon yazın. - Uğurlu sayınızı yazdıran fonksiyonu çağırın. - Üç sayı alan ve ortalamasını döndüren bir fonksiyon yazın. - Programlama sınıfları: - Top isimli bir sınıf için kod yazın. pozisyon ve hız niteliklerini verin. - update() isimli, topun hızına göre konumunu ayarlayacak bir metot oluşturun. - Ball sınıfının bir örneğini oluşturup niteliklerini ayarlayın. - Create a for loop that will call the update() method on ball 10 times, and print the ball's position. Top için update() metodunu 10 kere çağıracak ve topun konumunu ekrana yazdıran bir for döngüsü oluşturun. - 25 ile 40'ın yerlerini değiştiren kod yazın. - 2 ile 25'in yerlerini değiştiren kod yazın. - Alttaki kod neden çalışmaz? - Alttaki sayı listesinin nasıl sıralandığını seçmeli sıralamayı kullanarak gösterin: - Alttaki sayı listesinin nasıl sıralandığını seçmeli sıralamayı kullanarak gösterin: - Alttaki sayı listesinin nasıl sıralandığını eklemeli sıralamayı kullanarak gösterin: - Alttaki sayı listesinin nasıl sıralandığını eklemeli sıralamayı kullanarak gösterin: - Seçmeli sıralamada minPos'un ne yaptığını açıklayın. - Seçmeli sıralamada curPos'un ne yaptığını açıklayın. - Seçmeli sıralamada scanPos'un ne yaptığını açıklayın. - Eklemeli sıralamada keyPos ve keyValue değişkenlerinin ne olduğunu açıklayın. - scanPos'un eklemeli sıralamada olmasını açıklayın. - Sıralamaları iç döngünün ve dış döngünün kaç kez çalıştığını ekrana yazdıracak şekilde değiştirin. 18.4.1 Önceki Bölümler 18.4.2 Sıralama Bölümü You are not logged in. Log in here and track your progress. English version by Paul Vincent Craven Russian version by Vladimir Slav Turkish version by Güray Yildirim Dutch version by Frank Waegeman Hungarian version by Nagy Attila Portuguese version by Armando Marques Sobrinho and Tati Carvalho Spanish version by Aitor Peinador and Antonio Rodríguez