5 Aralık 2016 Pazartesi
2.Kayıt ve Alan
Dosyalar kendi içinde kayıtlara bölünmüştür. Örneğin bir sınıftaki öğrenci listesini göz önüne alalım. Bu liste çok sayıda veri içerebilir. O halde, listenin ana bellekte tutulması söz konusu olamaz. Ana bellekte tutulduğu takdirde, bilgisayarın kapatılması durumunda bu bilgiler yok olacaktır. O halde bu verilerin kalıcı bir ortamda, örneğin sabit disk üzerinde yer alması gerekecektir. Disk üzerinde tutulan bu bilgiler, yeni öğrenci eklendiğinde büyüyecek veya çıkarıldığında küçülecektir. Ayrıca zaman zaman içeriği değişecektir. Bu listedeki her bir öğrenci bilgisi bir mantıksal kayıt oluşturur. Her kayıt da farklı bilgiler içerebilir. Örneğin; öğrencinin adı, baba adı, doğduğu yer vb. gibi bilgileri içerebilir. Sayılan bu bilgilerin her birine alan (field) adını veriyoruz.
1.Klasik Dosya Yapıları
Bilgisayarların ilk ortaya çıktığından bu yana hem donanım hem de yazılım alanında pek çok değişim ortaya çıkmıştır. Doğal olarak, bu değişim, kuruluşların ve kişilerin gereksinimlerine daha iyi cevap verebilmek amacıyla ortaya çıkmaktadır.
Bilişim teknolojilerindeki gelişme ile birlikte çoğu kuruluşta eskiye oranla çok daha fazla veri üretilmeye başlanmıştır. Söz konusu veriler, kuruluşların normal günlük işlemlerinde kullanıldığı gibi üst düzey karar vericiler tarafından da yoğun biçimde talep edilmektedir. Özellikle üst düzey yöneticilerin, yönetimsel anlamda doğru kararlar alabilmeleri için ham verilerden türemiş iyi bilgilere ihtiyacı vardır.
Kuruluşlar kendi bünyesindeki tüm verileri bilgisayar ortamına aktarmaya başladıklarından, bunun sonucu olarak geleneksel veri saklama ve işleme tekniklerinin artık yetersiz kaldığı gözlemlenmiştir. Bu noktada veritabanı kavramı devreye girmiştir. Veri, bir veritabanında depolandığında etkin bir biçimde yönetilmektedir. Veritabanları, bilgisayar dosya sistemlerinden geliştirilmiştir. Bu noktada dosya sistemi özelliklerinin anlaşılması önemlidir. En basit anlamda veri, işlenmemiş ham bilgilerdir. Bilgi, verinin belli bir anlam ifade edecek şekilde düzenlenmiş halidir.
Hem donanım hem de yazılım alanında pek çok değişim ortaya çıkmıştır. Bu değişim, kuruluşların ve kişilerin gereksinimlerine daha iyi cevap verebilmek amacıyla ortaya çıkmaktadır.
Pek çok kuruluşta eskiye oranla çok daha fazla veri üretildiğinden, geleneksel veri saklama ve işleme tekniklerinin yetersiz kaldığı gözlemlenmiştir.
Veri saklama birimlerinde depolanan veri topluluklarına “dosya” (file) denir.
Kuruluşların muhasebe, satış, üretim, stok ve diğer tüm faaliyetlerinde üretilen veri hem güncel işlerin yürütülmesi hem de yöneticilere alacağı kararlarda destek sağlamak üzere, belirli yapılarda ayrı dosyalar biçiminde depolanabilir. Bu söylediğimiz geleneksel, yani klasik dosya sistemlerini kullanan kuruluşlar için geçerlidir. Veritabanı sistemlerinde ise veriler daha farklı biçimde, tablolar biçiminde tanımlanır.
Aşağıda basit bir klasik dosya sistemi görülmektedir.
Bilişim teknolojilerindeki gelişme ile birlikte çoğu kuruluşta eskiye oranla çok daha fazla veri üretilmeye başlanmıştır. Söz konusu veriler, kuruluşların normal günlük işlemlerinde kullanıldığı gibi üst düzey karar vericiler tarafından da yoğun biçimde talep edilmektedir. Özellikle üst düzey yöneticilerin, yönetimsel anlamda doğru kararlar alabilmeleri için ham verilerden türemiş iyi bilgilere ihtiyacı vardır.
Kuruluşlar kendi bünyesindeki tüm verileri bilgisayar ortamına aktarmaya başladıklarından, bunun sonucu olarak geleneksel veri saklama ve işleme tekniklerinin artık yetersiz kaldığı gözlemlenmiştir. Bu noktada veritabanı kavramı devreye girmiştir. Veri, bir veritabanında depolandığında etkin bir biçimde yönetilmektedir. Veritabanları, bilgisayar dosya sistemlerinden geliştirilmiştir. Bu noktada dosya sistemi özelliklerinin anlaşılması önemlidir. En basit anlamda veri, işlenmemiş ham bilgilerdir. Bilgi, verinin belli bir anlam ifade edecek şekilde düzenlenmiş halidir.
Hem donanım hem de yazılım alanında pek çok değişim ortaya çıkmıştır. Bu değişim, kuruluşların ve kişilerin gereksinimlerine daha iyi cevap verebilmek amacıyla ortaya çıkmaktadır.
Pek çok kuruluşta eskiye oranla çok daha fazla veri üretildiğinden, geleneksel veri saklama ve işleme tekniklerinin yetersiz kaldığı gözlemlenmiştir.
Veri saklama birimlerinde depolanan veri topluluklarına “dosya” (file) denir.
Kuruluşların muhasebe, satış, üretim, stok ve diğer tüm faaliyetlerinde üretilen veri hem güncel işlerin yürütülmesi hem de yöneticilere alacağı kararlarda destek sağlamak üzere, belirli yapılarda ayrı dosyalar biçiminde depolanabilir. Bu söylediğimiz geleneksel, yani klasik dosya sistemlerini kullanan kuruluşlar için geçerlidir. Veritabanı sistemlerinde ise veriler daha farklı biçimde, tablolar biçiminde tanımlanır.
Aşağıda basit bir klasik dosya sistemi görülmektedir.
28 Kasım 2016 Pazartesi
24 Kasım 2016 Perşembe
21 Kasım 2016 Pazartesi
Örnek-3: Komut Satırından Girilen 2 Sayının Toplamı
Ya da Windows işletim sistemi için DOS komutu satırına geçilir ve ilgili exe uygulaması bulunarak aşağıdaki gibi program çalıştırılabilir:
Örnek-2: n Tane Sayının En Küçüğünü Bulan Fonksiyon
Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve geriye değer olarak bu sayılardan en küçüğünü dönsün.
main() Fonksiyonuna Parametre Aktarımı
Ana programa yani main() fonksiyonuna parametre aktarımı, derlenmiş (çalıştırılabilir) bir program komut satırından (işletim sistemi ortamından) çalıştırılacağı zaman yapılır.
Parametre aktarımı, programın adı yazılıp bir boşluk bırakıldıktan hemen sonra yapılır.
Parametreler, komut satırından sayısal olarak girilse bile program içinde karakter topluluğu (string) olarak gelir.
Bu durumda, bu ifadeleri sayısal değerlere çeviren (atoi(), atol(), atof() gibi) fonksiyonlar kullanılır.
int main(arguman_sayısı, arguman_vektörü)
int arguman_sayısı;
char *arguman_vektörü[];
{
…..
if(arguman_sayısı < ...){
printf("Eksik parametre !\n");
exit(1);
}
if(arguman_sayısı > ...){
printf("Cok fazla parametre !\n");
exit(1);
}
.
... arguman_vektörü[0] ... /* 1. eleman program adı */
... arguman_vektörü[1] ... /* 2. eleman 1. parametre */
}
main() Fonksiyonuna Parametre Aktarımı
Ana programa yani main() fonksiyonuna parametre aktarımı, derlenmiş (çalıştırılabilir) bir program komut satırından (işletim sistemi ortamından) çalıştırılacağı zaman yapılır.
Parametre aktarımı, programın adı yazılıp bir boşluk bırakıldıktan hemen sonra yapılır.
Parametreler, komut satırından sayısal olarak girilse bile program içinde karakter topluluğu (string) olarak gelir.
Bu durumda, bu ifadeleri sayısal değerlere çeviren (atoi(), atol(), atof() gibi) fonksiyonlar kullanılır.
int main(arguman_sayısı, arguman_vektörü)
int arguman_sayısı;
char *arguman_vektörü[];
{
…..
if(arguman_sayısı < ...){
printf("Eksik parametre !\n");
exit(1);
}
if(arguman_sayısı > ...){
printf("Cok fazla parametre !\n");
exit(1);
}
.
... arguman_vektörü[0] ... /* 1. eleman program adı */
... arguman_vektörü[1] ... /* 2. eleman 1. parametre */
}
Örnek-1: n Tane Sayının Toplamı
Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve sonucunda bu sayıları toplasın.
Kaç sayı olacak? – 3 sayı? – 5 sayı ?
Normalde bu bilgi önemli mi?
Cevap: Evet
Ancak Esnek argümanlı fonksiyon ile argüman sayısı önemsiz hale gelecek.
Kaç sayı olacak? – 3 sayı? – 5 sayı ?
Normalde bu bilgi önemli mi?
Cevap: Evet
Ancak Esnek argümanlı fonksiyon ile argüman sayısı önemsiz hale gelecek.
Esnek Argümanlı Fonksiyonlar ve main() Fonksiyonuna Parametre Aktarımı
Aşağıdaki gibi üçüncü dereceden bir polinomu ele alalım:
P(x) = a + bx + cx2 + dx3
a, b, c, d katsayıları gerçel sayı sabitleridir.
x ise gerçel sayı türündeki bir değişkendir.
Bu polinomu temsil eden basit bir fonksiyonu nasıl tanımlarız?
P(x) = a + bx + cx2 + dx3
float p(float x, float a, float b, float c, float d)
{
float p = a + b*x + c*x*x + d*x*x*x;
return p;
}
Buna göre, x = 1.7'de,
P(x) = 1 - 2x
değerini hesaplamak için bu fonksiyon aşağıdaki gibi çağırılmalıdır:
sonuc = p(1.7, 1.0, -2.0, 0.0, 0.0);
Burada, kullanılmayan katsayılar için 0.0 değeri mutlaka fonksiyona geçirilmelidir.
Kullanılmayan argümanlar geçirilmeden de fonksiyonu çağırmak mümkündür.
C Programlama dili, kullanıcılarına argümanları esnek olarak geçirme imkanı verir.
Bunun anlamı, belli kurallar sağlandığında, p() fonksiyonunun aşağıdaki gibi çağrılabilmesidir:
/* x a b */
sonuc = p(1.7, 1.0, -2.0);
Esnek argümanlar için 2 temel kural vardır:
Esnek argüman kullanımı isteğe bağlıdır.
Esnek argümanları oluşturan küme ardışık olarak listeye eklenmelidir.
Bu türden argümanlar, aşağıdaki gibi, fonksiyonun parametre listesi kısmında ... (3 nokta) ile belirtilir.
double p(double x, int n, ...)
{
}
Esnek argümanlı fonksiyon tanımlaması yapabilmek için stdarg.h kütüphanesinde üç tane makro fonksiyon tanımlanmıştır.
P(x) = a + bx + cx2 + dx3
a, b, c, d katsayıları gerçel sayı sabitleridir.
x ise gerçel sayı türündeki bir değişkendir.
Bu polinomu temsil eden basit bir fonksiyonu nasıl tanımlarız?
P(x) = a + bx + cx2 + dx3
float p(float x, float a, float b, float c, float d)
{
float p = a + b*x + c*x*x + d*x*x*x;
return p;
}
Buna göre, x = 1.7'de,
P(x) = 1 - 2x
değerini hesaplamak için bu fonksiyon aşağıdaki gibi çağırılmalıdır:
sonuc = p(1.7, 1.0, -2.0, 0.0, 0.0);
Burada, kullanılmayan katsayılar için 0.0 değeri mutlaka fonksiyona geçirilmelidir.
Kullanılmayan argümanlar geçirilmeden de fonksiyonu çağırmak mümkündür.
C Programlama dili, kullanıcılarına argümanları esnek olarak geçirme imkanı verir.
Bunun anlamı, belli kurallar sağlandığında, p() fonksiyonunun aşağıdaki gibi çağrılabilmesidir:
/* x a b */
sonuc = p(1.7, 1.0, -2.0);
Esnek argümanlar için 2 temel kural vardır:
Esnek argüman kullanımı isteğe bağlıdır.
Esnek argümanları oluşturan küme ardışık olarak listeye eklenmelidir.
Bu türden argümanlar, aşağıdaki gibi, fonksiyonun parametre listesi kısmında ... (3 nokta) ile belirtilir.
double p(double x, int n, ...)
{
}
Esnek argümanlı fonksiyon tanımlaması yapabilmek için stdarg.h kütüphanesinde üç tane makro fonksiyon tanımlanmıştır.
İki Kelimeyi Birleştiren C Programı
Soru-3: Kullanıcı tarafından klavyeden girilen iki kelimeyi birleştiren bir C programı yazınız. İki kelimeyi birleştirmek için aşağıdaki fonksiyon prototipini dikkate alınız.
void KelimeBirlestir (char c1[], char c2[])
void KelimeBirlestir (char c1[], char c2[])
Kaydol:
Kayıtlar (Atom)