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.




ref ve out Parametreleri

ref

ref parametre niteleyicisi C# ın metodlara parametre gönderirken değerle çağırma yerine referansla çağırmasını sağlar yani parametrenin adresini metoda / fonksiyona gönderir.

// ref parametresi ile argüman alan metodun örnek prototipi:

public void sqrt (ref int a){

// ref parametresi ile argüman alan fonsiyonu çağırma:

nesne_adı.sqrt(ref a);

ref olarak aktarılan bir argümana çağrıdan önce bir değer atanmalıdır. ref kullanarak bir argümana , ilk değer atamak için bir metot kullanmak mümkün değildir.

out

Bir metoda değer aktarmak yerine metotdan değer almak için kullanılır. out parametresi olarak kullanılan değişkene metodu çağırmadan önce ilk değer vermek gerekli / kullanışlı değildir. Bunun sebebi ilk değerin metotdan talep edilmesidir, metodun zaten vereceği değeri vermek zaman kaybı olur.

Örnek olarak aldığı değerin 4 katını ‘buyut’ değişkenine aktaran ve döndüren bir metodun prototipini yazalım:

public void genislet ( int n, out int buyut){

buyut = n*4;

}

// metodun çağrılması

nesne_adı.genislet(int n, out int buyut);

Örnekte görüldüğü gibi ilk değeri olmayan buyut değişkenine içerde zaten atama yapılmaktadır, bundan dolayı ilk değer atanmaz.




C – C++ Çalışma Soruları – 2

1. Girilen bir yıla ait şubat ayının kaç gün çektiğini bulan programı yazınız.

2. Girilen üç sayıdan en büyüğünü bulup ekrana yazan programı yazınız.

3. Bir işletmede çalışan elemanlara normal ücretlerine ek olarak ürettikleri parça sayısına göre ek ücret verilmektedir. Parça başına ücret aşağıdaki şartlara göre verilmektedir:

Parça sayısı (0,10] arası için parça başına 0.5 TL,

Parça sayısı (10,30] arası için parça başına 0.8 TL,

Parça sayısı (30,…] arası için parça başına 1.2 TL,

Buna göre normal maaşı ve ürettiği parça sayısı bilgilerini alarak bir elemanın maaşını hesaplayan programı yazınız.

4. Girilen iki sayının bir birine tam bölünüp bölünmediğini veren programı yazınız.

5. Şu anda A şehrinin nüfusu 450.000, B şehrinin nüfusu 850.000,

A şehrinin yıllık nüfus artış hızı %2.5

B şehrinin yıllık nüfus artış hızı %1.3

bu verilere göre A şehrinin nüfusu kaç yıl sonra B şehrinin nüfusuna eşit olur ve o yıl ki nüfusları ne kadar olur? Hesaplayan programı yazınız.

DAHA UĞRAŞTIRICI SORU:

Girilen iki tarih arasında ki gün sayısını hesaplayan programı yazınız.

Program geçersiz tarih girildiğinde uyarı mesajı verecektir. (31 4 2011 gibi bir tarih girildiğinde 4. ayın 31 gün çekmediğini belirtecek)

– Yıllara göre aynı şekilde şubat ayı özel durumu da göz önüne alınacak

– Her ay standart 30 gün kabul edilecek




if–else Kontrol Deyimi Örnekleri

1. Klavyeden girilen bir sayının pozitif mi, negatif mi, 0 mı olduğınu ekrana yazan program.

2. Kenar uzunlukları girilen üçgenin alanını hesaplayan program.

3. Öğrencinin not ortalaması vizenin %40 ını, finalin de %60 ı toplanarak. Alınan vize ve final notuna göre ortalamasını hesaplayıp;

not 50 den küçük ise T yazan,

not [50,65) aralığında ise C,

not [65, 85) aralığında ise B,

not [85,100] aralığında ise A yazan program.

 




C Programlama Çalışma Soruları – 1 (Bazıların Cevapları)

NOT: Kodlar C++’ta yazılmıştır.

1.

3.