Category Archives: C Programlama

C Programlama hakkında öğrendiklerim, örnek programlar.

C Çalışması Uygulamaları

Sınav öncesi yaptığımız C çalışmasının örnek kodları. Tek ve çok boyutlu diziler, dosya okuma, yazma, fprintf, fscanf, bit işlemleri, struct, union ve enum örnekleri gibi konular var.

1. C’de dizinin boyutunu belirlemek ve fonksiyonlara dizi göndermek

2. C’de çok boyutlu diziler ve dizileri matris şeklinde ekrana bastırmak

3. C’de dizileri kullanarak Bubble Sorting

4. C’de fonksiyonlara pointer (işaretçi) göndermek ve değişkenlerin değerlerini dışarıdan değiştirmek

5. C’de fonksiyonlara fonksiyon göndermek – Argüman olarak fonksiyon göndermek – Fonksiyon tutan pointerlar

6. C ile ASCII tablosunu yazdırmak – Sayıların ASCII değerleri

7. Stringlere değer atamak – Kullanıcıdan stringe değer almak

8. C’de stringleri karşılaştırmak, eşitlemek, ard arda eklemek – strcpy, strcmp, strcat fonksiyonları

9. Elle oluşturulan basit string – Karakter dizisinden string oluşturmak

10. C’de basit struct örneği – Struct lara giriş

11. Fonksiyonlara struct atamak, structları pointer ile fonksiyona göndermek, structların pointer ile kullanım örneği

12. C’de typedef nedir ve ne işe yarar, union ların basit kullanım örneği

13. C’de bit işlemleri, sayıların ikilik sistemde yazılması, and, or, not, xor operatörlerinin açıklamaları bitlerin fonksiyonlara gönderilmesi

14. C’de enum ne işe yarar? Örnek enum kullanımı. Enum nasıl tanımlanır?

15. C ile dosya açma ve kapama işlemleri. C’de dosya içerisine basit yazı nasıl yazılır? FILE türü örneği.

16. fprintf ve fscanf fonksiyonlarına örnekler, fprintf ile dosyaya veri yazma örneği ile fscanf ile dosyadan basit veri okuma örneği

17. C’de dosya bitene kadar işlem yapmak, fprintf ve fscanf ile dosya sonuna kadar yapılan işlemler

18. Struct lardan dosya oluşturmak, C’de ikilik(binary) sistemde dosya oluşturma örneği. fread, fwrite ve fseek fonksiyonları hakkında örnek kod:

 

 

C ile Mükemmel Sayı Hesaplama

Mükemmel sayı hesaplayan basit bir C fonksiyonu hazırladım. Belki işine yarayan olur diye bloga koymak istedim. Program kaça kadar mükemmel sayıları hesaplamak istediğinizi soruyor. Daha sonra mukemmel isimli fonksiyonu çağırıp ona hesaplattırıyor. Bu fonksiyon da bulduğu sayıları ekrana yazdırıyor.

 

Günün C Uygulamaları

Bugün yaptığım C uygulamalarının çözümlerini, ne işe yaradıklarını 1 cümleyle belirtip burada toplayayım dedim. Amaçlarından kısaca bahsedip kodları yazarak ilerliyorum.

Yazar kasa programı için ufak bir şablon:

Yılda %5 zamlanan kurs ücretini ve toplam ücreti hesaplamak(tamam, kira da hesaplayabiliriz).

1’den girilen sayıya kadar olan sayıların toplamı

Kilo-boy oranını çıkaran kod:

Maaş+Primde alınacak toplam paranın hesabı:

 

 

C’de Programı Argümanla Çağırmak

C’de yazdığım hesap makinesinin farklı basit bir örneğini yazdım. Programı çağırırken verilen argümanlara göre işlem yapıyor. Yani komut satırında program topla 3 5 denince sonucu 8 olarak veriyor. Şu anlık integerlarla çalışıyor, floatlara uyarladığımda onu da buraya eklerim. Kod:

C ile Matris Tanımlanması ve Çarpımı

Bu yazıda vereceğim kod kullanıcıdan iki matris için önce boyutlarını alıyor, sonra onlara göre birer dizi oluşturup kullanıcıdan matris elemanlarını alıyor. En son da matrisleri çarpıp sonucu yine bir matris şeklinde ekrana yazdırıyor. Bir arkadaşım yazabilir miyiz demişken oturdum, kodu temizleme/kısaltma üzerinde çalışmadığım için fazla gereksiz yerler görebilirsiniz. Mesela dizileri bir fonksiyona nasıl göndereceğime pointer içerdiğini hatırladığım için şu anlık bakmadım, bu işlem kodu oldukça kısaltacağı gibi modülerliğini de artırırdı(modülerlik bir Python alışkanlığı). Daha fazla uzatmadan kodu koyayım, kısaltmak isterseniz en basidinden matrisleri ekrana yazdıran ve kullanıcıdan matris alan kısımları birer fonksiyona taşısanız önemli ölçüde rahatlayacaktır.

Kodlarla ilgili sıkıntınız olursa http://www.ufakseyleratolyesi.com/sorucevap/ adresinden sormaya çekinmeyin.

C ile Basit Hesap Makinesi

C ile dört işlemi yapan basit bir hesap makinesi yazmak istedim. Belki bir gün birilerinin işine yarar. İçerisinde farklılık olsun diye switch case(her ne kadar sevmiyor da olsam kullandım) ve birkaç fonksiyon kullandım. Kodlar aşağıda yer almakta. Ayrıca, ilgilenenler için ideone üzerinde de paylaştım.

Çalıştırırsanız göreceğiniz üzere kodun biraz düzenlenmesi daha kullanıcı dostu olmasını sağlayabilir. Şu anlık kullanılan yapılar işlevlerini iyi bir şekilde gerçekleştiriyor.

Switch – Case Örneği

Hazır el atmışken, amaçsız da olsa bir kod hazırlamış oldum. Onu da buraya ekleyeyim dedim. 1 veya 2 girildiğinde oralardaki mesajı, bunların dışında bir giriş yapılırsa da orda “default” ile belirtilen kısmı işler. Programın ekranda kalması için ekstra bir kod yazmadım zira cmdden çalıştırıyorum. Kodlara gelince:

 

Fonksiyon Tanımlama ve Sinüs Alma

C’de fonksiyon tanımlama ve bu fonksiyonla sinüs alma işlemi için ufak bir kod hazırladım. Şöyle ki:

Fonksiyonu main fonksiyonundan sonra tanımladım. Dolayısıyla öncesinde ne döndüreceği(ki burada float oluyor) ve sonrasında da aynı bilgileri tekrar vererek tanımlama yaptım. Daha sonra printf ile çıktıya hafiften şekil verip işlemi tamamladım. Döngü her döndüğünde ordaki değerin sinüsü hazırladığımız fonksiyona hesaplatıplıp ekrana yazdırıldı. Burda bir fonksiyon tanımlayıp sinüsü ona aldırmak gerekmiyordu elbet ancak fonksiyon alıştırması yapmış olduk. Bunun çok daha basit ve işlevsel bir hali için bakınız(Python ile yazılıdır): 1′den 360′a Kadar Tüm Sayıların Sinüs, Cosinüs, Tanjant ve Cotanjant Değerleri

Kodlar ise:

For döngüsünde aynı anda birden fazla değişken değiştirmek

Bloga koyduğum ilk programda, daha önce kodlarda gördüğüm ancak bugün uygulamaya geçirdiğim bir özellikten  bahsetmek istedim. İşleyişi şu şekilde gerçekleşiyor:

for(başlangıç;koşul;artış/azalış){}

yapısını kullanıyorduk. Şimdi biraz değişiklik yapıp, daha doğrusu ufak bir ekleme yapıp aynı anda birden fazla değişkeni artırma ya da azaltma işlemi yapacağız. Bu da yukarıdaki kodta artış/azalış olarak belirttiğimiz kısma yapacağımız eklemeler sayesinde gerçekleşecek. Virgül ile ayırarak istediğimiz kadar değişkenin döngü içerisinde değişmesini sağlayabiliriz. Mesela:

for(i = 1; i<101; i++, j–, ucuncusayi++){}

Yapı aslında oldukça basit. Yukarıda da söylediğim gibi aralara birer virgül atarak istediğimiz işlemleri yaptırabiliyoruz. Gerekli mi derseniz, döngünün içerisinde bunu zaten yapma şansımız var evet. Ancak kısa kod iyidir, en azından Python kültüründe bunu çok gördüm. C’de ne kadar kısa kod olabilir bilmem ama, umarım işe yarar. Son olarak da bununla ilgili yaptığım ufak bir örneği paylaşayım:

Yukarıdaki örnekle karşılaştırınca kodlar daha rahat anlaşılacaktır. Siteye henüz kodları renklendirecek bir eklenti yüklemediğimden dolayı şu anlık biraz çirkin gözükebilir. C derleyiciniz sanırım şu anlık o işi benim yerime yapacaktır.