- Katılım
- 15 Nisan 2007
- Mesajlar
- 3,471
- Excel Vers. ve Dili
- Office 2010 & 2013 tr
Selamlar,
Kullandığım bir programda dikkatimi çeken sözcük-ek ses uyumsuzluğu için çözüm üretmek amacıyla hazırladığım çalışmayı paylaşıyorum. Daha çok programlarda metinlerde hal ve tamlama ekleri kullanılıyor. Esasen bunlarla ilgili başladığım kodlamayı tüm çekim eklerine genişlettim. Olabilirliğini merak ettiğimden yapım eklerini de çalışmaya dahil ettim. Son şeklinde tüm ekler kodların içine girdi. Dil bilgisinde bulunan bir kaç kural dışında kodlamaya tüm ayrıntıları dahil ettim.
Dikkat edilmesi gerekenler:
1- Denemek için kelimeleri özensiz seçtim. Her ekin her sözcüğe gelemeyeceği göz önünde bulundurulmalı.
2- İsme gelen ekler ile fiile gelen eklerin farklı olduğu unutulmamalı.
3- Ünsüz yumuşaması kuralının kodlamasını ekledim ancak pasif durumda
4- Tüm ekleri denemedim, beklemediğiniz sonuçlarla karşılaşabilirsiniz. Bilgi verirseniz düzenlemeye çalışırım.
5- Ekleri sarı alana yazarken ince ve yumuşak ses biçimiyle yazmanız gerekmektedir. Örnek "di" doğru, dü, du ya da tu, ti yanlış. "ecek"doğru acak yanlış.
Kullandığım bir programda dikkatimi çeken sözcük-ek ses uyumsuzluğu için çözüm üretmek amacıyla hazırladığım çalışmayı paylaşıyorum. Daha çok programlarda metinlerde hal ve tamlama ekleri kullanılıyor. Esasen bunlarla ilgili başladığım kodlamayı tüm çekim eklerine genişlettim. Olabilirliğini merak ettiğimden yapım eklerini de çalışmaya dahil ettim. Son şeklinde tüm ekler kodların içine girdi. Dil bilgisinde bulunan bir kaç kural dışında kodlamaya tüm ayrıntıları dahil ettim.
Dikkat edilmesi gerekenler:
1- Denemek için kelimeleri özensiz seçtim. Her ekin her sözcüğe gelemeyeceği göz önünde bulundurulmalı.
2- İsme gelen ekler ile fiile gelen eklerin farklı olduğu unutulmamalı.
3- Ünsüz yumuşaması kuralının kodlamasını ekledim ancak pasif durumda
'sozcuk = ysozcuk
satırını aktifleştirerek kullanıma açabilirsiniz. Yumuşama kuralının istisna sözcük sayısı çok fazla olduğundan kuralı dahil etmek istemedim. İstisna sözcükler ayrı bir sayfaya eklenerek buna çözüm bulunabilir.4- Tüm ekleri denemedim, beklemediğiniz sonuçlarla karşılaşabilirsiniz. Bilgi verirseniz düzenlemeye çalışırım.
5- Ekleri sarı alana yazarken ince ve yumuşak ses biçimiyle yazmanız gerekmektedir. Örnek "di" doğru, dü, du ya da tu, ti yanlış. "ecek"doğru acak yanlış.
C++:
Function Ekler(sozcuk As String, takı As String)
unlu = "aıoueiöüîû"
belirtme = "ııuuiiüüiu"
kalınince = "ııııiiiiiı"
hal = "aaaaeeeeea"
daralma = "ııuuiiüüiu"
genis = "aıaaeieeea"
ysert = "çkpt"
yumusak = "cğbd"
tur = belirtme
If takı = "r" Then tur = genis
tur2 = kalınince
If takı = "nce" Or takı = "ince" Or takı = "dikçe" Then tur2 = belirtme
If InStr(1, unlu, Right(sozcuk, 1)) = 0 And takı = "si" Then takı = "i"
'--------------------------Daralma-----------
tih = Left(takı, 1) 'ekin ilk harfi
If takı = "yor" Then
If Right(sozcuk, 1) = "e" Or Right(sozcuk, 1) = "a" Then
If Len(sozcuk) > 3 Then
dharf = Left(sozcuk, 1)
dsay = InStr(1, unlu, dharf)
If dsay = 0 Then dsay = InStr(1, unlu, Mid(sozcuk, 2, 1))
dsozcuk = Left(sozcuk, Len(sozcuk) - 1) & Mid(daralma, dsay, 1)
sozcuk = dsozcuk
Else
sozcuk = Replace(sozcuk, "e", "i")
End If
End If
ElseIf tih = "i" Or tih = "e" Then 'tih = "m" Or tih = "n" Or
If sozcuk = "de" Or sozcuk = "ye" Then sozcuk = Replace(sozcuk, "e", "i")
End If
'---------------------------------------------
'-----------------------Yumuşama---------------
tih = Left(takı, 1) 'ekin ilk harfi
If tih = "i" Or tih = "m" Or tih = "n" Or tih = "e" Then
ysay = InStr(1, ysert, Right(sozcuk, 1))
If ysay > 0 Then
ysozcuk = Left(sozcuk, Len(sozcuk) - 1) & Mid(yumusak, ysay, 1)
'sozcuk = ysozcuk
End If
End If
'------------------------------------------
tharf = "i"
tharf2 = "i" 'iki heceli eklerde
sert = "çfhkpsşt"
tsay = InStr(1, sert, Right(sozcuk, 1)) 'sözcük sert ünsüzle bitiyorsa
If tsay > 0 Then
If Len(takı) < 4 And Left(takı, 1) = "c" Then
takı = Replace(takı, "c", "ç")
ElseIf Left(takı, 1) = "d" Then
takı = Replace(takı, "d", "t")
ElseIf Left(takı, 1) = "g" Then
takı = Replace(takı, "g", "k")
End If
End If
isay = InStr(1, takı, "e")
If isay > 0 Then tur = hal: tharf = "e"
say = InStr(1, unlu, Right(sozcuk, 1))
If say > 0 Then 'ünlü ile bitiyorsa
tih = Left(takı, 1)
tsay = InStr(1, unlu, tih)
If tsay > 0 Then 'ek ünlüyle başlıyorsa
takı = "y" & takı
End If
Else 'ünsüzle bitiyorsa
tih = Left(takı, 1) 'ekin ilk harfi
tih2 = Right(Left(takı, 2), 1) 'ekin ikinci harfi
tsay = InStr(1, unlu, tih)
tsay2 = InStr(1, unlu, tih2)
If tsay + tsay2 = 0 Or takı = "m" Or tih = "n" Or takı = "miz" Or tih = "y" Then 'ek tek ünsüzse yada iki ünsüzle başlıyorsa
takı = "i" & takı
End If
harf = Left(Right(sozcuk, 2), 1)
say = InStr(1, unlu, harf)
End If
takı = Replace(Replace(takı, tharf, Mid(tur, say, 1)), tharf2, Mid(tur2, say, 1))
sonuc = sozcuk & takı
Ekler = sonuc
End Function
Ekli dosyalar
-
33.9 KB Görüntüleme: 16
Son düzenleme: