C’de dosyaya yeni kayıt eklemek

C’de dosyaya yeni kayıt ekleyen program:

C programlamada dosyalama işlemlerinin ilk örneği olan “C’de dosyaya yeni kayıt ekleyen program” daki amaç yeni bir dosya yaratmak ve bu dosyanın içerisine veriyi yazdırmaktır. Programda kullanıcıdan veri girişi yapılmaya devam edilsin mi diye soracak ve istenilen komut girildiğinde veri girişi yapılmaya devam etmeyi amaçlıyoruz. Başlayalım…

C’de dosyaya yeni kayıt ekleyen programın Algoritması:

ANA PROGRAM

  1. BAŞLA
  2. Dosya değişkeni oluştur (FILE*dosya;)
  3. Dosyayı aç ve tam yetki ver ((fopen(“veri.dat”,”a+”);)
  4. Ferror değişkeni sıfıra mı eşit? e:5 h:7
  5. “Hata var” yaz
  6. 18’e git
  7. Dosyanın sonuna git (fseek(dosya,0,SEEK_END);)
  8. “Numaraya gir” yaz
  9. ogrenci.numara gir
  10. “Ad” yaz
  11. ogrenci.adi gir
  12. “Notu gir” yaz
  13. ogrenci.notu yaz
  14. ogrenci yapısını dosyaya ogrenci byte’ı kadar yaz (fwrite(&ogrenci,sizeof(ogrenci),1,dosya);)
  15. “Başka kayıt ekleyecek misiniz?” yaz
  16. klavyeden girilen değer “e” veya “E” mi? e:7 h:17
  17. dosyayı kapat
  18. DUR

Algoritma Açıklaması:

Dosyaya veri girişi yaptırmak adına öncelikle bir dosya yapısı oluşturmalıyız. Dosya adında bir FILE yani dosya oluşturduk. Ardından oluşturduğumuz bu dosyayı programımız ile aynı dizin içerisinde “veri” adında, “dat” uzantılı, yazılabilir ve okunabilir yetkilerini vererek açtık. Ferror 0 değerini verirse programda hata var anlamına gelmekteydi. Bu nedenle ferror 0 değilse programı devam ettir dedik. Döngümüze başlattık kullanıcıdan bilgileri istedik ve ardından kullanıcı tarafından girilen değer küçük e veya büyük E harfiyse döngüyü tekrar devam ettirerek dosyaya yeni kayıt eklemeye olağan sağladık.

C’de dosyaya yeni kayıt ekleyen programın Akış Diyagramı:

c-de-dosyaya-veri-yazma

Akış Diyagramının Açıklaması:

Akış diyagramı ve açıklamalarını ulaşmak için tıklayın.

C Programlamanın Açıklaması:

C kodları nasıl çalıştırılır (derlenir) öğrenmek için tıklayın.

C Programının Temel Yapısı(Değişken Tipleri) Programlama hakkındaki açıklamalar için tıklayın.

C Programlamada kullanıcının bilgi girişi – çıkışı yapması için gerekli  açıklamar için tıklayın.

C’de dosyaya yeni kayıt ekleyen program – C programı:


#include
#include
struct ogryapi
{
char numara[10];
char adi[20];
int notu;
} ogrenci;
main()
{ char yenikayit;
FILE*dosya;
dosya=fopen("veri.dat","a+");
if(ferror(dosya)!=0) printf("Hata var\n");
else
{
fseek(dosya,0,SEEK_END);
do
{
printf("Numaraya gir: "); scanf("%s",&ogrenci.numara);
printf("Ad:"); scanf("%s",&ogrenci.adi);
printf("Notu gir:"); scanf("%d",&ogrenci.notu);
fwrite(&ogrenci,sizeof(ogrenci),1,dosya);
printf("Başka kayit ekleyecek misiniz?:");
yenikayit=getche(); printf("\n");
}
while((yenikayit=='E') || (yenikayit=='e'));
fclose(dosya);
}
getch();
}

C programının açıklaması:

Standart (Temel) C kütüphanemiz stdio.h’ı programızın kodlarını çalıştırmak için programımıza include kodu ile dahil ettik. Programımızın açılır açılmaz kapanmaması için getch() fonksiyonunu kullanırız. Getch fonksiyonunu kullanmamız içinde conio.h kütüphanesine ihtiyac duyarız. Bu nedenle conio.h kütüphaneside programımız içerisine dahil ediyoruz.

Ardından ogrenci değişkeniyle tanımladığımız, ogryapi adında bir struct – yapı(Struct nedir?) tanımladık. Yapının mantığı benzeri işlevi gören farklı türdeki değişkenleri bir araya toplamak olduğundan ogrenci bilgileri ile alakalı girilebilecek örnek değişkenleri yapı içerisine oluşturmalıyız. Char tipi İngilizce karşılığı Character yani bizim bildiğimiz karakter anlamına gelir. Hem rakamları hem de harfleri desteklemekte. İnt tipinin İngilizce karşılığı İntegerdır. Türkçe anlamı tamsayı olup yalnızca tamsayı tipinde oluşturulmuş sayıları destekler.

Ana programımızı oluşturduktan hemen sonra ilerde kullanıcıdan yeni bir kayıt ekleyecek misiniz sorusuna cevaplamak amacıyla kullanacağımız “yenikayit”  değişkenini yaratıyoruz. FILE komutuyla dosyamızı oluşturduk. Fopen fonksiyonuyla dosyamızı açıyoruz. Fseek komutuyla ise programa her kayıt eklendiğinde dosyanın sonuna eklenmesi için dosyanın sonuna git fonksiyonunu uyguladık. Yeni kayıt ekletebilmek amacıyla bir döngüye ihtiyacımız var. Bu işlem için en uygun döngü tipi do {} while() döngü tipi olduğundan do while döngüsü oluşturuyoruz. Printf fonksiyonu yardımıyla belirlediğimiz karakterleri monitörümüze yazdırdık. scanf fonksiyonu yardımıyla da klavyeden girilen değeri ogryapi değişkenlerimize aktardık, eşitledik. Getche fonksiyonuyla klavyeden girilen tek karakteri yenikayit adlı değişkene eşitliyoruz. Eğer girilen değer “e” veya “E” ise döngüyü tekrar çalıştırdık.

Son olarak dosyamızı kapattık ve getch(); fonksiyonunu kullanarak programı sona erdiriyoruz.

Önizleme:

c-de-veriyi-kayit-yazdirma-veri-dat

C uygulamasının proje hali ve yazılımı:

Proje halindeki dosyayı indir.

Uygulama halindaki dosyayı indir.

C’de 50 den büyük sayıların Fibonacci değerini hesaplama (Videolu)

C’de 50 den büyük sayıların Fibonacci değerini hesaplama

Daha önce C Programlamada fibonacci sayılarını hesaplayan bir program hazırlamıştık. Yalnız bu program yüksek değerlikli veri türlerinde desteklenmeyen olay nedenli 50 ve daha büyük sayılarda hatalı sonuç çıkarıyordu. C programlamada 50 den büyük sayıların Fibonacci değerini hesaplarken hiperbolik ters fonksiyondan tanjanta, tanjantdan Calculus(Kalkülüs) oranına, Calculus oranından ise konumuzun en önemli kısmını oluşturan Altın oranı kullanacağız. Altın orandan nasıl Fibonacci değerlerini hesaplayabileceğimizi ve bu dönüşümü sağlayan formülü anlatacağız. Başlayalım…

Bu dersi daha iyi anlabilmeniz için incelemenizi / okumanızı önerdiğim konular;

Altın oran – Altın oran nedir?

Calculus (Kalkülüs)- Calculus nedir?

Ters hiperbolik sinüslü kavis (asinh) nedir?

Fibonacci dizisi nedir? Fibonacci dizisinin Altın oran ile ilişkisi nasıldır?

C’de Fibonacci değerini hesaplama -1

Fonksiyon nedir?  (ÖNEMLİ)

Bu konuları derine inmeden yalnızca bilmemiz gereken tarafı ve konuda niçin kullandığımızı kısaca özetleyeyim. Öncelikle Altın orandan bahsedelim.

Altın oran nedir?

Altın oran bir nesneyi en mükemmel uyumu hangi geometrik boyutlarda sağlarım sorusunun cevabı için gerekli olan geometrik ve sayısal bir bağıntıdır.

Okumaya devam et “C’de 50 den büyük sayıların Fibonacci değerini hesaplama (Videolu)”