Development of Dynamic Engine and Graphical User Interface Software for Railw...Mahmut Bulut
TREN SİMÜLATÖRÜ İÇİN DİNAMİK MOTOR VE
KULLANICI ARAYÜZ YAZILIMI GELİŞTİRME
* MAHMUT BULUT
* LİSANS TEZİ
* OGÜ Bilgisayar Mühendisliği Bölümü
SUMMARY
In future for all the world, air pollution from emission from motor vehicles and economic problems in conjunction with this reason oblige to use rail transportation systems in public transportation increasingly. According to research, major part of Turkey is going to be weaved with rail system networks in the next 20 years.In this case, it is necessary to increase number of educated machinist. Using train simulators is the best economic and fast solution to educate machinist.This driving simulation products help beginner machinist, preparing them for real drive and teaching them how to use train in every conditions. Context of this report contains real-time simulation of railway systems and train dynamic engine software interface for test driving of machinists who are employee of TCDD. All the main theme relies on this subject.
Rust programming language introduction book for Turkish developers.
It is just the first version, so it will be updated during the development of Rust.
Mahmut Bulut
=================
Bu kitap Rust programlama diline basit bir giriş olması niteliğinde yazıldı, dilin kul-
lanımını arttırmak ve Türk geliştiricilere/kullanıcılara dili tanıtmak amacı güt-
mektedir. Rust şu anda prototip seviyesinde olduğundan; keskinleştirilmiş ve
yapının iskeletini oluşturan kısımları buraya aldım. Dilin daha üzerinde tartışılan
ve gelecek versiyonlarında yer alacak tüm semantik ve sentaks yapısı bu kitabın
içeriğinde değildir. Rust’ın derin semantik yapısına ve çekirdek ilkelerine değinerek
okuyucu zorlamak istemediğimden basit ve sade, günlük hayatta kullanılabilecek
cinsten örnekler vermeye önem verdim. Kitap Rust’a yeni başlayanlar ve ilgi duy-
anlar için birebirdir. Ayrıca bu kitap Rust programlama dilinin yazıldığı zamana
ait Türkçe dökümantasyonu olma özelliğini de taşır. Türkçe bilişim terminolojisine
girmeyen ama yeni tanımlanmış bazı terimleri de Türkçeye kazandırmak amacı
da gütmektedir.
Development of Dynamic Engine and Graphical User Interface Software for Railw...Mahmut Bulut
TREN SİMÜLATÖRÜ İÇİN DİNAMİK MOTOR VE
KULLANICI ARAYÜZ YAZILIMI GELİŞTİRME
* MAHMUT BULUT
* LİSANS TEZİ
* OGÜ Bilgisayar Mühendisliği Bölümü
SUMMARY
In future for all the world, air pollution from emission from motor vehicles and economic problems in conjunction with this reason oblige to use rail transportation systems in public transportation increasingly. According to research, major part of Turkey is going to be weaved with rail system networks in the next 20 years.In this case, it is necessary to increase number of educated machinist. Using train simulators is the best economic and fast solution to educate machinist.This driving simulation products help beginner machinist, preparing them for real drive and teaching them how to use train in every conditions. Context of this report contains real-time simulation of railway systems and train dynamic engine software interface for test driving of machinists who are employee of TCDD. All the main theme relies on this subject.
Rust programming language introduction book for Turkish developers.
It is just the first version, so it will be updated during the development of Rust.
Mahmut Bulut
=================
Bu kitap Rust programlama diline basit bir giriş olması niteliğinde yazıldı, dilin kul-
lanımını arttırmak ve Türk geliştiricilere/kullanıcılara dili tanıtmak amacı güt-
mektedir. Rust şu anda prototip seviyesinde olduğundan; keskinleştirilmiş ve
yapının iskeletini oluşturan kısımları buraya aldım. Dilin daha üzerinde tartışılan
ve gelecek versiyonlarında yer alacak tüm semantik ve sentaks yapısı bu kitabın
içeriğinde değildir. Rust’ın derin semantik yapısına ve çekirdek ilkelerine değinerek
okuyucu zorlamak istemediğimden basit ve sade, günlük hayatta kullanılabilecek
cinsten örnekler vermeye önem verdim. Kitap Rust’a yeni başlayanlar ve ilgi duy-
anlar için birebirdir. Ayrıca bu kitap Rust programlama dilinin yazıldığı zamana
ait Türkçe dökümantasyonu olma özelliğini de taşır. Türkçe bilişim terminolojisine
girmeyen ama yeni tanımlanmış bazı terimleri de Türkçeye kazandırmak amacı
da gütmektedir.
http://www.slideshare.net/AhmetGrel1/linuxa-giris-ve-kurulum
Bu döküman linkte ki bir önceki dökümanın devamıdır.Bu sunumda Temel Linux Kullanımı ve Komutlarını anlatmaya çalıştım.şinize yaraması dileğiyle iyi çalışmalar.Soru,görüş ve önerileriniz için ahmetgurel.yazilim@gmail.com a mail atabilirsiniz.
İlk haftanın konusu Python'la programlama temelleri,mikroişlemci ve denetleyiciler arasında ki farklar , arduino & stm32 ve raspberry farkları ve birkaç projenin gösterilmesi, sensörler (analog,dijital) farkları , birkaç sensörün nasıl çalıştığının anlaşılması ve geliştirme kartlarıyla sensörlerin nasıl ilişkilenmesiydi.
http://www.slideshare.net/AhmetGrel1/linuxa-giris-ve-kurulum
Bu döküman linkte ki bir önceki dökümanın devamıdır.Bu sunumda Temel Linux Kullanımı ve Komutlarını anlatmaya çalıştım.şinize yaraması dileğiyle iyi çalışmalar.Soru,görüş ve önerileriniz için ahmetgurel.yazilim@gmail.com a mail atabilirsiniz.
İlk haftanın konusu Python'la programlama temelleri,mikroişlemci ve denetleyiciler arasında ki farklar , arduino & stm32 ve raspberry farkları ve birkaç projenin gösterilmesi, sensörler (analog,dijital) farkları , birkaç sensörün nasıl çalıştığının anlaşılması ve geliştirme kartlarıyla sensörlerin nasıl ilişkilenmesiydi.
1. “Kitaplardan önce kendimizi okumaya çalışalım.” - Mevlana
Kabuk programlama
Bölüm 1 : Kabuk programlamaya giriş / Değişkenler, arimetrik işlemler, Giriş/çıkış
işlemleri
Kabuk nedir ?
Linux sistemlerde komutları yorumlamak/ yönetmek için kullanılan programa Kabuk / shell
denir. Kabuk tüm linux sürümlerinde vardır ve olmasıda zorumludur. Kabuk Linuxu Linux yapan en
temel etmendir. Kabuk yardımıyla işletim sisteminize komutlar vere bilir, cekirdeğe kadar etkiyip,
sistemi kendiniz yapılandıra bilirsiniz.
İnanıyorum ki, bu yazıyı okuyan arkadaşlar en az bir kere Linux İS kullanmışlardır. Evet Linux
kullanana arkadaşlar Linuxda Komut satrında (Terminal) en az 1 kere omut vermişlerdir. İşte o
terminal bir KABUK YORUMLAYICISI`dır.
Elbette çeşitli kabuk türleri vardır :
• Bash (sh) - Bash kabuğu ilk UNIX sistemlerinde hem sh ve ksh kabukları, hem de bazı csh
özellikleri için orjinal olarak geliştirilen özellikleri içerir. Çoğu LINUX sisteminde varsayılan
kabuktur. Her kabuğun kendine özgü programlama dili yapısı vardır. Bash kabuğu ise güçlü
programlama özellikleriyle karmaşık programların rahatça yazılmasına izin verir. Mantıksal
operatörler, döngüler, değişkenler ve modern programlama dillerinde bulunan pek çok özellik
bash kabuğunda da vardır ve işleyiş tarzları da hemen hemen aynıdır. Bash çeşitli uyumluluk
kiplerinde çalıştırılabilir, böylece farklı kabuklar gibi davranabilmektedir.
• Tcsh (csh) - C Kabuğunun (csh) açık kaynak versiyonudur. Bu kabuk çoğu Berkeley UNIX
sistemlerde varsayınlan kabuk olarak kullanılır. Bu kabukla birlikte dahil edilen TENEX ve TOPS-
20 işletim sistemlerinin özellikleri tcsh içindeki T'den sorumludur. Orjinal csh kabuğunun komut
satırı düzenleme ve geçmişin işleyişi gibi özelliklerin çoğu hem tcsh'te hem de diğer kabuklarda
bulunan bir özelliktir. Bir başka değişle gerçekte csh kabuğunu başlatmak csh uyumlu kipte tcsh
kabuğunu başlatmaktır.
• Ash - UNIX sh kabuğunun ufak bir versiyonudur. sh kabuğunun çoğu özelliğini barındırmaz.
komut geçmişleri gibi. ash kabuğu daha az sistem kaynağına sahip gömülü sistemler için güzel
2. bir kabuktur. bash kabuğunun boyutunun yaklaşık yedi de biri kadar bir boyutu vardır. (bash
kabuğu yaklaşık 712k'dır.ask kabuğu ise 100k'lık bir boyuta sahiptir).
• Ksh - ksh kabuğu sh kabuğunun atasıdır. UNIX V sistemlerin varsayılan kabuğudur. ksh'ın açık
kaynak versiyonu pdksh paketinin bir parçası olarak çoğu rpm tabanlı sistemde orjinal olarak
bulunur.
• Zsh - zsh kabuğu ise sh kabuğunun klonlarından biridir. POSIX uyumludur (bash gibi). ancak
yazım denetimi ve komut düzenlemeye farklı yaklaşım gibi özellikler içerir. ilk Mac OS X
sistemleri zsh kabuğunu varsayılan kabuk olarak kullanmıştır. ancak şuanda varsayılan kabuk
bash kabuğudur.
Evet arkadaşlar kullandığınız Kabuğu öğrenmek istiyorsanız ...
Komut :
root@mikayil:~# echo $SHELL
Evet arkadaşlar gördüğünüz gibi ben Bash kabuğunu kullanıyorum.
3. Başlıyoruz...
Evet arkadaşlar şimdi geçelim yazımızın esas kısmına.
Her kabuğun kendine has bir programlama dili yapısı vardır. Bash kabuğu da kendi özellikleriyle
karmaşık programların (scriptlerin) yazılmasına izin vermektedir. Normal programlama dilleri gibi aynı
Bash programlamada da Döngüler, değişkenler ve s vardır. Kısaca daha iyi şekilde söylersek Bash
programlama karmaşık komutları bir araya getirilmiş ve büyütülmüş halidir. Örneğin Ubuntu
dağıtımına Kali Linux yazılımlarını kurmak istiyorsunuz. Her defasında bir bir kurmaktansa bunu bir
program halinde kodlayıb uzun komutları tek bir Enterle evezleye bilirsiniz...
Bash programla dilininin uzantısı .sh dır
Başlayalım...
İlk önce kendi işçi mühitimizi yaratalım.
Bize gereklidir.
• Bilgisayar (Laptop ve ya PC farketmez)
• Elektrik (şart)
• Linux OS (Kali, Ubuntu ve sair debian tabanlı)
• Metin düzenleyici (Nano, Geany ve s)
Bu programlama dilini öğrenmek için Linux komutlarından anlayışınız olmalıdır. İnternetden kolaylıkla
temel linux komutlarini bula bilirsiniz.
Echo – ekrana yazı yazdırma
4. Ekrana yazı yazdırmak istiyorsanız arkadaşlar
echo “yazınız”
Şeklinde kod yazacaksınız arkadaşlar. Şimdi ben nano editörü kullandığım için bu ilk programı
oluşturmak için ctrl+x tuşlarına basıyoruz.
Y tuşuna basarak devam ediyoruz.
Gelen pencerede dosyaismi.sh yazarak enterliyoruz.
Gördüğünüz gibi programımız burada. Şimdi çalıştiralım..
5. Programımıza gerekli izinleri vermediğimiz için çalışmayacaktır.
Aynen bu şekilde hata alıcaksınız.
Komut
chmod a+x pro.sh
Gördüğünüz gibi programımıza izin vermek zorundayız.
DİKKAT : Programda her yapılan değişikliklere göre bu işlem tekrarlanmaz. Bu işlem yalnızca bir
kere yapılmaktadır.
Şimdi sıra geldi programımızı çalıştırmaya
Komut
./pro.sh
6. ve gördüğünüz gibi ekranda yazımızı yansıttı.
Değişkenlerin kullanımı.
Programlama ile meşğul olan arkadaşlar bu termine aşinadırlar. Değişkenler bir veriyi kendinde
saklıyorlar. Programcı o verini kullanmak istedikte bir daha o veriyi diyil değişkeni yazıyorlar. Örneğin
cumle = “Galatasaray aşkı başka aşktır” ben her defasında programda bir yerlerde o uzun cümleyi
yazmak yerine yalnızca cumle (Değişkeni) yazarak o uzun cümleyi programa dahil ediyorum.
Değişkenler programlama dilinde çok yaygın kullanılıyor. Hatta temelidir. Değişken yardımıyla
Matematiksel işlemler, Kullanıcıdan veri almak ve sair yapılıyor.
Bash dilinde değişkenler alfabetik ve sayısal değerler ola bilir. Fakat Değişkenler sayısal
karakterlerle başlayamaz. Değişkenler dahilinde _ karakteri de kullanıla bilir.
Şimdi bir kodumuza bakalım..
7. Evet arkadaşlar. İşte kodlarımızı yazdık. Değişkeni kullanmak için $ karakterini kullanmak zorumludur.
Yukarıdakı # karakteri ise her kesin bildiği gibi satrı yorumlamaktadır. Yani program çalıştığı zaman o
satrı okuyamaz.
Gördüğünüz gibi değişkenimizi kullanarak ekrana yazımızı yazdırdı.
Giriş / Çıkış işlemleri
Evet bir program yazacaksanız mutlaka kullanıcıdan bilgi alınmak gereklidir. Pythonda bu işi
input yapar. Bash programlamada ise bu işi read parametresi yapmaktadır.
8. Yukarıdakı kodlara bakarsanız en esas dikkatinizi read fonksiyonun karşısındakı ad kelimesi dikkatinizi
çekecektir. Bu bir değişken dikkat ederseniz zaten aşağıda $ parametresiyle kullandım. Kullanıcı veriyi
girdikte ad değişkeninde saklanır.
Gördüğünüz gibi girdiğim isim ekrana yansıtıldı.
Arimetrik işlemler..
Evet arkadaşlar şimdi sıra matematiksel işlemlerde. Bash dilinde matematiksel işlemler yapmak
mümkündür. Bunun için en çok kullanılan let ve typeset fonksiyonlarıdır.
let “değişken=işlem”
Şimdi yukarıdakı koda dikkat ettiyseniz let dahilinde yapılan işlemde bir cevab değişkeni de ilave
ediliyor. Örneğin yukarıdakı kodda “cavab=a*b” cavab matematiksel işlemin değişkeni olmuştur.
9. Ve gördüğünüz gibi işlemi yapmıştır arkadaşlar.
typeset ile
Evet arkadaşlar şimdi diger metoda geçelim
typeset -i değişken
değişken=işlem
echo $değişken
Evet arkadaşlar gördüğünüz gibi burada typeset –i değişkeni belirledikten yazdıktan sonra altta işlemi
görüyorsunuz.
Fark bu arkadaşlar.
10. Gördüğünüz gibi. Işlem yine başarılı şekilde yerine yapıldı.
Ve bir de arkadaşlar. Lütfen unutmayalım ki, bash dilinde yalnızca tam sayılar hesaplana
bilinmektedir.
/Saygılarla
Mikayıl İlyasov
2019 Cyber-warrior.org