C# – Mobile Application Developer

All Posts All Posts

Category: C#
RESTful Web Servis Örneği (C#)

Bu slayt gösterisi için JavaScript gerekir.

Kaynak Kodu: RESTful Web Servis Ornegi

Not: WebApiConfig dosyasının içeriğinde   routeTemplate: “api/{controller}/{id}”, olan satır   routeTemplate: “api/{controller}/{action}/{id}”, şeklinde değiştirilmelidir.
Controllers klasörüne Web API Application Controller Class eklenmeli (örn: TestServiceController)
Get methodları [HttpGet] ön eki bulunmalı ve HttpResponseMessage dönüş türünde olmalıdır.
HttpResponseMessage dönüş türü için  var res = Request.CreateResponse(HttpStatusCode.OK); ve  res.Content = new StringContent(“Dönüş değerleriniz”, Encoding.UTF8, “application/json”); şeklinde ekleme yapmanız yeterlidir.
TestService Controllerı olan ve Login method isimli bir örneğin dönüşünde Adres satırı http://localhost:50640/api/TestService/Login?email=&pass= şeklinde olur (api ön ekine dikkat)

Verilerin Json türü serilizasyonu için System.RunTime.Serialization kütüphanesi eklenmelidir.
Hata durumunda loglamalar için Microsoft.Practices.EnterpriseLibrary.Logging (Nuget Manager EnterpriseLibrary.Logging aratınız) kütüphanesi eklenmelidir. Bu kütüphanin web config dosyasında configSections, loggingConfiguration ve enterpriseLibrary.ConfigurationSource sectionları altında loglama için konfigürasyon verileri bulunmaktadır.

Detay olarak web confige connectionStrings ve appSettings eklenmiş yazılar nasıl alınır örneği de bulunmaktadır.

WCF ve ASMX Web Servis Örneği (C#)

Bu slayt gösterisi için JavaScript gerekir.

Yazının içeriği

WCF ve ASMX örneği
Örnek login methodu
Örnek dönüş biçimi
JSON dönüştürme/çözme işlemleri
IIS web servis ekleme

Kaynak Kodları: web servis örneğini indir

 

Genetik Algoritma ile Maksimum Ağırlıklı Clique Problemi ( MWCP ) (Genetik Algoritma, C#)

Bu çalışmada ağırlıkları ve diğer Nodelerle ilişkileri verilmiş bir uzayda en yüksek ağırlığa sahip alt grafın bulunması amaçlanmıştır. Çalışma sonunda büyük bir arama uzayına rağmen doğru çaprazlama şekli ve oranı sayesinde çok kenarlı graflar bulunmuştur. Projede bu çalışma için en uygun olan Rulet tekeri çaprazlama modeli kullanılmıştır. Problemin Genetik Algortima ile çözümü için geliştirilen uygulama, c#(sharp) programlama dili ile yazılmıştır.

Projenin detayı: maksimum ağırlık projesi

Projenin Kodları

Tüm projeyi İNDİR: Program Kodu

Genetik Algoritma ile Çift Taraflı Montaj Hattı Dengeleme (Genetic Algorithms, C#)

Projenin Kodları

Tüm projeyi İNDİR: Program Rapor ve Kodu

1. GİRİŞ

Bu çalışmada, çift taraflı mondaj hattının her iki tarafı için belirlenmiş çevrim süresi içerisinde istasyon sayısını en aza indirgeme amaçlanmıştır. Operasyonlarda taraf ve istasyon sayısı kısıtları bulunmaktadır. Problemin Genetik Algortima ile çözümü için geliştirilen uygulama, c#(sharp) programlama dili ile yazılmıştır.

Genetik algoritma rastgele arama metodu olduğu için tek bir çözüm aramak yerine bir çözüm kümesi üzerinde çalışır. Optimum çözüme olası çözümlerin bir bölümü üzerinde gidilir. Böylece çalışmadaki sonuçlar her zaman en iyi olmaz. Çalışmada genetik algoritmanın kullanılmasının nedeni, genetik algoritmanın problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç duymamasıdır.

2. Materyal ve Yöntem

Genetik Algoritmalar, daha iyi çözümlere yavaş yavaş bir yaklaşım sağlayan geniş bir problem uzayı boyunca yönlendirilmiş rastgele bir araştırmaya imkan sağlar. Temel avantajı optimize edilmeye çalışılan problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç göstermemeleridir.

Genetik Algoritma Kullanılarak Noktadan Noktaya Yol ve Rota Planlama (C#)

Projenin Kodları

Tüm projeyi İNDİR: Program Kodu ve Rapor

1.Giriş

Bu çalışmada bir kroki üzerinde bulunan noktalar arası rota ve yolun genetik algortima ile bulunması amaçlanmıştır. Genetik algoritma rastgele arama metodu olduğu için tek bir çözüm aramak yerine bir çözüm kümesi üzerinde çalışır. Optimum çözüme olası çözümlerin bir bölümü üzerinde gidilir. Böylece çalışmadaki sonuçlar her zaman en iyi olmaz. Çalışmada genetik algoritmanın kullanılmasının nedeni, genetik algoritmanın  problemin doğasıyla ilgili herhangi bir bilgiye ihtiyaç duymamasıdır. Temelinde gezgin satıcı problemine benzeyen çalışmanın , gezgin satıcı problemine benzer problemler içinde çözüm olması amaçlanmıştır.

2.Genetik Algoritma Yönteminin Probleme Uygulanışı

Problemin çözümü için populasyon büyüklüğü karar verilmelidir. Populasyon büyüklüğü seçilirken aşırı yüksek seçilirse gelişim yavaşlar, aşırı küçük seçilmesi durumunda da araştırma uzayı yetersiz olur. Problemimize en uygun populasyon büyüklüğü 30 birey olarak seçilmiştir. Programın arayüzünde birey sayısı değiştirilebilir. Her kromozom 20 genle temsil edilip, genler kodlanırken değer kodlama yöntemi kullanılmıştır. Her gen yönleri temsil eden 0;Batı, 1;Kuzey, 2;Doğu ve 3;Güney ile belirtilmiştir. Örnek olarak 5 nolu kromozomun genleri:01102033021011023221 gibi 20 gene sahiptir.

Populasyon büyüklüğü tamamlanıp, kromozomlar kodlandıktan sonra uygunluklarına göre seçilim yapıldı. Uygunluk değerleri hesaplanırken noktalar arası seyahat olduğu için kromozomun en son noktası ile ulaşmak istenen arasındaki farka bakılır. Bu yüzden uygunluk fonksiyonumuz 2 fonksiyonun toplamına eşittir. Birinci fonksiyonumuz en son nokta uzaklığı f(y) , ikinci fonksiyonumuz ise kromozomun aldığı yolların toplamı olan toplam mesafe f(z) fonksiyonudur. Uygunluk fonksiyonumuz f(x)=5*f(y)+ f(z) olarak belirlenmiştir. Burada son nokta uzaklığını fonksiyonu problem için daha önemli olduğundan katsayısı artılmıştır. Örneğin 6 nolu kromozom son noktası 21 , ulaşılmak istenen nokta 22 ise f(y)=20, ve aldığı yolların mesafesini ölçen f(z)=550 olduğunu düşünelim ,6 nolu kromozomun uygunluk değeri f(x)=5*20+550=650 olur. Kromozom ulaşılmak istenilen noktaya varmış olsaydı bu değer 550 olacaktı. Burada görüldüğü gibi son noktaya ulaşmak uygunluk değerini hesabının doğruluğunu kanıtlıyor.

OWI-535 Robot Kol Kontrolcüsü Yazılımı (C#)

Bu projede OWI-535 modeli robot kolun bilgisayar aracılığıyla kontrol edilmesi için C# üzerinde bir uygulama geliştirilmiştir. Uygulama seri port üzerinden iletişim kurduğu robota belli şemalara uygun sinyaller göndererek hareketin gerçekleştirilmesini sağlar.

Uygulama, seri port üzerinden Arduino geliştirme kitiyle iletişim kurar ve Arduino, aldığı sinyalleri uygun pinleri kullanarak hareketin gerçekleştirilmesini sağlar.

OWI-535 Robot Kol Hakkında OWI-535 Robot Kol Seti, uzaktan kumanda aracılığı ile kontrol edilmektedir. Kolun kaldırma kapasitesi 100gr’dır. Beş ayrı motor, bu uzaktan kumanda ile kontrol edilmektedir. Kol 120° bilekten, 300° dirsekten, 180° omuzdan ve 270° temelden ve 0-4.5cm kıskaç hareket etme özelliğine sahiptir. Kıskacın üzerinde bir de beyaz LED bulunmaktadır.

OWI-535 Robot Kol Kumanda Yazılımı, C# üzerinde geliştirilmiş bir robot kontrol uygulamasıdır ve OWI-535 ile varsayılan olarak gelen kablolu kumandaya ek olarak bazı özelliklere sahiptir. Bunlar ileriki bölümlerde daha ayrıntılı olarak incelenecektir. Bu özellikler temel olarak motorların ve LED’in kontrol edilmesi ve hareketlerin kaydedilmesidir.

Projenin Kodları

Tüm proje kodları Github Link

Dosya Okuma ve Sıralı Şekilde Yazma (Hızlı Sıralama C# konsol)

Bir  metin belgesinden alınan yazılar yine bir metin belgesine sıralı (satır satır) olarak yazma işlemi, c# konsol uygulaması şeklinde geliştirilmiştir. Sıralama Quicksort (Hızlı Sıralama) yöntemi ile yapıldı. Normalde ArrayList.Sort() yöntemi hızlı sıralama algortimasını kullanıyor fakat uygulamada direkt yöntem yerine algoritma yazılarak gerçekleştirildi. Uygulamanın kodları yazının devamında bulunmaktadır.

Dosya Okuma ve Yazma

Dosya okuma ve yazma sınıflarına direkt ulaşabilmek için using System.IO komutunu projeye ekliyoruz. Kaynak dosyayı açmak için FileStream nesnesini ve StreamReader sınıfını kullanarak ReadLine() metodu ile dosyayı okuyoruz. ReadLine() metodunu dosyanın sonunu ifade eden NULL değerine geri dönene kadar çağırıyoruz. Döngü içinde okunan satırları dizinin içine ekliyoruz ve sonrada tüm nesneleri kapatıyoruz.

Aynı şeklide FileStream nesnesini ve StreamWriter sınıfını kullanarak hedef dosyaya yazma işlemini yaptık. Burada hedef dosya “cikti.txt” şeklinde belirlendi. İşlem sonrasında debug klasöründe cikti.txt dosyası oluşturulup, yazma işlemi sıralı olarak gerçekleştirilecek.

Ödüllü Programlama Sorusu ve Çözümü (C#) (Yazılım yeni başlayan için algoritma geliştirme)

Bu soru TBD Genç Ankara Şubesinin hazırladığı 2011 Şubat ayı programlama yarışmasının sorusuydu. Soruyu doğru cevaplandıranlar arasından iki kişiye kitap hediye edildi. Şanslı olanlardan birisi de bendim. Soru şöyleydi:

TBD Genç Ankara – Ödüllü Programlama Sorusu 12
(Bu soru TBD Genç Ankara Şubat 2011 bülteninde yayımlanmıştır.)
Soru 12: Uzun İp

Problem

Elinizde 100 metrelik düz ve iki uçlu bir ip var ve bu ip birkaç ipin birleştirilmesinden oluşturulmuş. Sizden bu kaynak noktalarından herhangi rastgele ikisini çözdüğünüzde oluşacak en büyük parçanın verilen bir A sayısından büyük veya eşit olma ihtimalini bulmanız isteniyor.

Girdisindede size ipin kaç tane kaynak noktası olduğu N, kaynak noktalarının ipin sol ucundan kaç metre uzakta olduğu ve A sayısının verileceği, çıktısında sadece ihtimalin ondalık gösterimini yazacak bir konsol uygulaması yazmanız isteniyor.

Açıklayıcı olması açısından, istenen sonuç, N kaynak noktasından herhangi (birbirinden farklı) ikisi çözüldüğünde oluşan parçalardan en büyüğünün uzunluğunun A’dan büyük veya eşit olma olasılığının ondalık gösterimidir. Lütfen girdi ve çıktı biçimini ve kısıtlamaları dikkatli okuyunuz.