Python’a Giriş

Python-programming-Feature_1290x688_MS

 

Herkese selamlar,

Bu yazı serimizin ilki olduğu için hemen bu yazımızda ve ilerideki yazılarda hangi sorularınıza cevap bulacağınıza değinelim,
Seri, tahminen 15 yazıdan oluşacak ve sıfırdan başlayıp sizi orta seviye üstü(upper intermediate :))  bir seviyeye kadar çıkartacak.

Biraz Python’ın kendisine bakalım. Bildiğiniz üzere Python açık kaynak(open source) kod olup, herkese ve her kesime açık. İsteyen istediği gibi kullanıp, geliştirebiliyor. Aynı zamanda hali hazırda çeşitli gönüllülerden oluşan Python Yazılım Vakfı’da var. ( Python Software Foundation)
Şu an piyasada iki çeşit Python sürümü var. Biri 3x ve diğeri 2x. Benim tavsiyem 3x sürümünü seçmeniz çünkü şu an neredeyse tüm geliştiriciler bunun üzerine çalışmakta.
Hemen şurası Pythonın  kendi sitesi. Siteye girip sol üstten ‘download’ yazan yere tıklayıp çıkan seçeneklerden 3x sürümünü indirebilirsiniz.

Peki neden Python? Neden Java,C#,C++,C, PHP,Cobol,Fortran vs değilde Python? En basit cevabı: Çünkü basit 🙂 (Tabi bazılarının alanları çok farklı ama olsun)
Python’ın birkaç paketi var ve bunlardan birkaçı Numpy, Scipy, Matplotlib’dir. Matlab’ın toolboxlarıyla benzer işler yapan bu modüller bedava olmasına rağmen bahsettiğim Matlab Toolbox’ları ise binlerce dolardır. Sadece bu bile başlı başına seçim yapmaya yeter.
Beleş(tabi sadece Ağa’ya değil köylüye de beleş,ula ağanın… neyse) olmasının yanında açık kaynaklı olduğundan üzerinde her türlü oynama ve geliştirme de yapabiliyorsunuz. Ticari bir projenizde kullanıp herhangi bir yere ücret ödemenize gerek olmuyor.

Bunlar dış etkenler ve direkt göze çarpanlar. Oysa içine girince ilk göze çarpan şey çok basit ve yalın olan söz dizimi(syntax). Evet gerçekten bir sürü parantezden, süslü tanımlardan arındırılmış basit ve şık bir yazıma sahip.

Ekrana ‘merhaba dünya’ yazdırmak için sadece
Hello World

yazmanız yeterli.Halbuki diğer dillerde önce statik void yok bilmem main void parantezler virgüller falan.

Daha akademik ifadeleri İTU Fizik Bölümü’nden Berkin Malkoç, ‘Temel Bilimler ve Mühendislik Eğitiminde Programlama Dili Olarak Python’ adlı makalesinde(pdf) ele almış. Makalede kısaca:

+Açık kaynaklı ve ücretsiz, istediğiniz gibi kullanmakta özgürsünüz. Herhangi bir şirketle, firmayla, mahkemeyle, telif hakkıyla uğraşmayacaksınız.

+Kolay bir söz dizimine sahip olması. Kodların kolay okunması ve anlaşılır olması.

+Dinamik bir dil ve yorumlayıcıda çalışıyor. Derlemeye(compile) gerek olmadan yorumlanarak çıktı üretiyor.

+Nesne yönelimlidir(OOP(Object Oriented Programming).

+Sürekli olarak geliştiriliyor ve kullanan kişi sayısı gün geçtikte katlanıyor

+Bilimsel araştırmalarda çok kullanılıyor

Olmasından ötürü Python’ın seçilmesi gerektiğini belirtmiş.

Tekrar buraya dönecek olursak, önümüzdeki yolu şöyle çizebiliriz:
Python nedir gibi bir sorudan başlayıp,ki deniz seviyesine göre 0(sıfır), Yapay Zeka(Artificial Intelligence)’da Python kullanımı, Raspberry Pi 3 programlamada Python, arayüz tasarımı(GUI) gibi ileri seviye{ki deniz seviyesine göre +3000m civari ki bunu en yüksek çıta olan Everest(8.848 m)’e göre oranlayabiliriz} konuları diyebileceğimiz konulara da değineceğiz.
Paralel olarak yine bu blogta Yapay Zeka, Assembly, Raspberry Pi, Arduino, Robotik gibi konular da işlenecek.

Bu Python programlama dili maceramızın ilk basamağı biraz Python ve geliştiricisinden bahsetmek istiyorum. “I am the author of the Python programming language.” Diye başlamış Guido van Rossum abimiz. Kendisi 1956 yılı Hollanda doğumludur. Şu an Dropbox’ta çalışıyor ve daha önce de(2005) Google’da çalışmış. Söylediğine göre çalıştığı yerde zamanının yarısını Python’ı geliştirmek için harcıyormuş. Ve Python’ı 1980’lerin sonuna doğru geliştirmiş.(Kasım 1989)

Peki bu ismi nerden bulmuş? Anakonda, çıngıraklı yılan, çıyan, kobra falan da olabilirmiş diye düşünüyorsanız yanılıyorsunuz çünkü esinlendiği şey bir hayvan değil komedi grubu Nam-ı diğer Monty Python grubu. Ki bu grup BBC için Monty Python’s Flying Circus adlı 45 bölümlük bir dizi çevirmişler ve van Rossum abimiz bunları pek sevmiş. Bu arada Anaconda adında bir Python editörü de varmış.

Evet programlamaya başlamadan önce değinilmesi gereken çoğu konuya değindik. Unutmuş olabileceğim konular muhakkak vardır ama hatırladıkça ilerleyen yazılarda ekleme yaparız.

Şimdi ise biraz algoritmadan bahsedelim. Algoritma, belli bir problemi çözmek ve belli bir amaca ulaşmak için tasarlanan yol demek. Wikipedia’da direkt bu yazıyor. Ve kökeni taa 800’lerde yaşamış Harezmi’den geliyor. İlk olarak bu kelimeyi kullanan da yine kendisidir.(Hisab el-cebir ve el-mukabala)
Algoritmaların da bir sürü çeşidi vardır. Bizim programlamada, en azından Python’da, kullanacağımız algoritma ise kısaca yazacağımız programın sonuca ulaşması için izleyeceği mantık basamaklarından oluşuyor.

Mesela arkadaşınızdan telefon bekliyorsunuz diyelim. Sürekli olarak telefonun çalıp çalmadığını kulaklarınızla kontrol etmeniz lazım ki bu 1.basamağı oluşturuyor. Eğer telefon çalmıyorsa o an ne iş ile ilgileniyorsanız yapmaya devam edebilirsiniz. Bu kontroller sırasında telefonun çalma sesini duyarsanız, yaptığınız işi bırakıp telefona yönlenmeniz lazım ve bu da 2.adımı oluşturur.(Tabi telefonun misafir odasındaki eski elle döndürmeli telefon olduğunu da unutmayalım ) Sonra eğer telefona yetiştiyseniz ve hala çalmaya devam ediyorsa elinize alıp kulağınıza götürüp -Alo demeniz lazım. Ve bu da 3. Ve son basamağı oluşturuyor. Tabi arada atladığımız çok şey var ama temel mantık bu şekilde diyebiliriz.

Eğer programlamaya yeni başlayan biri iseniz mümkün mertebe algoritma üzerine bayağı çalışmanız ve temel mantığını öğrenmeniz lazım. Bunun için size ‘hourofcode’ projesini gönül rahatlığıyla tavsiye edebilirim. Tabi piyasada çeşitli kitaplarda mevcut.

Ve nihayet ilk kodumuzu yazmaya geldi sıra.
Adetten olduğundan ilk olarak ekrana bir ‘Hello World’ yazalım. Bunun için 3x sürümünü indirip kurduğunuz Python 3x kısayoluna tıklayıp Etkileşimli Kabuk’u açıyoruz.
Karşımıza şöyle bir şey çıkacak:

Shell

Şimdi etkileşimli kabuk açıldığına göre yazabiliriz:

Hello World

 

 

Eğer sorunsuz bir şekilde yukardaki gibi bir sonuç ile karşılaştıysanız siz bu işi kaptınız demektir.

Çünkü Mark Zuckerberg, Elon Musk, Steve Jobs, Jeff Bezos, Guido van Rossum gibi dâhilerin de yaptıkları ilk iş bu idi. Kim bilir belki ilerde sizde bir süper kahraman olabilirsiniz. Hatta Şirinleri bile görebilirsiniz belki.

Print Komutu ve Temel Bilgiler
Şimdi biraz yazdığımız koda geri dönelim ve incelemeye başlayalım.
Ekrana >>>print() diye bir şey yazdık. İşte bu şu an öğrendiğimiz ilk fonksiyondur.

Biraz daha detay için etkileşimli kabuğa(bundan sonra kısıca kabuk diyeceğiz),
>>>help(print)

Veya

>>>help>print  

yazarak print() fonksiyonu hakkında daha detayli bir bilgiye ulaşabiliriz.

help-print

Şöyle bir bilgi çıktı karşımıza. Şimdi tek tek inceleyelim.

Yukarda görmüş olduğunuz

⇒ sep=’ ’

adlı değişken print() fonksiyonu içine yazdığımız değerler arasına boşluk bırakıyor. Tabi biz istediğimiz karakteri bırakabiliriz ama tanımlı olarak bir boşluklu olarak var.

Sep1

Normalde boşluk olmaması lazım iki kelime arasında ama sep parametresi boşluk tanımlı olduğu için, kelimeler arasına oromatik boşluk atıyor. Aslında orijinal kod şu şekildedir:

sep2jpg

Diyelimki şöyle bir şey yazıyoruz:

sep3

Ama bunları bitişik yazmak istiyorken kendi kendine boşluk atıyor. O halde bundan kurtulmak için aynen şunu yapıyoruz:

sep4

Evet işte yapmak istediğimiz şey oldu.

Şimdi ise biraz değişikliler yapalım:

sep5

Gördüğünüz gibi değerler arasına istediğimiz karakteri yazdırabiliyoruz. Artık gerisi sizin hayal gücünüze kalmış.

Bir diğer parametre ise

⇒ end

Bu parametre her print() fonksiyonundan sonra imleci bir satir aşağı kaymaya programlanmıştır.

end1

Yukarda gösterildiği gibi aslında siz print() yazınca bu değerleri de bu şekilde seçmiş oluyorsunuz. İsterseniz –> end=’\t’ veya istediğiniz bir şekilde sonlandırabilirsiniz.

Diğer parametreler ise ⇒ file ve ⇒ flush. Ama biz bunları metin dosyalarını öğrendikten sonra göreceğiz.

Bu arada sep ve end’i kısa kısa anlatıp geçtik ama bunlar ile ilgili çeşitili deneme-yanılma yapmalısınız.

Print dışında istediğimiz karakterleri ekrana yazdırmanın bir başka yolu daha var. C ve java’dan farklı ve çok kolay olarak, yazmak istediğiniz metni veya harf-kelime-karakteri sadece tırnak işaretleri

Arasına alarak yazdırabilirsiniz.

end5

Konularımıza devam ediyoruz.

Peki diyelim ben ekrana bir kelime yazdım ama bunun sadece belli uzunlukta,örneğin 2.harften başlayarak ekrana yazdırmak istiyorum, veya sadece son harfini. Bunun için Python biz bir kolaylık sağlıyor. Tıpkı Matlab’daki matrisler gibi Pyhton’ da her karakter için 0’dan başlayıp karakter dizisinin uzunluğu kadar sayı atar.
indis10

Örneklerde görüldüğü üzere, herhangi bir karakter dizinin istediğimiz elemanına ulaşmak parantez içine elemanın kaçıncı sırada olduğunu girebilmemiz kadar kolay. Yalnız burada dikkat edilmesi gerekten, örnekten de görüldüğü üzere karakter dizisinin 1.elamanın ‘1’ den değil de ‘0’ indisten başlıyor olması. 0,1,2,3,4,… diye devam ediyor. Bir diğer kritik nokta ise tersten bakınca da  ‘-1’ den başlıyor olması. Yukarda 3.örnekte gösterildiği gibi. -1,-2,-3,-4,… diye en baştakine karaktere kadar numaralandırılabilir.

Kaçış Dizilerine de bakalım.

⇒ \  : Bu işaret ile karakter dizilerini tek tırnak-çift tırnak ve özel karakter kullanımı kullanma zorluğundan kurtulabilirsiniz.

kaçış1

Örnekten de görüldüğü üzere hemen kendisinden sonra gelen özel karakterini etkileşimli kabuğun bir komut olarak algılamasını engelliyor.

⇒ \n  : Bu ise en çok kullanılan kaçış dizisidir. Bir satır aşağı atlamayı sağlar.

alt-satır

⇒ \t : ( bu ise bir tab’lık boşluk bırakmaya yarar.)

⇒ r : Eğer bu kaçış dizisini
rindis

Şeklinde kullanırsanız, diğer tüm kaçış dizilerini görmezden gelecektir.

⇒ \x : Bu ise verilen bir onaltılık gösterimin asc2 karşılığını veriyor.
16lık

⇒ \a : Bunu söylemem kendiniz deneyip görün ama bilgisayarın sesinin açık olduğundan emin olun .

Bir iki tane daha var ama hepsini devletten beklemeyin, biraz da kendiniz bakın. Devlet bize baqir.

 

Şimdilik yazımıza bir son verelim. Önümüzdeki derste birkaç fonksiyon ve döngüler konusunu işlemeye çalışacağız. Hatta bir mesajı şifrelemeyi(encrypt) ve o şifreyi çözmeyi(decrypt) de deneyeceğiz. Onun dışında kendimize bir video internet sayfası oluşturmayı da deneyeceğiz.

Şimdilik hoşça kalın 🙂

 

 

Total Views: 2878 ,

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.