<jupyter_start><jupyter_text>Programlama Hafta 1:  Bilgisayarlar ve Programlama - kavramlar Dr. <NAME> **Computer:** Matematiksel problemleri hesaplama anlamında **compute** kelimesinden türetilmiştir.Türk Dil Kurumu tanımı: Çok sayıda aritmetiksel veya mantıksal işlemlerden oluşan bir işi, önceden verilmiş programa göre yapıp sonuçlandıran elektronik aygıt, elektronik beyin.  Donanım (Hardware) Bir bilgisayar donanımının birimleri* **Girdi Aygıtları:** Bilgisayar sistemlerinde verilerin girdisi amaçlı kullanılan birimler* **Çıktı Aygıtları:** çıktı amaçlı kullanılan birimler* **Bellek Birimleri:** Verilerin sürekli veya gecici olarak saklanan birimler. Random access memory (RAM) ve Read only memory (ROM)* **İşlemci:** Aritmetik ve mantık işlemlerin yapıldığı , yapılan işlemlerin denetlendiği ve yönlendildiği birim Central Processing Unit (CPU)* **İkincil Hafıza Birimler:** Verilerin kalıcı olarak depolandığı alanlar  Yazılım (Software)Bilgisayarda kullanılan her türlü programa yazılım denir.Yazılımlar, sistem yazılımları (system software), uygulama yazılımları (application software) ve çevirici yazılımları olmak üzere üç türdür.  1- Sistem YazılımlarıBilgisayarların en temel yazılımları sistem yazılımlarıdır bu yazılımlar genelde işletim sistemidir.  2- Uygulama YazılımlarıKullanıcıların işlerine yönelik gereksinim duydukları yazılımlardır  3- Çevirici YazılımlarıEn gerekli olmazsa olmaz yazılımlardan biridir ve çevirici yazılımlar yani programlama dilleri işletim sistemleri ve uygulamaları yapmamıza yarayan yazılımlarıdır.1- Makine Dilleri2- Assembly Dilleri3- Yüksek Seviye Diller    - C    - C++    - C    - Java    - Python Makine Dili: Bilgisayarların aslında anladığı tek dildir. Bütün komutlar 1 ve 0'dan oluşur. "hello"01101000 01100101 01101100 01101100 01101111Assembly Dili: Daha anlaşılabilir genelde basit  komutlardan (instruction set) oluşan bir dildir. Örneğin       lda 8         ; 'H' Screen Code      sta VICSCN + 0 ; 'H' in $0400 screen memory      lda 5         ; 'E' Screen Code      sta VICSCN + 1 ; 'E' in $0400+1 screen memory      lda 12         ; 'L' Screen Code      sta VICSCN + 2 ; 'L' in $0400+2 screen memory      lda 12         ; 'L' Screen Code      sta VICSCN + 3 ; 'L' in $0400+3 screen memory      lda 15         ; 'O' Screen Code      sta VICSCN + 4 ; 'O' in $0400+4 screen memory        Derleyici (Compiler)Derleyici , herhangi bir programlama dili ile yazılmış programı makine diline (çalıştırılabilir koda) çevirir.Pyton için pyinstalle, py2exe gibi programlar derlememe işlemi yapar Yorumlayıcı (Interpreter)Yorumlayıcı ile bir programlama dilini satır satır çalıştırır.  PythonPython, nesne yönelimli, yorumlamalı, birimsel (modüler) ve etkileşimli yüksek seviyeli bir programlama dilidir.Girintilere dayalı basit söz dizimi, dilin öğrenilmesini ve akılda kalmasını kolaylaştırır.Bu da ona söz diziminin ayrıntıları ile vakit yitirmeden programlama yapılmaya başlanabilen bir dil olma özelliği kazandırır.Modüler yapısı, sınıf dizgesini (sistem) ve her türlü veri alanı girişini destekler.Hemen hemen her türlü platformda çalışabilir (Unix, Linux, Mac, Windows, Amiga, Symbian). Python ile sistem programlama, kullanıcı arabirimi programlama, ağ programlama, web programlama, uygulama ve veri tabanı yazılımı programlama gibi birçok alanda yazılım geliştirebilirsiniz. Büyük yazılımların hızlı bir şekilde prototiplerinin üretilmesi ve denenmesi gerektiği durumlarda da C ya da C++ gibi dillere tercih edilir.Python 1980lerin sonunda ABC programlama diline alternatif olarak tasarlanmıştı.  - Numpy- scipy- Pandas- matplotlib- Bokeh- scikit-Learn- Opencv- scikit-image  AlgoritmaBir problemi çözmek için kullanılacak yol olarak adlandırabiliriz.Bir algoritma- net olmalı , ve kesinlikle belirsizlik içermemeli- Bilgisayar ortamında çalıştırılabilir olmalıdır- sıralı işlem basamaklarından oluşmalıdır- belirli zaman aralığında çözülmelidir.Algoritmalar,- Düz metin ifadeleri,- Kaba kod (Pseudo code)- Akış şemaları  Düz Metin İfadelerigünlük konuşma dili yapılan ifadelerdir. Kaba Kod (Pseudo Code)yarı türkçe , yarı ingilizce ifadelerden oluşur Akış Şeması (Flow Charts)Görsel olarak simge ya da sembollerle ifade edilmiş şekline akış şemaları (flowchart) adı verilir.      İki sayının Toplamıiki sayının toplamını hesaplayan basit bir matematiksel işlemin algoritmasını düz metin ve akış şemaları ile gösteriniz.             1- Başla2- Gir , iki sayi (sayi1, sayi2)3- Topla, girilen iki sayi (Toplam = sayi1 + sayi2)4- Yaz, toplam sonucu (Topla)5- Dur          Kurulumhttps://www.anaconda.com/products/individual **Yorum Satırları, Değişkenler, Veri Tipleri ve Operatörler**<jupyter_code>#Bu kod ekrana yazı yazılmasını sağlamaktadır.
print ("Konu: Yorum satırlarını kullanma")
#Her satırın başına # işareti ekleyerek 
#Alt alta yorum satırları oluşturabilirsiniz<jupyter_output><empty_output><jupyter_text>**Örnek 2**Yorum satırlarını kod satırının devamında aynı satırda kullanabilirsiniz. Bu kullanımda önce kod gelir,devamında yorum satırı “” işareti ile başlar (öndeki kod çalışır), daha sonra satır sonuna kadar yorumsatırı olarak dikkate alınmaz.  Degişkenler Değişken Tipleri int integer (tamsayı) float floating point (kayan noktalı sayılar - reel sayılar) str string (Harf katarı, cümle , kelime )Değişken ismi tanımlamada kurallar - [A-Z],[a-z],[0-9],_ kullanılır- isimler sayı ile başlamaz- Küçük Büyük harfler ayrıdır.<jupyter_code>ogrenciAdi = "2890"  #String türünde bir değişken
ogrenciNo = 105 #Tamsayı (Integer) türünde bir değişken
ogrenciOrtalama = 86.75 #Floating Point türünde bir değişken
print(ogrenciAdi)
print(ogrenciNo)
print(ogrenciOrtalama)

print(type(ogrenciAdi))
print(type(ogrenciNo))
print(type(ogrenciOrtalama))<jupyter_output><empty_output><jupyter_text>Bilgisayarda Basit Bir Çıktı - Print fonksiyonu<jupyter_code>a = 2021 #integer (tam sayı)
b = "İstanbul Üniversitesi" #string değişken
print(a," yılındayız ve ",b," öğrencisiyiz")
print(126//25)<jupyter_output><empty_output><jupyter_text>Formatlı Yazma Örnekleri<jupyter_code>a=2020
b="İstanbul Üniversitesi"

print("{} yılındayız ve {} öğrencisiyiz".format(a,b))
 # a değişkenim yılı almakta
a=2020
# b değişkenim okulunun adını
b="İstanbul Üniversitesi"
#
print("{1} yılındayız ve {0} öğrencisiyiz".format(b,a))
a=2021.22344333
b="İstanbul Üniversitesi"

print("%0.3f yılındayız ve %s öğrencisiyiz"%(a,b))

# %d integer
# %f float
# %s string 
print('Merhaba {name}, {selam}'.format(selam = 'Günaydın', name = 'Ahmet'))<jupyter_output><empty_output><jupyter_text>Print ve Tipler- %d tam sayı  int()- %f float sayı  float()- %s string str()yapı için yer tutucudur.<jupyter_code>sayi1 = float(input("Lütfen sayı giriniz:"))
sayi2 = float(input("Lütfen sayı giriniz:"))
toplam = sayi1 + sayi2
print("toplam=",toplam)
print("sayi 1'in tipi",type(sayi1))
print("sayi 2'nin tipi",type(sayi2))
print("toplamın tipi",type(toplam))
# Dikkat burada yeni bir şey var bakalım bulacakmısınız
x = 12.3456789 #float yapı
y = 23433  #integer türünde
z = "merhaba millet" #String türünde
print("x'in değeri  %1.3f" %x)
print("z'in değeri  %.7s" %z)<jupyter_output>x'in değeri  12.346
z'in değeri  merhaba<jupyter_text>String İşlemleri  Örnek: Ekrana **Python programlama dilinin adı "piton" yılanından gelmez** yazdırmak isteyelim<jupyter_code>print("Python programlama dilinin adı 'piton' yılanından gelmez")
print("""Python programlama dilinin adı "piton" yılanından gelmez""")
print("""İstanbul'un 5 günlük hava durumu tahmini""")
print("""Python programlama dili <NAME>
adlı Hollandalı bir programcı tarafından 90’lı
yılların başında geliştirilmeye başlanmıştır. Çoğu
insan, isminin Python olmasına bakarak, bu programlama
dilinin, adını piton yılanından aldığını düşünür.
Ancak zannedildiğinin aksine bu programlama dilinin
adı piton yılanından gelmez.""")<jupyter_output>Python programlama dili <NAME>
adlı Hollandalı bir programcı tarafından 90’lı
yılların başında geliştirilmeye başlanmıştır. Çoğu
insan, isminin Python olmasına bakarak, bu programlama
dilinin, adını piton yılanından aldığını düşünür.
Ancak zannedildiğinin aksine bu programlama dilinin
adı piton yılanından gelmez.<jupyter_text>Print özel konular sep ifadesi, İngilizcede separator (ayırıcı, ayraç) kelimesinin kısaltmasıdır. Dolayısıyla print() fonksiyonundaki bu sep parametresi, ekrana basılacak öğeler arasına hangi karakterin yerleştirileceğini gösterir.<jupyter_code>print("T", "C", sep=".")
print("http://", "www", "google", "com", sep="*")
print(1, 2, 3, 4, 5, sep="/")<jupyter_output>1/2/3/4/5<jupyter_text>Print fonksiyonu için özel karakterler Kaçış Dizileri - \n bir satır aşağı indir (new line) - Satır Başı  - \t tab tuşu kadar ileri yaz - Sekme<jupyter_code>print("birinci satır\nikinci satır\nüçüncü satır")
print("birinci satır", "ikinci satır", "üçüncü satır", sep="\n")
print("birinci satır", "ikinci satır", "üçüncü satır", sep="\t")<jupyter_output>birinci satır	ikinci satır	üçüncü satır<jupyter_text>**Soru** Acaba aşağıdaki gibi bir çıktıyı nasıl elde etmek için print ile neler yapabiliriz?L.i.n.u.x<jupyter_code>print("L", "i", "n", "u", "x", sep=".")
print("L", "i", "n", "u", "x", sep=".")
print("F", "e", "n", "e", "r", "b", "a", "h", "ç", "e")
print(*"Fenerbahçe",sep=" ")<jupyter_output><empty_output><jupyter_text>* İşaretinin string yapılarda kullanışıprint(*"Fenerbahçe")yıldız işareti; “Fenerbahçe” karakter dizisinin her bir öğesini parçalarına ayırarak, bunları tek tek print() fonksiyonuna yolluyor. Yani sanki print() fonksiyonunu şöyle yazmışız gibi oluyor:F e n e r b a h ç e  Aynı Satır Başı (\r)Bu kaçış dizisi, bir karakter dizisinde aynı satırın en başına dönülmesini sağlar.<jupyter_code>print("Merhaba\rZalim Dünya!")<jupyter_output><empty_output><jupyter_text>Burada ne oluyor bakalım yorumlayalım<jupyter_code>print("C:\ülke\türkiye\iller\rize\nüfus.txt")<jupyter_output><empty_output><jupyter_text>Kullanıcıdan Bilgi Almak input() Fonksiyonuinput() da daha önce öğrendiğimiz type() ve print() gibi bir fonksiyondur.<jupyter_code>isim = input("İsminiz nedir? ")
print("Merhaba", isim, "!\n")
print("Bugün hava soğuk!!!")
yas = input("Yaşınız: ")

print("Demek", yas, "yaşındasın.")
print("Genç mi yoksa yaşlı mı olduğuna karar veremedim.")

print(type(yas))<jupyter_output>Yaşınız: 12
Demek 12 yaşındasın.
Genç mi yoksa yaşlı mı olduğuna karar veremedim.
<class 'str'><jupyter_text>**Soru** Kullanıcıdan Çap'ı alınan bir dairenin alanını hesaplayan program yazınız.<jupyter_code>#Kullanıcıdan dairenin çapını girmesini istiyoruz.
cap = float(input("Dairenin çapı: "))

#Kullanıcının verdiği çap bilgisini kullanarak
#yarıçapı hesaplayalım. Buradaki int() fonksiyonunu
#ilk kez görüyoruz. Biraz sonra bunu açıklayacağız
yaricap = cap / 2

#pi sayımız sabit
PI = 3.14159

#Yukarıdaki bilgileri kullanarak artık
#dairenin alanını hesaplayabiliriz
#alan = PI * (yaricap * yaricap)
alan = PI * (yaricap**2)  #pow(yaricap,2)

#Son olarak, hesapladığımız alanı yazdırıyoruz
#print("Çapı", cap, "cm olan dairenin alanı: ", alan, "cm2'dir")

print("Çapı %d cm olan dairenin alanı: %.3f cm2'dir"%(cap,alan))<jupyter_output>Dairenin çapı: 12
Çapı 12 cm olan dairenin alanı: 113.097 cm2'dir<jupyter_text>Tip DönüşümleriDiyelim ki kullanıcıdan aldığı sayının karesini hesaplayan bir program yazmak istiyoruz. Öncelikle şöyle bir şey deneyelim:<jupyter_code>sayi = input("Lütfen bir sayı girin: ")

#Girilen sayının karesini bulmak için sayı değişkeninin 2.
#kuvvetini alıyoruz. Aynı şeyi pow() fonksiyonu ile de
#yapabileceğimizi biliyorsunuz. Örn.: pow(sayı, 2)
print("Girdiğiniz sayının karesi: ", pow(sayi,2))<jupyter_output><empty_output><jupyter_text>Bu kodları çalıştırdığımız zaman, programımız kullanıcıdan bir sayı girmesini isteyecek, ancak kullanıcı bir sayı girip Enter tuşuna bastığında bir hata mesajıyla karşılaştık.Hata mesajına baktığınızda, ‘TypeError’ ifadesinden, bunun veri tipine ilişkin bir hata olduğunu tahmin edebilirsiniz. Eğer İngilizce biliyorsanız yukarıdaki hata mesajının anlamını rahatlıkla çıkarabilirsiniz. İngilizce bilmeseniz de en sondaki ‘str’ ve ‘int’ kelimeleri size karakter dizisi ve sayı adlı veri tiplerini hatırlatacaktır.  Tip Dönüşümleriinput() fonksiyonundan gelen veri her zaman bir karakter dizisidir.dönüşüm yapmalıyız şu an için bilmemiz ana tip dönüşüm fonksiyonlarıint() Sayı değerli bir karakter dizisini veya kayan noktalı sayıyı tamsayıya (integer) çevirir.float() Sayı değerli bir karakter dizisini veya tamsayıyı kayan noktalı sayıya (float) çevirir.complex() Herhangi bir sayıyı veya sayı değerli karakter dizisini karmaşık sayıya (complex) çevirir.str() Herhangi bir sayıyı veya sayı değerli karakter dizisini karakter dizisine çevirir. Mesela şu basit örneği inceleyelim ve sizce ne  oldu?<jupyter_code>sayı1 = int(input("Toplama işlemi için ilk sayıyı girin: "))
sayı2 = int(input("Toplama işlemi için ikinci sayıyı girin: "))

print(sayı1, "+", sayı2, "=", sayı1+ sayı2)

print("Sayı 1 tipi:",type(sayı1),sayı1)
print("Sayı 2 tipi:",type(sayı2),sayı2)
print("Sayı 1 + Sayı 2 tipi:",type(sayı1+sayı2),sayı1+sayı2)
print("Sayı 1 + Sayı 2 tipi:",type(int(sayı1+sayı2)),int(sayı1+sayı2))
print("Sayı1 + Sayı2 tipi",type(int(sayı1)+int(sayı2)),int(sayı1)+int(sayı2))
55555*666666<jupyter_output><empty_output><jupyter_text>eval fonksiyonueval() ŞEYTANİ GÜÇLERİ OLAN BİR FONKSİYONDUR!İngilizcede evaluate diye bir kelime bulunur. Bu kelime, ‘değerlendirmeye tabi tutmak, işleme sokmak, işlemek’ gibi anlamlar taşır. İşte eval() fonksiyonundaki eval kelimesi bu evaluate kelimesinin kısaltmasıdır. Yani bu fonksiyonun görevi, kendisine verilen karakter dizilerini değerlendirmeye tabi tutmak ya da işlemektir.<jupyter_code>print("""
Basit bir hesap makinesi uygulaması.

İşleçler:
    +   toplama
    -   çıkarma
    *   çarpma
    /   bölme
Yapmak istediğiniz işlemi yazıp ENTER
tuşuna basın. (Örneğin 23 ve 46 sayılarını
çarpmak için 23 * 46 yazdıktan sonra
ENTER tuşuna basın.)
""")
veri = input("İşleminiz: ")
hesap = eval(veri)
print(hesap)<jupyter_output>Basit bir hesap makinesi uygulaması.

İşleçler:
    +   toplama
    -   çıkarma
    *   çarpma
    /   bölme
Yapmak istediğiniz işlemi yazıp ENTER
tuşuna basın. (Örneğin 23 ve 46 sayılarını
çarpmak için 23 * 46 yazdıktan sonra
ENTER tuşuna basın.)
{'fraction_non_alphanumeric': 0.0892091388400703, 'fraction_numerical': 0.01961335676625659, 'mean_word_length': 5.98379970544919, 'pattern_counts': {'":': 0, '<': 62, '<?xml version=': 0, '>': 62, 'https://': 1, 'lorem ipsum': 0, 'www.': 2, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 2, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '16', 'dir': 'jupyter-structured-clean-dedup', 'id': '432585', 'license': 'MIT', 'n_tokens_mistral': 6898, 'n_tokens_neox': 6342, 'n_words': 1525, 'path': '2021-22/u2_Hafta1-ozet-Hafta2.ipynb', 'repo_name': 'mgezer/PythonDers', 'size': '14250'}