Kodlamada Dikkat Edilecek Noktalar

Döngü içerisinde yeni değişken tanımlaması yapmayın.

Örneğin;
            int toplam = 0;
            for (int i = 0; i < 1000; i++)
            {
                int sayi = i * 10;
                toplam += sayi;
            }
döngüsü için sürekli aynı işlemi gören “sayi” değişkeni için bellekten 1000 adet ayrı hücre tahsis edilir, bu işlem de belli bir gecikmeye neden olur. Bunun yerine;

                int toplam = 0;
                int sayi;
                for (int i = 0; i < 1000; i++)
                {
                    sayi = i * 10;
                    toplam += sayi;
                }

    şekline “sayi” değişkeni döngü dışında tanımlanırsa bu işlem için tek bir bellek hücresi üzerinde işlem yapar.

    Noktalı sayı karşılaştırmalarını “==” işlemi ile yapmayın.

    Bunun nedeni karşılaştırma işlemi “==” ile yapıldığında eşitlik şartı için bütün bitlerin test edilmesidir. Özellikle bölme işlemlerinin hassasiyetinden dolayı noktalı sayılarda bölme sonrası öngörülemeyen bazı küçük değer farklılıklarının olmasıdır. Bu işlem için; tolere edilebilecek bir hata değerini tespit edin ve karşılaştırılacak sayıların farkının bu hata değerinden küçük veya eşit olmasını sınayın. Örneğin;

                double hata = 0.0001;
                if (toplam – toplam2 <= hata)
                {
                    ////////////////
                }




Mail Gönderme Eklentisi

SMTP sunucu kullanılarak windows form uygulamasından mail göndermeyi sağlayan bir user kontroldür.

User kontrole ait elemanlar:

  • string Kime: Mailin gönderileceği mail adresi
  • string KullaniciAd: Kullanacağınız SMTP sunucu üzerindeki kullanıcı adınız. Outlook ve Gmail için mail adresidir.
  • string Sifre: Kullanacağınız SMTP sunucu üzerindeki şifreniz.
  • string Konu: Mailin konusu
  • string Mesaj: Mailin ana gövdesi

Eklentinin çalışır kodlarını indirmek için TIKLAYIN




Visual Studio İpuçları

Kopyalama Tarihi

Visual Studio hafızaya kopyalanan verileri geriye doğru 20 kopyalama işlemine kadar hafızada tutar. Bu kullanmak için [CTRL]+[SHIFT] tuşları basılı iken her [V] tuşuna basıldığında hafızada geriye doğru bir önceki kopyalanan veriye erişir.

Dikdörtgensel alanda seçme

Şekilde göründüğü gibi alt alta olan satırlarda bütün satırı seçme yerine sadece dikdörtgensel bir alanda seçme yapılacaksa [Alt] tuşu basılı iken seçme işlemi yapılır.

 

using Referanslarının kısayolla eklenmesi

Kullanılan bir sınıfın referansı yüklü değilse ve altı hata mesajı veriyorsa kursor hata satırında ve hata satırının altında küçük bir dikdörtgen beliriyorken [CTRL]+[.] tuşlarına beraber basıldığında şekildeki gibi bir alt menü açılacaktır. Bu menüde using ifadesi seçilirse referansı ekler, alttaki seçenek seçilmesi durumunda ise sınıfın tam yolunu ekler.

 

Adı değiştirilen değişken ve ya metodun bütün referanslarında adının değiştirilmesi

Bir değişkenin adı tanımlandığı yerde değiştirildiğinde altında kırmızı bir dikdörtgen belirir. Bu dikdörtgen tıklandığında ve ya [CTRL]+[.] tuşlarına beraber basıldığında şekildeki gibi bir alt menü açılacaktır. Bu menüden ilk seçenek tıklandığında proje içerisinde bu değişkenin kullanıldığı her yerde adı son hali ile değiştirilecektir.

 

Var olmayan bir sınıf ve ya metodun kullanılması ve hatanın düzeltilmesi

Kodlama sırasında bir metodun oluşturulması gerekiyorsa; o metod varmış gibi kullanın. Daha sonra metod adının altında tekrar bir dikdörtgen oluşacaktır. Açılan alt menü tıklandığında metod, visual studio tarafında sonucun atandığı değere ve gönderilen parametrelere göre otomatik olarak oluşturulacaktır. Aynı şekilde sınıflarda oluşturulabir.

 

Kullanılan bir metodun parametrelerinin sıralarının değiştirilmesi ve ya silinmesi

Parametre sırası değiştirilecek olan metod adına sağ tıklanıp Refactor –> ReOrder Parametres seçeneği tıklandığında sol taraftaki ekran açılacaktır. Buradan değişiklik yapılıp OK butonu tıklandıktan sonra sağdaki pencere açılacaktır. Bu pencere metodun kullanıldığı bütün yerler listelenmektedir. APPLY butonu tıklandıktan sonra metodun kullanıldığı her yerde gerekli değişiklikler otomatil olarak yapılacaktır.

 

Aynı şekilde parametrelerden bazıları silinecekse Refactor –> ReMove Parameters seçeneği tıklandığında bu pencere açılır. Bu ekrandan silinecek parametreler seçildikten sonra OK butonu tıklanır. Daha sonra bütün projeye bu değişikliği uygulamak için bir onay penceresi açılır yeniden sıralamada olduğu gibi APPLY butonuna tıklanır.




Seri Port Üzerinden SMS Gönderme User Controlü

Bu user control Visual Studio için yazılmıştır.

Eklentinin amacı:

USB ile bilgisayara bağlanan cep telefonu üzerinden sms göndermektir. Bu smsleri gönderirken varsa sms paketlerinden düşer, sms paketi yoksa da tarifeye göre sms gönderme ücreti kesilir bakiyeden.

Eklentiyi indirmek için TIKLAYIN

Eklentinin Visual Studioya Yüklenmesi

Tools menüsünden Choose ToolBox Items… seçeneğini tıklayın

Açılan pencereden Browse… düğmesi tıklanarak SensSms.dll dosyası seçilir ve tamam düğmesine basılır. Sonuç olarak eklentimiz Visual Studionun toolboxına eklenecektir. Proje eklemek için sadece sürüklenip bırakılır. Bunun dışında yapılacak bir işlem yoktur.

EKLENTİNİN ÇALIŞIR PROJEDE KULLANILMASI

Eklenti projeye eklendikten sonra kullanmak için ilk önce Port Ayarla butonu ile telefonun bağlı olduğu seri port numarasının ayarlanması gerekmektedir. Bu işlem için, denetim masasından bilgisayara bağlı telefon ve modemlere bakılır. Buradan sms hangi modem üzerinden gönderilecekse onun port numarası programa yazılır.

Port ayarlandıktan sonra port numarasının kullanılabilir olması durumunda Gönder butonu aktif olacaktır. Bundan sonra gönderilecek telefon numarası ve mesaj yazıldıktan sonra Gönder butonuna tıklanır. Mesaj gönderiminin başarılı olması durumunda “mesaj seri porta yazıldı” uyarısı gözükecektir.




C# ile Dosya Okuma Yazma İşleme

Ödev Metni

Bir input dosyasından kayıtlar okunacak ve kayıtlarda ki bir anahtar alana göre sıralı bir output dosyası oluşturulacaktır.
    input1.txt 
Kayıtlar sırasız bir şekilde yerleştirilmiş ve bütün kayıtların uzunluğu değişkendir. Kayıtlarda ki alanların uzunlukları da genelde değişkendir ve alanlar birbirinden ‘|’karakteriyle ayrılmaktadır. Kayıtlarda ki alanlar:

Ders kodu (7 characters)

Ders adı (variable length >= 1)

Dersin kredisi (1 character)

Önşart dersi (variable length >= 0)

Ders açıklaması (variable length >= 1)

    output.txt  
Output Dosyasında yapılacak işlemler:

Sort – Output dosyasında kayıtlar Ders koduna göre sıralı olarak yerleştirilmiş olacak.
Duplicate eleme – Dosyada çift kayıtlar (aynı ders koduna sahip dersler var ise bunlar istenirse silinebilecek)
Insert – output.txt’ye sıralı yerine kayıt ekle

 

Projenin Raporu

Projenin çalışır kodlarını indirmek için TIKLAYIN

Kayıtların Dosyada Tutulma Formatı ve Kayıt Bilgilerin Ayrıştırılması

Dosyada her bir satır bit kayıttır ve her bir kaydın alanları birbirinden | karakteri ile ayrılmaktadır. Dosyadan her okumada bir satır dolayısı ile bir kayıt okunur. Okunan bu kayıt “|” karakteri baz alınarak parçalanır ve her bir parçası oluşturulan bir diziye atanır. Bu dizi içerisinde her zaman;

0. Eleman: Dersin kodu

1. Eleman: Dersin adı

2. Eleman: Dersin Kredisi

3. Eleman: Dersin şart dersi (şart ders yok ise bu eleman boş kalır)

4. Elaman: Dersin açıklaması bulunur.

Ders Sınıfı

Bu sınıf, her bir kaydı temsil eden dersleri barındıracak olan yapıyı sunar. Sahip olduğu metot ve özellikle aşağıdaki gibidir;

public enum SiralamaOlcudu

Sıralama metodunda sıralamanın hangi alana göre yapılacağını belirtmek için kullanılan parametreyi daha anlaşılır yapmak için kullanılan yapıdır. İçerdiği alan şu şekildedir;

KredisineGore, KodunaGore, AdinaGore

Sınıfın Sahip Olduğu Alan ve Yapıcı Metotlar

private string _Kod: Dersin kodunu tutar ve yedi karakter uzunluğundadır.

private string _Ad: Dersin adını tutar ve en az bir karakter uzunluğundadır.

private int _Kredi: Dersin kredisini tutar ve bir karakter uzunluğundadır.

private string _OnSart: Dersin varsa şart dersi onu tutar ve herhangi bir uzunluk sınırlamasına tabi değildir.

private string _Aciklama: Dersin açıklamasını tutar ve en az bir karakter uzunluğundadır.

Sınıf iki adet yapıcı metot içerir bunlardan biri boş parametre listesi ile çağrılabilirken diğeri nesnenin özellikleri taşıyacak şekilde çağrılır.

Ders Arama Metodu

public static Ders DersAra(string dosya, string DersKodu) prototipine sahiptir. Parametre olarak içinde arama yapacağı dosyanın adresini ve arayacağı dersin konu alır. Adresini aldığı dosyadan sırayla kayıtları çekerek aradığı kayıt olup olmadığını araştırır. Elindeki kayıt aradığı kayıt ise Ders sınıfından bir nesne olarak döndürür. Bu şekilde dosyanın sonuna kadar ilerler. Dosyanın sonuna geldi ise ve kaydı bulamadı ise Ders sınıfından null değer taşıyan bir nesne döndürür.

Sıralama Metodu

public static List<Ders> Sirala(List<Ders> Siralanacak, bool DosyayaYazilsinMi, SiralamaOlcudu NeyeGore) prototipine sahiptir. Parametre olarak sıralayacağı kayıtların listesini, sıralama sonucunun dosyaya yazılıp yazılmayacağını ve sıralamanın neye göre yapılacağını belirten değerler alır.

Sıralama işlemi için kabarcık sıralama algoritmasını kullanır. Kayıtları sırayla ikili olarak karşılaştırır. Önce gelen kayıt sonraki kayıttan büyük ise yer değiştir. Böylece her iterasyonda listenin en büyük elemanı listenin sonuna gelmiş olur. Sıralama sırasında içerisinde bulundurduğu bir switch-case yapısı ile SiralamaOlcudu parametresinin değerine göre kaydın hangi alanlarını karşılaştıracağına karar verir.

Dersleri Listeleme metodu

public static List<Ders> DersleriListele(string dosya) prototipine sahiptir. Parametre olarak kayıtların okunacağı dosya yolunu alır ve sonuçta Ders sınıfından bir liste döndürür.

Kayıtları sırayla dosya sonuna kadar okuyup her bir kaydı Ders sınıfından bir nesneye çevirip döndüreceği listeye ekler ve dosya sonuna geldiğinde listeyi dönderir.

Dosyaya Yazma Metodu

public bool DosyayaYaz(string dosya) prototipine sahiptir. Parametre olarak yazma yapacağı dosya yolunu tutar.

Üzerinden çağrıldığı nesneyi parametre ile belirtilen dosyaya eklemeye çalışır. Ekleme başarılı olursa true başarısız olursa false değer döndürür.

Form1 Sınıfı (Uygulama Katmanı)

Kayıt İçin Girilen Değerlerin Doğruluğunu Test Eden Metot

bool KayitlariKontrolEt(out string Kod,out string Ad,out int Kredi, out string onSart, out string Aciklama, out string DonecekHataMesaji) parametresine sahiptir. Parametre listesi Ders sınıfından nesnenin özellikleridir ve hatalı kayıt olması durumunda hata mesajını taşıyacak olan stringtir.

Test işlemi için öncelikle ilgili metin kutularından değerleri çekip ilgili değişkenler atar daha sonra uzunluk bilgilerine bakar. Bu noktada ders kodu değişkeninin ilk dört karakterinin harf son üç karakterinin de rakam olmasını test eder. Test sırasında ilk hatalı değişkende; ilgili değişkenin hata mesajını DonecekHataMesaji’na atar ve false değer döndürür. Bütün kayıtların doğru formatta olduğu görüldüğünde hatamesajı içeriğini boş bırakarak true değer döndürür.

İnput.txt Dosyasına Yeni Kayıt Ekleme

Bu işlem için öncelikle KayitlariKontrolEt metodu çağrılır ve true değer dönerse şu işlemleri yapar;

Metin kutularına girilen değerler ile Ders sınıfı tipinden bir nesne oluşturur ve bu nesne üzerinden DosyayaYaz metodunu çağırır.

Bir Dersi Koduna Göre Arama

Ders arama bölümünde ki ders kodu metin kutusundan arayacağı kodu alır ve bu kodla beraber içinde arama yapacağı dosya adını DersAra statik metoduna parametre olarak atar. Sonuçta dönen değer nul değer ise kaydın bulunmadığına yönelik mesaj verir. Dönen değer dolu ise kaydın bilgilerini ilgili alanlara girer.




MICROCHIP Firmasının f serisi Denetleyicileri için Timer Interrupt Sayısı Hesaplama

Programın kullanımı:

  1. Kullanılacak timer tipini seç,
  2. Kullanılacak timer bölme değerini seç,
  3. Timerın kaç saniyede bir interrupta gireceğini gir,
  4. Interrupt sayılarının küsüratlı gelmemesi için “Sadece tamsayılı interrups göster” kutucuğunu tıkla,
  5. Hesapla butonuna tıkla.

Not: Gerekli olan sürenin kaç saniye tutuğunu hesaplamak için programa dahili olan “Zaman Hesaplama” aracını kullanabilirsiniz.

Projenin çalışır kodlarını indirmek için TIKLAYIN




Metin Şifreleme Programı

Projenin çalışır kodlarını indirmek için TIKLAYIN

Program C# ile yazılmış. Program açılışta ekrandaki gibi iki seçenekle başlar. Şifreleme yapılacaksa Şifrele butonuna tıklanır. Bu buton tıklandıktan sonra aşağıdaki gibi bir şifreleme penceresi açılır.

Açılan pencerede sol tarafa şifrelenecek metin yazıldıktan sonra Şifrele butonuna tıklanır. Burada dikkat edilmesi gereken nokta metin şifrelendikten sonra ortada yazan anahtar değerinin not edilmesidir zira bu anahtar değeri şifrelenmiş metinin çözümlenmesinde kullanılacak. Şifrelendikten sonra metnin şifrelenmiş halinin worde yazılması için onay penceresi açılır. Burada onay verildiği takdirde metin word dosyasına yazılır.

Metni çözümlemek için de üst tarafta yer alan İşlemler menüsünden Çözümle işlemi seçilir.

 

Çözümlenecek olan metin sol tarafa yazılıp ortada yer alan anahtar değeri alanına anahtar yazıldıktan sonra Çözümle butonuna tıklanır.




C# ile Yazılmış Mayın Tarlası

Projenin çalışır kodlarını indirmek için TIKLAYIN




Bilgisayarcı Program da Kodlar Ders Programını da, İkisi de Program Değil mi :)

 




Program Kontrol Deyimleri Soruları

1. Klavyeden girilen bir sayının faktöriyelini bulan programı yazınız.

2. f(x) = x^3 + 5*x^2 + 4*x –3 fonksiyonunun sonucunu x = 0, 0.2, 0.4, 0.6, ……., 4.8, 5.0 için hesaplayıp ekrana yazan programı yazınız.

x^3 : x’in 3.kuvvetini gösteriyor.

3. 1,2,3,5,8,13,21,34,55… şeklinde devam eden serinin 2000 den küçük elemanlarını ekrana yazan programı yazınız.

4. abc = a^3 + b^3 + c^3 şartını sağlayan üç basamaklı abc sayılarını bulan programı yazınız.

5. [100, 300] aralığında 3 e veya 4 e tam bölünen ancak ikisine birden bölünmeyen sayıların toplamını bulan programı yazınız.