Konuşur gibi Türkçe Kod #14: Satır Testi

##1. Bölüm: Türkçe kodlama | ##2. Bölüm: TAR-Python ayarları
##3.Bölüm: kendi .tr uzantımız | ##4. Bölüm: Dil = KARAKTER yorumlayıcısı
##5. Bölüm: Donanım Sürücüleri | ##6. Bölüm: Kendi YAZ komutumuz
##7. Bölüm: Tüm harfleri 1 değişkene atama | ##8. Bölüm: Kendi komutlarımız
##9. Bölüm: YAZ’ma şekilleri + Teknoloji Oteli | ##10. Bölüm: Tırnak
##11. Bölüm: Burası Mühim | ##12. Bölüm: Yeni Satır
##13. Bölüm: İki Satır


Hatırlarsanız İki Satır muhabbet edelim 😉 derken YAZ komutumuz ilk seferinde doğru çalışırken, ikinci seferinde doğru çalışmamıştı. Satır atlama sorununu çözünce de başka bir sorunumuz devam etmişti, cümle değişkenimizin içini silip, yeni karşılaşacağı tırnak sonrasındaki harfleri yakalaması için ayarlamıştık.

Ve istediğimiz sonucu almıştık.


 

Bir önceki konudaki çukura denk gelmemek için isterseniz yeniden testler yapalım. En basitinden 3. satırı eklersek ne olacak, 4. satırı eklersek ne olacak bakalım.

3 satır için sonucu görelim

Şansa olmadı inşallah, garantilemek için bir de 4. satırı sonrası bakalım.

 

Güzel.

Biraz abartalım ve farklı şeyler deneyelim. Mesela programcı alt satıra değil de hemen yan tarafa yeniden bir yaz komutu isterse ne olacak? Hem alta hem yana yazıp görelim.

yaz "+Merhaba Dünya"
yaz "+Nasılsın?"
yaz "-İyiyim"
yaz "-Sen nasılsın?" yaz "-Orada havalar sıcak mı?" yaz "-Burası fena"
yaz "-Hiç kış gibi değil"

Ok.

Peki javascript ya da python gibi pek dildeki noktalı virgül olayına bakalım. Alışkanlık bu ya, art arda birkaç komut yazarken aralarına noktalı virgül ; koyarsa..

bakalım..

Hadi hayırlı olsun  İlk noktalı virgülden sonrası Yok.
Dıırıt, Dırııt..

 

Olağan şüpheli noktalı virgül gibi olsa da sanki o masum gibi.

Önceki yazılarda, dosya içinde yaz geçiyor mu? Tırnak var mı diye baktık. Ancak bunların arasında/öncesinde/sonrasında gelecek karakterler için bir yol yöntem önermedik. Ve görüldüğü üzre ilk beklenmedik karakter sonrası işleme girmedi.

Fakat 😉
Bununla birlikte daha önce aldığımız bir kararın, burada sonucunu görebiliyoruz:
Hatalı olan 88$# karakterler sonrası çalışmadı ama tümden hata vermek yerine buraya kadar olan kısımları işleme aldık. Yaklaşık olarak hatanın en sonra doğru işlemden sonra olduğunu tahmin edebiliriz.
Örneğimizde, hatanın yaklaşık olarak Nasılsın? ‘ın hemen sonrası bir yerlerde olduğunu öngörebiliriz.

Hatayı bulduysak, çözüme yaklaştık demektir 😉


Görsel

Konuşur gibi Türkçe Kod #13: İki Satır

##1. Bölüm: Türkçe kodlama | ##2. Bölüm: TAR-Python ayarları
##3.Bölüm: kendi .tr uzantımız | ##4. Bölüm: Dil = KARAKTER yorumlayıcısı
##5. Bölüm: Donanım Sürücüleri | ##6. Bölüm: Kendi YAZ komutumuz
##7. Bölüm: Tüm harfleri 1 değişkene atama | ##8. Bölüm: Kendi komutlarımız
##9. Bölüm: YAZ’ma şekilleri + Teknoloji Oteli | ##10. Bölüm: Tırnak
##11. Bölüm: Burası Mühim | ##12. Bölüm: Yeni Satır


Daha önce Yaz komutu ve Tırnakları yakalamıştık ve arasında geçen metini, cümle isimli değişkene atamıştık. Ardından bunu da ekrana yazdırmıştık. Tek seferlik bu komut için bir sorun yoktu ancak son bölümde yeni satıra geçip, yeni bir yaz komutu verdiğimizde işler karışmıştı. Satır atlama yani \n sorununu çözdüğümüzde ise karşımıza farklı bir tablo çıkmıştı.

yaz "merhaba dünya"
yaz "Nasılsın?"

Yeni satır karakterini yok ettik ama  Merhaba Dünya ile Nasılsın birleşik olarak geldi.

Bi yerlerde araya girip müdahale gerekiyor. Foksiyonumuzun tamamına bir göz atalım:

def Oku():
UzantiKontrol()
#print okunan
harfler = list(okunan);
#print harfler
komut = ""
tirnak = "son"
cumle = ""
for h in harfler:
komut += h
#print komut
if komut == "yaz":
komut = ""
elif komut == "\"":
print "tirnak var"
if tirnak == "bas": tirnak = "son"; print "ilk tirnak"
elif tirnak == "son": tirnak = "bas"; print "ikinci tirnak"
komut = ""
elif tirnak == "bas":
cumle += h ; print cumle
komut =""
elif komut == " ": komut = ""
elif komut == "\n": komut = ""
print cumle
Oku()

//Kopyalamak için metin olması güzel ama Steemit tab’lere izin vermediği için şöyle baksak sanırım daha sağlıklı olacak:

isterseniz daha önce kontrol amaçlı koyduğumuz, “tınak var”, “ilk tırnak”.. gibi açıklamaları kaldırıp daha sakin olarak görelim.

 

Görüleceği üzre, ilk tırnak sonrası başlattığımız “cümle“, ikinci tırnağı ve sonrasında iki satırdaki ilk tırnağı da görüyor ama birleştirmeye devam ettiğimiz için, ayrı ayrı yaz komutlarının metinlerini birleşik halde çıktı alıyoruz.

Hmm..

Ne yapmalı ne etmeli..

 

🙂

“Merhaba Dünya”nın sonundaki tırnak ile “Nasılsın”ın başındaki tırnak arasında bir şeyler yapmak işimizi çözebilir sanırım. Yani şu el-if’in içi:

burada yine bir karar aşaması var.

Tırnağın kapandığını görür görmez, mevcut cümleyi hemen orada ekrana basacak mı?
yoksa,
atıyorum cümleler adında başka bir dizi içinde mi toplamak lazım?
//Bu tür seçim yapmak durumunda kaldığımız kararlarla, dolaylı olarak programla dilimizin karakteristik yapısını oluşturuyoruz sanki.

Zamanında ASP’nin tüm kodlara bakıp çıktı sunana kadar boş ve beyaz bir ekrana baktığımızı hatırladığım için, benim oyum -şimdilik- hemen oracıkta gereken işlemi yapmak yönünde.

45’e print ekleyip, 49’daki print’i kaldırıp bakalım..

Tamam gibi ama olmadı. İkinci defa ekrana basmadan önce bir de cümle’nin içini silmemiz lazım // ki yeni göreceği tırnak ve sonrasındaki metin, bağımsız ikinci bir cümle olabilsin.

Yani, cumle=”” ekleyelim:

ve bakalım:

Yey!


Görsel ;))

Konuşur gibi Türkçe Kod #12: Yeni Satır

##1. Bölüm: Türkçe kodlama | ##2. Bölüm: TAR-Python ayarları | ##3. Bölüm: kendi .tr uzantımız

##4. Bölüm: Dil = KARAKTER yorumlayıcısı | ##5. Bölüm: Donanım Sürücüleri

##6. Bölüm: Kendi YAZ komutumuz | ##7. Bölüm: Tüm harfleri 1 değişkene atama.

##8. Bölüm: Kendi komutlarımız | ##9. Bölüm: YAZ’ma şekilleri + Teknoloji Oteli

10. Bölüm: Tırnak | ##11. Bölüm: Burası Mühim


Bir şekilde direk bu sayfaya geldiyseniz, konuya direk buradan dalış yapsanız da olur elbet lakin olayı ince ince idrak ederek kavramak isterseniz önceki bölümlere göz atmanız daha sağlıklı olabilir.


Son konumuzda YAZ’ı yakaladıktan sonra gelmesini beklediğimiz TIRNAK işaretini yakalama olayına bakmıştık. Ardından TIRNAK sonrası başlayacak olan metin için, sıradaki her harfi karakteri cumle değişkeni içinde toplamıştık. Ta ki İKİNCİ TIRNAK işaretini görene dek.

Ve aradaki boşlukları yok etmiştik 🙂

Peki programcı şöyle bir kod yazarsa ne olacak?

Yaz "Merhaba Dünya"
Yaz "Nasılsın"

Bakalım nasıl bir sonuç alıyoruz:

What?

Ne oldu ki, ilk satırı bile göremedik? En azından sadece ikinci satırın başlayana kadar olan kısımların bir çıktısı görseydik..

Dikkatlice bakarsak örnek.tr program dosyamızda

Yaz “Merhaba Dünya”

diyor. Ancak yorumlayıcımız TAR ile yaz var mı diye kontrol ettiğimiz komut “yaz”

Yaz ≠ yaz

ASCII tablosunu incelediğimiz yazıyı hatırlarsanız, her bir küçük harf ve büyük harfi ayrı BYTE’lar ile tanımlıyorduk. Bkz: 8 bit ASCII table

Yine bir karar noktası

Programlama dilimiz küçük harf – büyük harfe duyarlı mı olacak yoksa nasıl yazdığı önemli değil mi diyeceğiz.

YAZ = YAz = Yaz = yaz = yAz = yAZ

şahsen kendi tercihim, programcının canın istediği şekilde yazması yönünde. İster YAZ der iterse yaz. Bazı dillerde bu sorun yüzünden zihnimizde Büyük-Küçük bilgisini tutmak zorunda kalıyoruz. Bkz: Serial.Println, pulseIn, digitalWrite ..

her bir IF sınamasında yukarıdaki tüm versiyonları yazmaktansa, bize gelen karakterlerin hepsini önceden küçültür ve öyle işleme alırsak daha sağlıklı olabilir.

// I harfi için korku filmi sesleri size de geldi mi 🙂

 

Tamam küçültelim de standart lowercase fonksiyonları ingilizce temelli olduğu için  IrMak kelimesini irmak olarak küçültüyorlar. Bizde küçük ı harfinin büyüğü yok, i harfinin büyüğü ise I

Kodcu tek satırda değil de iki satırda YAZ derse ne olacak derken, nereye geldik 🙂

Ok. Şu an için örnek.tr dosyamızdaki Yaz komutunu yaz yapıp sonucu görelim ve Harf Küçültme işini sonraki yazılara bırakalım.

E hani “Nasılsın?”

Onun yerine bir boşluk var sadece..

Çoğu zaman, hatanın olduğu yer aynı zamanda çözümün de olduğu yerdir.
Biz bir karakter olarak görmesek bile, NL: New Line: \n CR: Carriage Return: Satır Başı yazısından hatırlarsak, sonraki satırı belirten görüntüsü olmayan ama bit/byte karşılığı olan karakterler vardı.

Biz ENTER tuşuna bastığımızda oluşan  \n gibi  örneğin. O halde boşlukları kaldırdığımız gibi yeni satır karakterlerini de silebiliriz.

Şimdi yeniden bakalım:

Yey!
Nasılsın yazısı da geldi!
Ama öncekilerle birlikte. Çoğu çözüm yanında yeni sorun da getirirmiş 😉 Bkz: internet, tablet..


Görsel

Konuşur gibi Türkçe Kod #11: Burası Mühim

##1: Türkçe kod | ##2: TAR-Python
##3: .tr uzantımız | ##4: KARAKTER yorumlayıcısı
##5: Sürücüler | ##6: YAZ
 ##7: Harfleri değişkene atama. | ##8: Komutlarımız
 ##9: YAZ’ma şekilleri + Teknoloji Oteli | ##10: Tırnak


Önceki bölümdeki bazı kısımları açıklayarak devam edelim. Zira BURASI MÜHİM. Çünkü neredeyse YENİ BİR PROGRAMLAMA DİLİNİ ÜRETMENİN ÖZÜ burada denilebilir.

Gayet basit ama mihenk taşı hikaye burada başlıyor:

Önceki bölümlerde, örnek.tr dosyası için yazılan her şeyi harf harf parçalamış ve hepsini liste halinde harfler değişkenine atmıştık.

Ve bu harfleri TEK TEK YAN YANA GETİRİP, bize lazım olan bir komut var mı yok mu bakıyoruz.

Şimdi kodları yorumlayan pc’nin kendiniz olduğunuzu düşünün. PC ile empati 🙂

Size komut =”” denilmiş. Komut adında bir değişken var ve şu an içi boş.

Ardından komut += h denilmiş.

Yani biraz önce örnek.tr program dosyası içinde yazılmış olanların

İLK HARFİ artık komut’un da değeri. Yani komut=y

ve bakıyoruz; YAZ, TOPLA, EĞER vb.. komut olarak kullanmak istediğimiz bir terim geçiyor mu?

şu an için komut = y olduğu için
komut == “yaz” sınaması bize Hayır diyor.  FOR döngüsü içinde olduğumuz için devam ediyoruz.

komut += h gördüğümüz için komut‘umuza bir harf daha ekliyoruz ve artık komut = ya

yeniden sınama yapıyoruz;
komut, “yaz” a eşit mi?
hayır
devam..

komut += h  peki o zaman, komut = yaz

komut, “yaz” a eşit mi?
Eveet! 🙂
O halde TIRNAK aramaya başlayabiliriz. Tabi öncesinde komut‘u yeniden boşaltalım ki yeni yakalayacağımız terimler için karışıklık olmasın:

komut = yaz ise komut=”” olarak atadığımız için en baştan bakıyormuşçasına devam edebiliriz.

 

Bakalım tırnak var mı?

Varsa, bunu “tırnak var” diye belirtelim. -şimdilik tabi ki, sonra kaldıracağız-

Ve ayrıca Baştaki Tırnak mı Sondaki tırnak mı bu sorunu çözmemiz lazım:

Akış sırasına göre gittiğimiz ver her terim sonrası komut’un içini boşalttığımız için,
tırnağı ilk gördüğümüzde tırnak = bas yaparsak, az sonra gelecek olan Merhaba Dünya gibi bir METİN için hazırlık yapabiliriz 😉

Aradığımız terimi bulunca, sonrakilere hazır olması için komut‘un için boşalttığımız gibi, tırnak = bas ‘ı yakaladığımızda, sonrasına hazırlık için tırnak = son yapıyoruz.
Benzer şekilde tırnak = son ise de tırnak = bas yapıyoruz.

Peki!
tırnak = bas ise cümle başlıyor demek, o halde yeni gelecek her harfi cümle değişkeni içinde toplayabiliriz 😉

Güzel.

Şimdi önceki bölümlerde konuştuğumuz Boşluğu Yokluğa eşitleme olayını yapalım 😉

ve ardından döngünün dışından da cümle‘nin on halini ekranda görelim.

 

Çarşambanın gelişini perşembeden tahmin edebilenler için, “Yeni bir Programlama Dili nasıl yazılır?” sorusuna teknik manada mühim bir açıklama getiren kısım burada yazılanlar. Zira bundan sonraki çoğu şey
for h in harfler döngüsü içinde dönüp duracak. Ve her döngü içinde YAZ var mı KIŞ var mı 🙂 TOPLA var mı ÇARP var mı diye bakıp duracağız.

Canınızın çektiği başka komutlar varsa  kurgusunu burada yapabilirsiniz 😉


Görsel

Konuşur gibi Türkçe Kod #10: Tırnak

##1. Bölüm: Türkçe kod yazma.

##2. Bölüm: TAR-Python ayarları.

##3. Bölüm: Kendi .tr uzantımız.

##4. Bölüm: Dil üretmek = KARAKTER yorumlayıcısı yazmak.

##5. Bölüm: Donanım-Yazılım kesişimi = sürücüler.

##6. Bölüm: Kendi YAZ’ımız.

 ##7. Bölüm: Tüm harfleri bir değişkene atama.

 ##8. Bölüm: Kendi komutumuz.

 ##9. Bölüm: YAZ’ma şekilleri + Teknoloji Oteli


Son yazıda sadece kod yazmak değil farklı kararlar da almak gerekiyordu. İster istemez diğer dillerdeki YAZ’ma şekillerine yeniden baktım.

Mesela, Basic‘te Merhaba Dünya şöyle yazılıyormuş:

PRINT "Hello, world!"​

Ataların lisanında 😉 ise şöyle
#include
int main(void)
{
puts("Hello, world!");
}

Daha genç versiyonu C++ şöyle
#include
int main()
{
std::cout << "Hello, world!
";
return 0;
}

more+

Görüleceği üzere aynı kaynaktan beslenen iki dil için bile yazım farkları var. Üstelik sadece int main gibi hazırlıklık kısımları değil, direk YAZ işlemini yapan kısımlarda da farklılık var.
puts ya da std::cout <<

Web ile birlikte zirve yapan JavaScript’te ise document.write(‘Hello, world!’); şeklinde.

Her birinde faklı bir şekil söz konusu. Son örnek olarak Logo’da tırnak yerine köşeli parantez kullanılmış: print [Hello, world!]

Buradaki TIRNAK yerine Köşeli parantez kullanımı; önceki yazıda @kagantrky ‘in da katkılarıyla incelediğimiz durumlar için cesaret verdi. Bir dilde ekrana çıktı almak için puts kullanmak gerektiğini öğrenmek zorundayken bir başka dilde aynı işlem için [  köşeli parantez  gerektiğini bilmek/öğrenmek zorundayız.

E madem, yeni bir dil için bazı yeni şeyleri öğrenmek zorunlu o halde TAR için de yeni şeyler pek ala söz konusu olabilir 😉


İsterseniz önce normal yoldan bakalım.

Yani yaz "Merhaba Dünya" şeklinde bir yazım için TIRNAKLARI ve ebetteki arasında METİNİ tespit etmemiz lazım.

A’ a! Yeni bir sorunumuz var.

 

İlk tırnak da ikinci tırnak da aynı şekilde: "

O halde

  • TIRNAK ile İLK karşılaştığımız anda bunun bilgisini bir yerde tutmamız lazım
  • Ve hemen içindeki harfleri bir CÜMLE olarak birleştirmemiz lazım
  • CÜMLEYE eklemeye devam etmeli
  • Ta ki İKİNCİ TIRNAK karşısına çıkana kadar
  • Her tırnak ile karşılaşmada bunun HANGİ TIRNAK olduğu bilgisini güncellememiz lazım

Tabiki bir de BOŞLUK var. ”
Bir şeyin kıymetini yokluğunda anladığımız gibi YAZ’ın bittiğini sonbaharın/BOŞLUK’un gelmesinden anlıyoruz ki YAZ tek başına bir kelime olabilsin.
Ama aynı zamanda YAZ’da sonra SADECE bir boşluk HEMEN ardından TIRNAK şartı koşmak da gıcık edici olabilir.
Bununlabirliktebilgisayarınkelimeleriayırtetmesi için boşlukgörmeihtiyacıolmayabilir; )
Bu yüzden boşluğu yok edebiliriz // Boşluğu yok etmek.. felsefik bi şey gibi durdu 🙂


TIRNAK hangi tırnak bilgisini tutmak için tırnak adında
ve tırnakların arasındaki metini oluşturup saklamak için cumle adın da değişkenler atayalım.
son/kapanış bir tırnağı görmüş ve şimdi karşında çıkanı ilk/başlama tırnağı kabul etmesi için tırnak=”son” yapalım.

Daha sakin bir görünüm için bazı printleri etkisiz hale getirelim.

şimdi
y
ya
yaz
yaz ”
yaz “M

akışı içinden YAZ ve TIRNAK yakalamak için oltamızı atalım 😉

dikkat edilmesi ve anlaşılması gereken kritik noktalardan birisi de

40. ve 46. satırlarda gördüğümüz komut=”” ataması, komut sürekli elimizde tuttuğumuz ve içine baktığımız bir değişken olduğu için HER KOMUT ya da işlemeden üzerinden geçtiğimiz HER KARAKTER sonrası mevcut içeriğini yokluğa eşitliyoruz. //Bi felsefik söz daha 🙂

 


Görsel

Konuşur gibi “Türkçe” Kod #8: Komut

##1. Bölümde Kod yazarken Türkçe komutlar/terimler kullanma fikrini üzerinde durmuştuk.

##2. Bölümde TAR’ın -şimdilik- gerekli olan  Python’u kurmuş ve Path ayarlarına bakmıştık.

##3. Bölümde Kendi dosya uzantımızı .tr olarak belirlemiştik bunu TAR’ın çağrılabilmesini sağlamıştık.

##4. Bölümde Kendi Programlama Dilimizi yapmak demenin KARAKTER yorumlayıcısı yazmak olduğundan bahsetmiştik.

##5. Bölümde Digital 0-1 ile fiziksel bir parçanın etkileşimine değinmiştik.

##6. Bölümde .tr program dosyamızın içindeki YAZ komutumuzu koşturmuştuk.

 ##7. Bölümde .tr dosyamızın içinde tüm harfleri UTF-8 olarak bir değişkene atamamıştık.


Tüm harfleri bir değişkenin içine aldığımıza göre, sırasıyla her birine bakabiliriz. Dahası belli şartlara göre art arda gelme varsa, durumdan kendimize vazife çıkarabiliriz 😉

//”liseliler buradaki espriyi anlamaz” demek istiyorum 🙂

Ne demek istiyorum;
öyle rasgele yzbzey syyuzs dizilişi değil de cümlenin içinde y+a+z dizilişi varsa, bu bizim için bir komut, yerine getirilmesi gereken bir emirdir.

o halde şu yan yana dizilişleri bir de pratikte görelim:

Dikkat edilirse komut adında Null bir  değişken oluşturduk. [Bu arada “Null” kelimesinin; Almanca’da “öyle hiç bir şey ki, sıfır bile değil” manasına da geldiğini öğrendiğim günden bu yana, çok severim kendisini 🙂 ]

komut değişkenini, fonksiyonun dışından da kullanmak için global yaptık.

sonra da sırayla tüm harfleri, başta null olan komut değişkenimize EKLEYEREK bi çıktısını aldık.. görelim Uğur’cuğum

ilk yazıda tam bu olayın mantığından / teorisinden bahsetmiştik.
Şimdi de pratiğini görmüş olduk.


İç içe danteller..

Buraya kadar güzel. İşler dantel dantel olmaya bundan sonra başlayacak.

Yukarıdaki .giften görüldüğü üzere ilk satır işimize yaramaz.
3 satır, gelmesini beklediğimiz komut(lardan birisi)

Hemen
if komut == "yaz":
bişeyler yap
diyebiliriz amma lakin ki farklı senaryoları da düşünmek zorundayız

 

 

Meselam, şu bayan yaz komutunu verdikten sonra, tek boşluk bırakmış olabilir, şu bayansa beş boşluk bıraktıktan sonra “Merhaba Dünya” yazabilir. Tabi bir de şu bayanda tırnak içine “Merhaba Yaz Güneşi” yazmış olabilir.

Öyle bir şey yapmalıyız ki;
* White Space’leri egale edelim
* Komut nerede başlayıp bitiyor, tırnak nerede başlayıp bitiyor bilelim
* Yazılacak cümle içinde YAZ ve başka komutlar geçiyorsa, taklaya gelmeyelim
* İki+ defa art arda YAZ ile çıktı almak isteniyorsa, kontrpiyede kalmayalım.


Görsel

 

 

Konuşur gibi “Türkçe” Kod #7: Harf Listesi

Önceki kısımlar:

 #1. Bölümde Türkçe Kod yazma fikrini ele almıştık.

#2. Bölümde TAR’ın üzerinde koşacağı Python’u kurmuş ve herhangi bir .exe dosyası gibi çalışabilmesi için Path ayarlarını yapmıştık.

#3. Bölümde nasıl PhotoShop’un kullanacağı dosyaların uzantısı .psd ise bizde TAR’ın kullanacağı uzantıyı .tr olarak belirlemiş bu bunların konsoldan çağrılabilmesini sağlamıştık.

#4. Bölümde Programlama Dillerinin mantığına bakmış, Php’den C++’a hepsinin aslında KARAKTER yorumlayıcısı olduğuna değinmiştik.

#5. Bölümde “A “gibi bir harfin de aslında 0-1’lerden oluştuğuna ve bunu göstermek için Ekranın/Donanım ve Yazılımın eklem noktalarına değinmiştik.

#6 Bölümde YAZ kodumuzu çalıştırmıştık.


Yukarıdaki yazıların toplamı ışığında, YAZ kodumuzun çalışma mantığını biliyoruz.  Biraz mutfak tarafına geçelim.

 

UzantiKontrol fonksiyonumuz ile TAR kelimesi sonrasına yazılacak olanları argüman olarak kabul ediyor ve ardından DosyaIcerik fonksiyonumuzla dosyanın içeriğini okuyorduk.

Şimdi önceki yazılarda üzerinde durduğumuz HARF HARF didikleme işlemimiz için,
Dosya içindeki BÜTÜN karakterleri bir liste içinde toplayalım. Boşuklar, Tablar, Satır atlamalar, tırnaklar, virgüller, parantezler elbetteki harfler ve rakamlar.. BÜTÜN her şey, harfler listemizin bir elemanı olsun.

So..

Bi tane Oku() fonksiyonumuz olsun. Bunun için
def Oku():
yazıyoruz alt satırda 1 TAB içeriden yazmaya başlıyoruz. (Çoğu editör bunu otomatik yapacaktır, ola ki TAB sayılarında bir aksilik çıkarsa, DELETE ile alt satırı yukarı ya çekip, arada hiç bir şey kalmadığında yeniden ENTER yaparak alt satıra geçebilirsiniz.

Oku() içinde önce UzantiKontrol() fonksiyonumuzu çalıştıralım.
Ardından harfler = list(okunan)  ataması yaparak yukarıda bahsettiğimiz tüm KARAKTERLERİ bi listede toplama işini yapalım. Ve bunu ekrana basalım.

 

Ve bakalım elimizde ne var.

Evet. Tam istediğimiz gibi. Listenin elamanlarına dikkat ederseniz y harfi,  a harfi, z harfinin yanında ardaki boşluk ve tırnak ve ardından Merhaba kelimesinin harfleri tek tek bulunmakta.

İyi ama şöyle olması gerekmez miydi? [‘y’,’a’,’z’,’ ‘, ‘”‘,’M’,’e’,’r’,… ..]

her tırnağın önünde bir u harfi var?
u’y’

Öyle olması gerekirdi. Ancak Türkçe karakterlerde sorun yaşamamak için hatırlarsanız üçüncü yazıda şu kodları eklemiştik
icerik = unicode(icerik,'utf-8')

ve özellikle UTF-8 kayıt yapan bir editör ile dosyalarımızı kayıt etmiştik.

Dolayısıyla, her değerin önündeki u, tırnağın içindeki karakterin UTF-8 formatında olduğunu söylüyor.


Görsel

Konuşur gibi “Türkçe” Kod #6: YAZ

Önceki bölümler:

“Türkçe”, Konuşur Gibi Kod Yazmak #1

Türkçe”, Konuşur Gibi Kod Yazmak #2: İlk Adımlar

“Türkçe”, Konuşur Gibi Kod Yazmak #3: Dosya Çağırma

“Türkçe”, Konuşur Gibi Kod Yazmak #4: Harf Harf Didikleme & Karakter Meselesi

Konuşur Gibi “Türkçe” Kod #5: Yazılım ve Donanımın Eklem Yerleri


Belki kendi icat edeceğimiz ya da en azından var olan bir cihazı kendimizin yapacağı durumlar olacak. Ve cihazın her hangi bir sebepten dolayı ekranı olursa; #4 ve #5 Nolu yazılardaki mantık hayli işimize yarayacaktır. Üstelik sembolleri ve harfleri kendimiz oluşturabileceğimiz için Ğ Ü Ş Ö gibi karakterin de rahatça kullanılabildiği ve metinleri Türkçe olan cihazlar güzel olacaktır.

Tabi bu güzellik yanında “font” gibi estetik, işlevsel ama uğraştırıcı bir sorunu/çözümü de yanında getirecektir. Neyse ki TAR için yazı fontu veya bir ekranın çalışma düzenini işleten bir sürücü hazırlamak zorunda değiliz.

// Niye onu da biz yapmıyoruz diyenleri rahatlamak için söyliyeyim; Python php node asp.. hiç biri işletim sistemi/sürücü derinliğine inerek ekrana “Hello World” yazdırmıyor. Zaten işlemekte olan bir sisteme, işletim sistemine pas atıyor.

Biz de diğerleri gibi Windows’a yaz/ print komutunu göndereceğiz ve M, E, R, H, ..  harflerini yazmak için ekranın hangi pixel’ine hükmetmesi gerektiğini ona bırakacağız.

So..
Pixel seviyesinden Harf seviyesine çıkıp, Kodlara yakından bakarak devam edelim..

Seri boyunca Başlıklardan eksilmeyen amacımız: TÜRKÇE Kod Yazmak.

Yani  şunlara denk geldiğimizd

BEGIN DISPLAY("HELLO WORLD!") END.


10 PRINT "Hello, World!"
20 END


package main
import "fmt"
func main() { fmt.Println("Hello, World")}

tümden Fransız gibi hissetmek yerine, anlamaya daha yakın olmak.

BAŞLA EKRAN("MERHABA DÜNYA!") SON.


10 YAZ "Merhaba, Dünya!"
20 SON


ana paket
içerigetir "duzen"
fonksiyon ana() { duzen.YazSatir("Merhaba, Dünya")}

Görüleceği üzere Kodlamadan hiç anlamasak bile Japonca okuyor gibi de olmuyoruz.


Madem kendi dilimizi yazıyoruz..

İlerledikçe gramer yapısı için de bir şeyler düşünebiliriz 😉 Ancak şimdi Hem mümkün olduğunca sade, hem okuması kolay olacak şekilde başlayalım derim.

Yukarıdaki tüm örneklerden daha sade bir şekilde kod yazabiliriz, mesela Programımız  şöyle olsa

çok tatlı olmadı mı?

başla, bitir, include/içeaktar, paket vs. olmadan,

Sadece YAZ “Metin” kodunu yazıyoruz. Ve çalıştığında tırnak içindekileri çıktı olarak ekrana yazıyor.


Görsel

 

“Bir taşta iki kuş” yerine “Bir kapta iki kuş”

#turkcebilim etiketinde dolaşırken, @kamuhuzuru‘nun Steemit’te Gezgin Topluluğu olmasını isteyen yazısına denk geldim.

Yazı sonunda WordPress kullanarak gezi blogu açmak istediğinden bahsetmiş.

Ben de 3-4 ay önce çıkan SteemPress eklentisi kullanarak, tek seferde her ikisini yapabileceğine dair yorum yazayım dedim.

SteemPress kullanarak, bir taşta iki kuş vurabilirsin..

yazdım ama daha cümle bitmeden rahatsız oldum.

Kuşları neden vuruyoruz ki?

hr-kisa.png

Kadınlarla ilgili çeşitli deyimlerde de olduğu gibi..
Bkz: “Kız gibi” & Cehennem Annelerin Dili Üzerinde mi?
İki üç kelimelik bir deyimi hayatımızdan çıkarmak, toplumsal bilinç altımızı ve hatta geleceğimizi bile pek ala değiştirebilir.

Bu bağlamda, hayvan hayatını değersizleştiren
“Bir taşta iki kuş” “vurmak”
yerine

“Bir kapta iki kuş” “beslemek”

şeklinde bir kullanım teklif ediyorum. Fonetik olarak benzediği için geçiş yapmak da kolay olabilir 😉

Ben kullanmaya başladım 😉


Görsel: pixabay