includeprogram.com
  • info@includeprogram.com
  • Odaklanmak, 1000 iyi fikre hayır diyebilmektir. (Steve Jobs)

C Programlama

Bilgisayar Nedir?

Bilgisayar Nedir?

Bilgisayarlar, hesaplamaları ve mantıksal kararlar vermeyi insanlardan milyonlarca hatta milyarlarca kez hızlı yapabilme yeteneğine sahip cihazlardır. Örneğin, bugünkü çoğu kişisel bilgisayar, saniyede milyonlarca toplama işlemini gerçekleştirebilir.

Devamını Oku
C Programlama Tarihçesi

C Programlama Tarihçesi

C, temelde iki eski dile dayanır : BCPL ve B. BCPL, 1967 yılında Martin Richards tarafından işletim sistemleri ve derleyiciler yazmak için geliştirilmiştir. Ken Thompson, BCPL çalışmalarının ardından kendi yarattığı dil olan B'yi geliştirmiştir ve B ile UNIX'in ilk versiyonları üzerinde, Bell Laboratuarlarında, DEC PDP-7 bilgisayarı ile çalışmıştır.

Devamını Oku
C ve C++ Programlama

C ve C++ Programlama

C++ programlama dili, C'nin, BELL laboratuarlarında Bjarne Stroustrup tarafından geliştirilmiş halidir. C++ , C'yi daha güçlü hale getiren bir çok özellik sunar ve daha önemlisi C++, nesneye yönelik programlama yeteneklerine sahiptir.

Devamını Oku
Bir Metni Yazdırmak

Bir Metni Yazdırmak

C'deki bazı özel yazım biçimleri eğer daha önceden C ile programlama yapmadıysanız size garip gelebilir. Ama zamanla bu özel yazım biçimlerine alışacaksınız. İsterseniz basit bir programla başlayalım. İlk örneğimiz, bir satırlık bir metni bilgisayarda yazdırmak ile ilgilidir.

Devamını Oku
C Aritmetik - Karşılaştırma - Hafıza Operatörleri

C Aritmetik - Karşılaştırma - Hafıza Operatörleri

Çoğu C programında aritmetik işlemler yapılır. Aşağıdaki grafikte aritmetik operatörlerin bir özetini bulacaksınız. Matematikte kullanılmayan bazı özel sembollerin kullanıldığında dikkat ediniz. * ( yıldız işareti ) çarpım için, % (yüzde işareti) mod almak için kullanılır. Matematikte a ile b'yi çarpmak istediğimizde, tek harften oluşan bu değişken isimlerini, yan yana ab biçiminde yazarız.

Devamını Oku
Algoritmalar

Algoritmalar

Sahte kodlar, yalnızca karakterlerden oluştuğu için programcı sahte kodları bir editör program sayesinde bilgisayara yazar. Bilgisayar, sahte kodlarla yazılmış programı ekranda gösterebilir ya da yazıcıdan çıktı olarak verebilir. Dikkatlice hazırlanmış sahte kodlar, C programına kolaylıkla çevrilebilir. Bunu yapmak için, çoğu durumda sahte kodlarla yazılmış ifadeleri C’deki biçimleriyle değiştirmek yeterlidir.

Devamını Oku
While Döngüsü

While Döngüsü

Sınıf ortalaması, notların toplamının sınıftaki öğrenci sayısına bölünmesiyle bulunur. Bu problemi bilgisayarda çözecek algoritma, bütün notların teker teker bilgisayara girilmesi, ortalama hesabının yapılması ve sonucun ekrana yazdırılması biçimindedir. Sahte kodları kullanalım ve yaptırılacak işleri listeleyip, onların hangi sırada kullanılacağını belirleyelim.

Devamını Oku
Yuvalı Kontrol Yapıları

Yuvalı Kontrol Yapıları

Şimdi başka bir problem üzerinde çalışalım. Algoritmamızı yine sahte kod ve yukarıdan aşağıya adımsal iyileştirmeyle oluşturacağız ve bu algoritmanın C kodunu yazacağız. Daha önceden kontrol yapılarının birbirleri üzerine (bir dizide) eklenebildiğini görmüştük. Şimdi ise C’de kontrol yapılarını, yapısal bir biçimde birleştirebilecek diğer yolu çalışacağız. Bu yola, bir kontrol yapısını diğeri içine yuvalamak denir.

Devamını Oku
Döngülerin Temelleri

Döngülerin Temelleri

Sayıcı kontrollü döngülerde, bir kontrol değişkeni tekrarların sayısını sayar. Kontrol değişkeni, emir grupları çalıştırıldıktan sonra arttırılır ( genellikle 1 arttırılır ).Kontrol değişkeni, doğru sayıda tekrarın yapıldığını gösterdiği anda döngü sona erer ve bilgisayar döngüden sonraki ilk ifadeyi çalıştırarak programa devam eder.

Devamını Oku
Switch ve Do-While Döngü Yapısı

Switch ve Do-While Döngü Yapısı

ilk önce parantez içindeki atama ( not = getchar ( ) ) çalıştırılır. getchar fonksiyonu (standart giriş/çıkış kütüphanesi içindedir), klavyeden bir karakter okur ve bu karakteri not tamsayı değişkeni içinde depolar. Karakterler genellikle char tipiyle saklanırlar. C’nin önemli özelliklerinden biri de karakterlerin, tamsayı veri tipi ile de saklanabilmelidir.

Devamını Oku
Fonksiyonlar ve Modüller

Fonksiyonlar ve Modüller

Gerçek problemleri çözen çoğu bilgisayar programları, ilk ünitelerde yazdıklarımızdan çok daha geniştir. Tecrübeler bu tür geniş programları yazmanın en iyi yolunun, küçük parçaları ya da her biri orijinal programdan daha kolay kullanılabilecek modülleri (daha önceden hazırlanmış program parçacıkları) birleştirmek olduğunu göstermiştir. Bu tekniğe, böl ve zaptet (divide&conquer) denir.

Devamını Oku
Header Dosyalar ve Depolama Sınıfları

Header Dosyalar ve Depolama Sınıfları

Her standart kütüphane, o kütüphanedeki her fonksiyonun prototiplerinin yer aldığı ve bu fonksiyonlar tarafından kullanılabilecek çeşitli veri tipleriyle, bazı sabitlerin bulunduğu bir öncü dosyaya sahiptir. Aşağıdaki şekilde, programlara dahil edilebilecek standart kütüphane öncü dosyaları alfabetik bir sırada listelenmiştir. Aşağıdaki resimde, açıklamalarda sıklıkla kullanılan makro terimi, ilerleyen yazılarımızda daha ayrıntılı bir biçimde tartışılmıştır.

Devamını Oku
Diziler (Array)

Diziler (Array)

Bir dizi, aynı isme ve aynı tipe sahip olmaları sebebiyle birbirleriyle ilişkili olan hafıza konumlarının bir grubudur. Bir dizinin içindeki bir elemanı ya da konumu belirtmek için o dizinin adını ve elemanın dizi içindeki pozisyonunu belirtmeliyiz. Şekil 6.1, c isminde bir tamsayı dizisi göstermektedir. Bu dizinin 12 elemanı vardır. Bu elemanlardan herhangi biri, dizinin ismi ve belirlenen elemanın pozisyonu köşeli parantez ( [ ] ) içinde belirtilerek çağrılabilir.

Devamını Oku
Dizileri Fonksiyonlara Geçirmek

Dizileri Fonksiyonlara Geçirmek

C, dizileri fonksiyonlara otomatik olarak referansa göre çağırma yöntemiyle geçirir ; çağrılan fonksiyonlar, çağırıcının orijinal dizilerindeki elemanların değerlerini değiştirebilir. Dizinin ismi, gerçekte dizinin ilk elemanının adresidir! Dizinin başlangıç adresi geçirildiğinden, çağrılan fonksiyon dizinin nerede tutulduğunu kesin olarak bilir.

Devamını Oku
Çok Boyutlu Diziler

Çok Boyutlu Diziler

C’de diziler çok boyutlu olabilir. Çok boyutlu dizilerin genel kullanımı, satırlar ve sütunlar biçiminde düzenlenmiş değerler içeren tabloları göstermektir. Bir tablo elemanını belirleyebilmek için iki belirteç kullanmalıyız: İlk belirteç (genellikle) elemanın satırını ve ikinci belirteç (genellikle) elemanın sütununu belirler. Belirli bir elemanı tanımlayabilmek için iki belirteç kullanan tablolar ya da diziler iki-boyutlu diziler olarak adlandırılır.

Devamını Oku
Göstericiler - Pointerlar

Göstericiler - Pointerlar

Göstericiler, değer olarak hafıza adreslerini içeren değişkenlerdir. Normalde bir değişken doğrudan kesin bir değeri içerir. Göstericiler ise kesin bir değeri tutan değişkenlerin adresini içerir. Bu bağlamda, bir değişken ismi bir değeri doğrudan belirlerken, göstericiler değeri dolaylı yoldan belirtir (Şekil 7.1). Bir değeri gösterici ile belirtmek dolaylama yapmak ( indirection ) olarak adlandırılır.

Devamını Oku
Fonksiyonları Referansa Göre Çağırmak

Fonksiyonları Referansa Göre Çağırmak

Bir fonksiyona argüman geçirmenin iki yolu vardır : değere göre ve referansa göre çağırma. C’de tüm fonksiyon çağrıları değere göre çağırma ile yapılır. Geçmiş yazılarımızda anlattığımız gibi return, çağrılan fonksiyondan çağırıcıya bir değer döndürmek için (ya da bir değer döndürmeden çağrılan fonksiyondan kontrolü geri almak için) kullanılabilir.

Devamını Oku
Kabarcık Sıralaması

Kabarcık Sıralaması

kabarciksiralama fonksiyonu diziyi sıralamaktadır ve dizi elemanlarını (dizi [ j ] ve dizi [ j+1 ] ) değiştirmek için yerdegistir fonksiyonunu çağırmaktadır (bakınız Şekil 7.15). C’nin, fonksiyonlar arasında bilgi saklanmasını zorladığını hatırlayınız. Bu sebepten, yerdegistir fonksiyonu kabarciksiralama içindeki dizi elemanlarına erişim hakkına sahip değildir. kabarciksiralama fonksiyonu, yerdegistir fonksiyonunun yerleri değiştirilecek dizi elemanlarına erişmesini istediğinden, değiştirilecek elemanları referansa göre çağırma kullanarak yerdegistir fonksiyonuna geçirir.

Devamını Oku
Pointer İfadeleri ve Pointer Aritmetiği

Pointer İfadeleri ve Pointer Aritmetiği

Göstericiler aritmetik ifadelerde, atama ifadelerinde ve karşılaştırma ifadelerinde geçerli operandlardır. Ancak, bu ifadelerde normalde kullanılabilen operatörlerin bir kısmı göstericilerle birlikte kullanılamaz. Bu kısım, göstericileri operand olarak kullanan operatörleri ve bu operatörlerin nasıl kullanılacağını açıklamaktadır.

Devamını Oku
Pointer ve Diziler Arasındaki İlişki

Pointer ve Diziler Arasındaki İlişki

Diziler ve göstericiler, C’de özel bir biçimde ilişkilidirler ve birbirleri yerine hemen hemen her yerde kullanılabilirler. Bir dizi ismi, sabit bir gösterici olarak düşünülebilir. Göstericiler, dizilerin belirteçlerle gösterimi de dahil olmak üzere her işlemde kullanılabilir.

Devamını Oku
Pointer Dizileri

Pointer Dizileri

Diziler göstericiler içerebilir. Bu tipte veri yapılarının genel kullanımı, stringlerden oluşan bir dizi oluşturmaktır. Bu tür dizilere string dizileri denir. Dizideki her girdi bir stringtir, ancak C’de bir string, gerçekte ilk karakterini gösteren bir göstericidir. Bu yüzden, string dizilerindeki her girdi, aslında stringin ilk karakterini gösteren bir göstericidir.

Devamını Oku
Fonksiyonları Gösteren Pointerlar

Fonksiyonları Gösteren Pointerlar

Bir fonksiyonu gösteren gösterici, fonksiyonun hafızadaki adresini tutar. 6.ünitede, dizi isminin, gerçekte dizinin ilk elemanının hafızadaki adresi olduğunu görmüştük. Benzer olarak, bir fonksiyon ismi, fonksiyonun görevini yapan kodun hafızadaki başlangıç adresidir. Fonksiyonları gösteren göstericiler, fonksiyonlara geçirilebilir, fonksiyonlardan geri döndürülebilir ve fonksiyonları gösteren diğer göstericilere atanabilir.

Devamını Oku
String ve Karakterlerin Temelleri

String ve Karakterlerin Temelleri

Karakterler, kaynak programları oluşturan blokların temelidir. Her program, anlamlı olarak gruplandığında, bilgisayar tarafından yerine getirilecek komutlar olarak algılanan karakter dizilerinden oluşur. Bir program, karakter sabitleri içerebilir. Bir karakter sabiti, tek tırnak içinde gösterilen bir int değeridir. Karakter sabitinin değeri, karakterin makinenin karakter seti içindeki tamsayı değeridir.

Devamını Oku
Standart Giriş - Çıkış Fonsiyonları

Standart Giriş - Çıkış Fonsiyonları

Gets ve putchar fonksiyonlarını kullanarak, standart giriş biriminden ( klavye) bir metnin bir satırını okuyup daha sonra da satırdaki karakterleri yineleme kullanarak ters bir sırada yazdırmaktadır. gets, standart giriş biriminden yeni satır ya da dosya sonu belirteciyle karşılaşıncaya kadar aldığı karakterleri argümanına (char tipinde bir dizi) okur. Okuma sona erdiğinde, dizinin sonuna null karakter (‘\0’) eklenir. putchar fonksiyonu, argümanı olan karakteri yazdırır.

Devamını Oku
String Kütüphanesindeki String İşleme Fonksiyonları

String Kütüphanesindeki String İşleme Fonksiyonları

String kütüphanesi, string verilerini ele almak, stringleri karşılaştırmak, stringlerde karakterler ya da başka stringler aramak, stringleri atomlara (stringi mantıklı parçalara bölmek) ayırmak ve stringlerin uzunluğuna karar vermek gibi bir çok kullanışlı fonksiyon sunar. Bu kısım, string kütüphanesindeki string işleme fonksiyonlarını ele almaktadır. Fonksiyonlar, Şekil 8.17’de özetlenmiştir. Her fonksiyon (strncpy hariç) , sonucunun sonuna null karakter ekler.

Devamını Oku
String Kütüphanesindeki Arama Fonsiyonları

String Kütüphanesindeki Arama Fonsiyonları

Strbrk fonksiyonu, ikinci argümanındaki stringte yer alan herhangi bir karakterin ilk argümanındaki stringte ilk konumunu arar. Eğer ikinci argümandaki karakter bulunursa, strbrk ilk argümandaki karakteri gösteren bir gösterici döndürür.Aksi takdirde, strbrk fonksiyonu NULL döndürür. Şekil 8.25, string2 içindeki herhangi bir karakterin string1 içindeki ilk konumunu belirlemektedir.

Devamını Oku
String Kütüphanesindeki Hafıza Fonksiyonları

String Kütüphanesindeki Hafıza Fonksiyonları

Bu kısımda tanıtılan string kütüphanesi fonksiyonları, hafıza bloklarını kullanma, karşılaştırma ve arama işlemlerini gerçekleştirmektedir. Fonksiyonlar, hafıza bloklarına karakter dizileri olarak davranmakta ve böylece veri bloklarını yönetebilmektedir. Şekil 8.30, string kütüphanesindeki hafıza fonksiyonlarını özetlemektedir. Fonksiyon tanımlarındaki “nesne” veri bloğu anlamına gelmektedir.

Devamını Oku
Akışlar (Stream)

Akışlar (Stream)

Tüm giriş ve çıkış, akışlar ( satırları oluşturmak için organize edilmiş karakter dizileri) ile yapılır. Her satır, 0 ya da daha fazla karakter içerir ve yeni satır karakteriyle sonlanır. C standardı, C uygulamalarının sonlandırıcı yeni satır karakteri dahil olmak üzere en az 254 karakterlik satırları desteklemesi gerektiğini belirtmiştir.

Devamını Oku
Diğer Dönüşüm Belirteçleri

Diğer Dönüşüm Belirteçleri

n dönüşüm belirteci, o andaki printf ifadesinde yazdırılan karakter sayısını tutar. İlgili argüman olarak, değerin tutulduğu tamsayı değişkenini gösteren bir gösterici alır. %n dönüşüm belirteci ile hiçbir şey yazdırılmaz. % dönüşüm belirteci, yüzde işaretini yazdırmak için kullanılır.

Devamını Oku
Çıkış Dizilerini ve Hazır Bilgileri Yazdırmak

Çıkış Dizilerini ve Hazır Bilgileri Yazdırmak

Bir printf ifadesi içinde yazdırılacak çoğu bilgi karakteri, biçim kontrol dizesi içinde bulunabilir. Buna rağmen biçim kontrol dizesini sınırlandıran tırnak işareti gibi (“) sorunlu bazı karakterler vardır. Yeni satır ve tab gibi çeşitli kontrol karakterleri, çıkış sıraları ile temsil edilmelidir. Bir çıkış sırası ters çizgi işaretinden ( \ ) sonra, bir çıkış karakteri ile oluşturulur.

Devamını Oku
Yapı (Struct) Tanımlamaları

Yapı (Struct) Tanımlamaları

Struct anahtar kelimesi yapı tanımını başlatır. kart tanıtıcısı yapı etiketidir (structure tag). Yapı etiketleri, yapı tanımına isim verir ve struct anahtar kelimesiyle kullanılarak yapı tipinde değişkenler bildirir. Bu örnekte, yapı tipi struct kart’tır. Yapı tanımında parantezler içinde bildirilen değişkenler yapı elemanlarıdır. Aynı yapının elemanları, kendilerine özel isimlere sahip olmalıdır ancak farklı iki yapı aynı isimde elemanlar içerebilir.

Devamını Oku
Yapılara (Struct) İlk Değer Atamak

Yapılara (Struct) İlk Değer Atamak

Yapı elemanlarına ulaşmak için iki operatör kullanılır: Yapı elemanı operatörü (.) (aynı zamanda nokta operatörü olarak da bilinir) ve yapı gösterici operatörü ( ->) (aynı zamanda ok operatörü olarak da adlandırılır) Yapı elemanı operatörü, yapı elemanına yapı değişkeninin ismini kullanarak erişir.

Devamını Oku
Bit Operatörleri

Bit Operatörleri

Bilgisayarın içinde tüm veriler bitlerle temsil edilir. Her bit yalnızca 0 ya da 1 değerini alabilir. Çoğu sistemde 8 bit bir byte’ı oluşturur. Byte, char tipi için standart depolama birimidir. Diğer veri tipleri daha büyük sayıda byte’lar içinde saklanır. Bit operatörleri operandlarının (char, int ve long, hem signed hem de unsigned ) bitlerini yönetmek için kullanılır. Bit operatörleriyle genellikle işaretsiz tamsayılar ( unsigned int ) kullanılır.

Devamını Oku
Bit Alanları

Bit Alanları

C, bir birliğin ya da yapının unsigned ya da int elemanlarının kaç bit içinde ( bit alanı olarak bilinir) depolanacağını belirlememize imkan tanır. Bit alanları, verileri gerekli en az sayıda bit içinde tutarak daha iyi bir hafıza kullanımı sağlar. Bit alanları int ya da unsigned olarak bildirilir.

Devamını Oku
Veri Hiyerarşisi

Veri Hiyerarşisi

Sonuçta, bilgisayar tarafından işlenen tüm veriler, sıfır ve birlerin kombinasyonlarına indirgenirler. Bunun sebebi, iki kararlı durum içeren elektronik cihazları üretmenin basit ve ekonomik olmasıdır. İki kararlı durumdan biri 0’ı, diğeri ise 1’i temsil eder. Bilgisayarlar tarafından gerçekleştirilen etkileyici fonksiyonların yalnızca 1 ve 0’ların temel işlemlerini içermesi dikkate değer bir noktadır.

Devamını Oku
Rastgele Erişimli Dosyalar

Rastgele Erişimli Dosyalar

Daha önceden belirttiğimiz gibi, biçimlendirilmiş çıktı fonksiyonu fprintf ile oluşturulan kayıtlar aynı uzunlukta olmak zorunda değildir. Ancak, rasgele erişimli bir dosyadaki tüm kayıtlar sabit uzunluğa sahiptirler ve diğer kayıtların aranmasına gerek kalmadan doğrudan (ve bu sebepten hızlıca) erişilebilirler. Bu, uçuş rezervasyon sistemleri, banka sistemleri, satış noktası sistemleri ve diğer evrak işleme sistemleri gibi veriye hızlı erişim gerektiren sistemler için rasgele erişimli dosyaları uygun yapar.

Devamını Oku