27.Kasım.2016 itibari ile.
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[])
Bir Sayının Üssünü Hesaplayan C Programı
Soru-2:Aşağıdaki fonksiyon prototipini kullanarak bir sayının üssünü hesaplayan C programını yazınız. Sayının kendisi ve üssü klavyeden girilecektir.
int us (int sayi, int ussu)
int us (int sayi, int ussu)
Tavsiyeler
Birden fazla fonksiyon kullanılan programlarda, main fonksiyonu programın esas görevini yerine getiren fonksiyonların çağırıcısı olarak kullanılmalıdır.
Her fonksiyon, iyi olarak tanımlanmış tek bir işi yapacak şekilde sınırlandırılmalıdır ve fonksiyon ismi, fonksiyonun görevini etkili bir biçimde açıklamalıdır. Bu, özetlemeyi ve yazılımın yeniden kullanılabilirliğini sağlatır.
Eğer fonksiyonun görevini açıklayacak etkili bir isim bulamıyorsanız muhtemelen yazdığınız fonksiyon birden fazla görevi yerine getirmeye çalışmaktadır. Bu tarzda fonksiyonları daha küçük fonksiyonlara bölmek en iyi yoldur.
Bir fonksiyon genellikle bir sayfadan daha uzun olmamalıdır. Küçük fonksiyonlar yazılımın yeniden kullanılabilmesini sağlatır.
Programlar, küçük fonksiyonların bir araya getirilmesiyle yazılmalıdır. Bu, programların daha kolay yazılması, değiştirilmesi ve hatalarının giderilmesini sağlar.
Çok fazla sayıda parametreye ihtiyaç duyan fonksiyonlar birden fazla görevi yerine getiriyor olabilir. Böyle fonksiyonları ayrı görevleri gerçekleştiren daha küçük fonksiyonlara bölmek gerekir. Fonksiyonun başlığı mümkünse bir satıra sığmalıdır.
Her fonksiyon, iyi olarak tanımlanmış tek bir işi yapacak şekilde sınırlandırılmalıdır ve fonksiyon ismi, fonksiyonun görevini etkili bir biçimde açıklamalıdır. Bu, özetlemeyi ve yazılımın yeniden kullanılabilirliğini sağlatır.
Eğer fonksiyonun görevini açıklayacak etkili bir isim bulamıyorsanız muhtemelen yazdığınız fonksiyon birden fazla görevi yerine getirmeye çalışmaktadır. Bu tarzda fonksiyonları daha küçük fonksiyonlara bölmek en iyi yoldur.
Bir fonksiyon genellikle bir sayfadan daha uzun olmamalıdır. Küçük fonksiyonlar yazılımın yeniden kullanılabilmesini sağlatır.
Programlar, küçük fonksiyonların bir araya getirilmesiyle yazılmalıdır. Bu, programların daha kolay yazılması, değiştirilmesi ve hatalarının giderilmesini sağlar.
Çok fazla sayıda parametreye ihtiyaç duyan fonksiyonlar birden fazla görevi yerine getiriyor olabilir. Böyle fonksiyonları ayrı görevleri gerçekleştiren daha küçük fonksiyonlara bölmek gerekir. Fonksiyonun başlığı mümkünse bir satıra sığmalıdır.
Dizilerin Fonksiyonlarda Kullanılması
Diziler de sıradan değişkenler gibi bir fonksiyona parametre olarak aktarılabilirler.
Fakat, aktarma kuralı biraz farklıdır.
Her zaman dizinin yanında
boyutunun da bilinmesi gereklidir !!!
Fakat, aktarma kuralı biraz farklıdır.
Her zaman dizinin yanında
boyutunun da bilinmesi gereklidir !!!
Yineleme mi Tekrar mı?
Tekrar ve yinelemenin ikisi de döngü içerir.
Tekrar özellikle döngü yapısını kullanırken, yineleme döngüyü fonksiyon çağrılarının tekrarında kullanır.
Tekrar ve yinelemenin ikisi de bir sonlandırma testi içerirler.
Yineleme temel bir durumla karşılaşıldığında, tekrar ise döngü devam koşulu yanlış hale geldiğinde sona erer.
Yineleme bir çok negatif özelliğe sahiptir.
Yineleme, mekanizmayı sürekli çağırarak fonksiyon çağrılarının artmasına sebep olur. Bu, işlemci zamanı ve hafızada fazladan yük demektir.
Her yineleme çağrısı, fonksiyonun başka bir kopyasının oluşmasına sebep olur, bu da hafızayı fazladan işgal etmek demektir.
Tekrar, fonksiyonların sürekli olarak çağrılması ve fazladan hafıza kullanılması engellenir.
Yinelemeli olarak çözülen her problem tekrarlı bir biçimde çözülebilir. Yineleme yaklaşımı genelde problemi daha iyi yansıttığı ve daha kolay anlaşılan ve hataları kolay ayıklanan programlar yazılmasını sağlattığı için, tekrar yaklaşımına göre tercih edilebilir.
Yinelemeli çözümleri seçmenin başka bir sebebi de tekrarlı çözümün kolaylıkla bulunamayışıdır.
Tekrar özellikle döngü yapısını kullanırken, yineleme döngüyü fonksiyon çağrılarının tekrarında kullanır.
Tekrar ve yinelemenin ikisi de bir sonlandırma testi içerirler.
Yineleme temel bir durumla karşılaşıldığında, tekrar ise döngü devam koşulu yanlış hale geldiğinde sona erer.
Yineleme bir çok negatif özelliğe sahiptir.
Yineleme, mekanizmayı sürekli çağırarak fonksiyon çağrılarının artmasına sebep olur. Bu, işlemci zamanı ve hafızada fazladan yük demektir.
Her yineleme çağrısı, fonksiyonun başka bir kopyasının oluşmasına sebep olur, bu da hafızayı fazladan işgal etmek demektir.
Tekrar, fonksiyonların sürekli olarak çağrılması ve fazladan hafıza kullanılması engellenir.
Yinelemeli olarak çözülen her problem tekrarlı bir biçimde çözülebilir. Yineleme yaklaşımı genelde problemi daha iyi yansıttığı ve daha kolay anlaşılan ve hataları kolay ayıklanan programlar yazılmasını sağlattığı için, tekrar yaklaşımına göre tercih edilebilir.
Yinelemeli çözümleri seçmenin başka bir sebebi de tekrarlı çözümün kolaylıkla bulunamayışıdır.
Fonksiyonların Yinelemesi – Kendi Kendilerini Çağırması (Recursive Function)
Bazı problem tipleri için fonksiyonların kendi kendilerini çağırması kullanışlı olabilir.
Bir yineleme fonksiyonu (recursive function), kendi kendini doğrudan ya da bir başka fonksiyon içinden çağıran fonksiyondur.
Yineleme fonksiyonu, bir problemi çözmek için çağrılır.
Bu fonksiyon, yalnızca en basit durumu ya da temel durum olarak adlandırılan durumu nasıl çözeceğini bilmektedir.
Eğer fonksiyon temel bir durumla çağrılırsa, fonksiyon bir sonuç geri döndürür.
Yinelemeyi mümkün kılmak için sonraki parça orijinal probleme benzemelidir, fakat orijinal problemin daha basit ya da daha küçük bir versiyonu olmalıdır.
Yineleme için verilebilecek en güzel örnek popüler bir matematik konusu olan Negatif olmayan bir n tamsayısının faktöriyelinin hesaplanmasıdır.
Örnek:
5!=5*4*3*2*1
5!=5*(4*3*2*1)
5!=5*(4!)
Bir yineleme fonksiyonu (recursive function), kendi kendini doğrudan ya da bir başka fonksiyon içinden çağıran fonksiyondur.
Yineleme fonksiyonu, bir problemi çözmek için çağrılır.
Bu fonksiyon, yalnızca en basit durumu ya da temel durum olarak adlandırılan durumu nasıl çözeceğini bilmektedir.
Eğer fonksiyon temel bir durumla çağrılırsa, fonksiyon bir sonuç geri döndürür.
Yinelemeyi mümkün kılmak için sonraki parça orijinal probleme benzemelidir, fakat orijinal problemin daha basit ya da daha küçük bir versiyonu olmalıdır.
Yineleme için verilebilecek en güzel örnek popüler bir matematik konusu olan Negatif olmayan bir n tamsayısının faktöriyelinin hesaplanmasıdır.
Örnek:
5!=5*4*3*2*1
5!=5*(4*3*2*1)
5!=5*(4!)
Fonksiyon Kullanım Hataları
Fonksiyon tanımlamalarında geri dönüş değerini unutmak.
Geri dönüş tipi void olarak bildirilmiş bir fonksiyonun bir değer geri döndürmesi bir yazım hatasıdır.
Aynı tipte fonksiyon parametrelerini double x, double y yerine double x, y olarak bildirmek. double x, y biçiminde parametre bildirmek, y parametresinin tipinin int olmasına sebep olur. Çünkü belirtilmeyen parametre tipi otomatik olarak int tipinde varsayılır.
Parametre listesini yazdığımız parantezlerin dışına noktalı virgül koymak yazım hatasıdır.
Bir fonksiyon parametresini daha sonradan fonksiyon içinde yerel bir değişken olarak kullanmak bir yazım hatasıdır.
Bir fonksiyon içinde başka bir fonksiyon tanımlamak yazım hatasıdır.
Fonksiyon prototipinin sonuna noktalı virgül koymamak bir yazım hatasıdır.
Geri dönüş tipi void olarak bildirilmiş bir fonksiyonun bir değer geri döndürmesi bir yazım hatasıdır.
Aynı tipte fonksiyon parametrelerini double x, double y yerine double x, y olarak bildirmek. double x, y biçiminde parametre bildirmek, y parametresinin tipinin int olmasına sebep olur. Çünkü belirtilmeyen parametre tipi otomatik olarak int tipinde varsayılır.
Parametre listesini yazdığımız parantezlerin dışına noktalı virgül koymak yazım hatasıdır.
Bir fonksiyon parametresini daha sonradan fonksiyon içinde yerel bir değişken olarak kullanmak bir yazım hatasıdır.
Bir fonksiyon içinde başka bir fonksiyon tanımlamak yazım hatasıdır.
Fonksiyon prototipinin sonuna noktalı virgül koymamak bir yazım hatasıdır.
void Fonksiyonlar
Bir fonksiyonun her zaman geri dönüş değerinin olması gerekmez.
Bu durumda return deyimi kullanılmayabilir. Eğer bu anahtar kelime yoksa, fonksiyon ana bloğu bitince kendiliğinden sonlanır.
Böyle fonksiyonların tipi void (boş, hükümsüz) olarak belirtilmelidir.
Bu tip fonksiyonlar başka bir yerde kullanılırken, herhangi bir değişkene atanması söz konusu değildir, çünkü geri dönüş değeri yoktur. Ancak, void fonksiyonlara parametre aktarımı yapmak mümkündür.
Bu durumda return deyimi kullanılmayabilir. Eğer bu anahtar kelime yoksa, fonksiyon ana bloğu bitince kendiliğinden sonlanır.
Böyle fonksiyonların tipi void (boş, hükümsüz) olarak belirtilmelidir.
Bu tip fonksiyonlar başka bir yerde kullanılırken, herhangi bir değişkene atanması söz konusu değildir, çünkü geri dönüş değeri yoktur. Ancak, void fonksiyonlara parametre aktarımı yapmak mümkündür.
Fonksiyon Prototip Kullanımı
Bir fonksiyon prototipi, derleyiciye fonksiyon tarafından döndürülen verinin tipini, fonksiyonun almayı beklediği parametre sayısını, parametrelerin tiplerini ve parametrelerin sırasını bildirir.
Derleyici, fonksiyonların ilk hallerini (prototiplerini) fonksiyon çağrılarını onaylamakta kullanır.
Fonksiyon prototipinin unutulması, fonksiyonun geri dönüş tipinin int olmadığı durumda ve fonksiyon tanımı fonksiyon çağrısından daha sonra bulunmuyorsa, yazım hatalarına (syntax error) sebep olur.
Derleyici, fonksiyonların ilk hallerini (prototiplerini) fonksiyon çağrılarını onaylamakta kullanır.
Fonksiyon prototipinin unutulması, fonksiyonun geri dönüş tipinin int olmadığı durumda ve fonksiyon tanımı fonksiyon çağrısından daha sonra bulunmuyorsa, yazım hatalarına (syntax error) sebep olur.
Fonksiyon Geri Dönüş Değerleri
Fonksiyon geri dönüş değeri return anahtar sözcüğü kullanılarak gerçekleştirilir.
return anahtar sözcüğünün iki önemli işlevi vardır:
fonksiyonun geri dönüş değerini oluşturur.
fonksiyonu sonlandırır.
return deyiminden sonra bir değişken, işlem, sabit veya başka bir fonksiyon yazılabilir.
Örnekler:
return (a+b/c); /* parantez kullanmak zorunlu değil */
return 10; /* değişken kullanmak mecbur değil */
return topla(a, b)/2.0; /* önce topla fonksiyonu çalışır */
Programın çözüm mantığına göre bir fonksiyon içerisinde birden çok geri dönüş değeri kullanılabilir.
Fakat, ilk karşılaşılan return deyiminden sonra fonksiyon sonlanır ve çağrılan yere bu değer gönderilir.
return anahtar sözcüğünün iki önemli işlevi vardır:
fonksiyonun geri dönüş değerini oluşturur.
fonksiyonu sonlandırır.
return deyiminden sonra bir değişken, işlem, sabit veya başka bir fonksiyon yazılabilir.
Örnekler:
return (a+b/c); /* parantez kullanmak zorunlu değil */
return 10; /* değişken kullanmak mecbur değil */
return topla(a, b)/2.0; /* önce topla fonksiyonu çalışır */
Programın çözüm mantığına göre bir fonksiyon içerisinde birden çok geri dönüş değeri kullanılabilir.
Fakat, ilk karşılaşılan return deyiminden sonra fonksiyon sonlanır ve çağrılan yere bu değer gönderilir.
Parametre ve Argüman
Fonksiyon çağrılırken gönderilen değerlere Argüman denir.
Fonksiyon bildiriminde, fonksiyona girdi olarak, kullanılan değişkenlere Parametre denir.
Fonksiyon bildiriminde, fonksiyona girdi olarak, kullanılan değişkenlere Parametre denir.
18 Kasım 2016 Cuma
14 Kasım 2016 Pazartesi
Soru-3: Girilen Bir Cümlenin Kelimelerinin Baş Harflerini Büyük Harf Yapma
100 elemanlı bir karakter dizisi tanımlayınız. Daha sonra bir cümle giriniz.
Cümledeki tüm kelimelerin baş harflerini büyük harfe çeviriniz. Büyük harfe çevirme için toupper() fonksiyonu kullanılacaktır.
Çeviride Türkçe karakterler desteklenmeyecektir.
Son olarak cümlenin çevrilmiş halini ekrana yazdırınız.
Cümledeki tüm kelimelerin baş harflerini büyük harfe çeviriniz. Büyük harfe çevirme için toupper() fonksiyonu kullanılacaktır.
Çeviride Türkçe karakterler desteklenmeyecektir.
Son olarak cümlenin çevrilmiş halini ekrana yazdırınız.
Soru-2: Girilen Cümlede Harf Arama ve Yerini Bulma
100 elemanlı bir karakter dizisi tanımlayınız. Daha sonra bir cümle giriniz.
Cümlede aranmak üzere bir harf giriniz.
Cümlede harfi bulursanız, bulduğunuz yerlerin pozisyonlarını farklı bir diziye aktarınız.
Toplam bulunan harf sayısını ve harflerin pozisyonlarını ekrana yazdırınız.
Cümlede aranmak üzere bir harf giriniz.
Cümlede harfi bulursanız, bulduğunuz yerlerin pozisyonlarını farklı bir diziye aktarınız.
Toplam bulunan harf sayısını ve harflerin pozisyonlarını ekrana yazdırınız.
Soru-1: Girilen Cümleyi Tersten Yazdırma
100 elemanlı bir karakter dizisi tanımlayınız.
Daha sonra bir cümle giriniz.
Cümleyi ekrana ters olarak yazdırınız.
İsterseniz farklı bir diziye aktarabilirsiniz veya direk yazdırabilirsiniz.
strrev() fonksiyonunu kullanmayınız.
Örnek-1: Karakter Dizisi Okuma ve Yazma
Maksimum 50 karakter okuyabilecek bir karakter dizisi tanımlayın.
Klavyeden karakter dizisini okuyun ve ekrana karakterleri yazdırın.
Tek tek karakterleri yazdırın
Tüm metni tek seferde yazdırın
Klavyeden karakter dizisini okuyun ve ekrana karakterleri yazdırın.
Tek tek karakterleri yazdırın
Tüm metni tek seferde yazdırın
A ve B matrislerinin değerlerini kullanıcı klavyeden girecektir
2x2 olarak tanımlanmış A ve B matrislerinin değerlerini kullanıcı klavyeden girecektir. A ve B matrislerinde yer alan değerleri toplayarak sonucu bir C matrisinde ekrana görüntüleyecek C programını yazınız.
2x2’lik bir matris tanımlayınız.
2x2’lik bir matris tanımlayınız. Matris değerleri kullanıcı tarafından girilecektir. Bu matrisin determinantını hesaplayıp; singüler matris ise tersi olmadığını, regüler matris ise aşağıdaki işlemi yapacak ve girilen matrisin tersi olarak sonucu ekrana yazdıracak C programını yazınız.
Singüler Matris : En pratik yöntemi ile determinantı sıfır olan matristir. Singüler Matrisler tekildir, tersi yoktur.
X=[2,4, 4,8] şeklinde bir matris olsun. Bu matrisin determinantını hesaplamak istediğimizde 2.8 – 4.4 = 0 çıkacağından X matrisi singüler bir matristir, tekildir yani tersi yoktur.
Regüler Matris: Determinantı sıfırdan farklı olan matrisler, regüler matrislerdir ve tersi mevcuttur.
Y=[1,5, 3,2] şeklinde bir matris olsun. Bu matrisin determinantını hesaplamak istediğimizde 1.2 – 3.5 = -13 çıkacağından Y matrisi regüler bir matristir ve tersi mevcuttur.
Singüler Matris : En pratik yöntemi ile determinantı sıfır olan matristir. Singüler Matrisler tekildir, tersi yoktur.
X=[2,4, 4,8] şeklinde bir matris olsun. Bu matrisin determinantını hesaplamak istediğimizde 2.8 – 4.4 = 0 çıkacağından X matrisi singüler bir matristir, tekildir yani tersi yoktur.
Regüler Matris: Determinantı sıfırdan farklı olan matrisler, regüler matrislerdir ve tersi mevcuttur.
Y=[1,5, 3,2] şeklinde bir matris olsun. Bu matrisin determinantını hesaplamak istediğimizde 1.2 – 3.5 = -13 çıkacağından Y matrisi regüler bir matristir ve tersi mevcuttur.
İki Matrisin Çarpımı
Göz önünde bulundurulması gereken en önemli koşul, çarpımı yapılacak birinci matrisin sütun sayısının ikinci matrisin satır sayısına eşit olması gerektiğidir.
Örnek-3: Öğrenci Not Girişi ve Hesaplama
3 öğrencinin 3 adet sınav notu bilgisi klavyeden girilecektir.
Öğrenciler için 2 boyutlu bir dizi tanımlamalısınız ve not girişlerini for döngüsünde yapmalısınız.
ogrNotlar [3][3]
Notların girişi tamamlandıktan sonra:
Ekran Çıktısı-1: 1.öğrencinin 1.sınav notu ile 2.öğrencinin 2.sınav notu ve 3.öğrencinin 3.sınav notunu toplayarak ekranda gösteriniz.
Ekran Çıktısı-2: Her sınav için ağırlıklı not ortalamasını bulunuz ve ekrana yazdırınız. for döngüsü kullanınız.
Öğrenciler için 2 boyutlu bir dizi tanımlamalısınız ve not girişlerini for döngüsünde yapmalısınız.
ogrNotlar [3][3]
Notların girişi tamamlandıktan sonra:
Ekran Çıktısı-1: 1.öğrencinin 1.sınav notu ile 2.öğrencinin 2.sınav notu ve 3.öğrencinin 3.sınav notunu toplayarak ekranda gösteriniz.
Ekran Çıktısı-2: Her sınav için ağırlıklı not ortalamasını bulunuz ve ekrana yazdırınız. for döngüsü kullanınız.
Birbirinden farklı 10 adet pozitif tamsayı içerisinden en büyük olan sayıyı bulmaya yarayan
Kullanıcı tarafından girilen birbirinden farklı 10 adet pozitif tamsayı içerisinden en büyük olan sayıyı bulmaya yarayan C programını yazınız.
"Tek", çift olanları "Cift" adlı bir diziye yazan ve bunları ayrı ayrı ekrana listeleyen C programını yazınız.
Klavyeden girilen pozitif bir N tamsayısına kadar olan sayılardan tek olanları "Tek", çift olanları "Cift" adlı bir diziye yazan ve bunları ayrı ayrı ekrana listeleyen C programını yazınız.
Diziden okuyan ve sayıların karelerini ekrana listeleyen
Klavyeden girilen pozitif bir N tamsayısına kadar olan sayıları bir diziye yazan ve diziden okuyarak sayıların karelerini ekrana listeleyen C programını yazınız.
N tamsayısına kadar olan sayıları bir diziye yazan
Klavyeden girilen pozitif bir N tamsayısına kadar olan sayıları bir diziye yazan ve diziden okuyarak ekrana listeleyen C programını yazınız.
Örnek-7: 3 Öğrenci Not Girişi ve Hesaplama
3 öğrencinin 3 adet sınav notu bilgisi klavyeden girilecektir.
Her öğrenci için tek boyutlu ayrı bir dizi tanımlamalısınız ve not girişlerini for döngüsünde yapmalısınız.
ogr1Not, ogr2Not, ogr3Not
Notların girişi tamamlandıktan sonra:
Ekran Çıktısı 1: 1.öğrencinin 1.sınav notu ile 2.öğrencinin 2.sınav notu ve 3.öğrencinin 3.sınav notunu toplayarak ekranda gösteriniz.
Ekran Çıktısı 2: Her sınav için ağırlıklı not ortalamasını bulunuz ve ekrana yazdırınız. for döngüsü kullanınız.
Her öğrenci için tek boyutlu ayrı bir dizi tanımlamalısınız ve not girişlerini for döngüsünde yapmalısınız.
ogr1Not, ogr2Not, ogr3Not
Notların girişi tamamlandıktan sonra:
Ekran Çıktısı 1: 1.öğrencinin 1.sınav notu ile 2.öğrencinin 2.sınav notu ve 3.öğrencinin 3.sınav notunu toplayarak ekranda gösteriniz.
Ekran Çıktısı 2: Her sınav için ağırlıklı not ortalamasını bulunuz ve ekrana yazdırınız. for döngüsü kullanınız.
Örnek-6: İkili Arama (Binary Search)
İkili arama, sıralı bir dizide, belirli değerin bulunmasına yönelik bir algoritmadır.
Bu teknikteki her bir adımda, aranan değerin, dizinin orta değerine eşit olup olmadığı kontrol edilir.
Eşit olmaması durumunda aranan değerin orta değer tarafından ikiye ayrılan kısımlardan hangisinde olduğu kontrol edilir.
Aranan değeri içeren kısım bir sonraki adımda arama yapılacak dizi olur ve bu sayede arama yapılan listedeki eleman sayısı her adımda yarıya indirilmiş olur.
Bu teknikteki her bir adımda, aranan değerin, dizinin orta değerine eşit olup olmadığı kontrol edilir.
Eşit olmaması durumunda aranan değerin orta değer tarafından ikiye ayrılan kısımlardan hangisinde olduğu kontrol edilir.
Aranan değeri içeren kısım bir sonraki adımda arama yapılacak dizi olur ve bu sayede arama yapılan listedeki eleman sayısı her adımda yarıya indirilmiş olur.
Doğrusal Arama
100 elemanlı tam sayı tipinde veri tutan bir dizi tanımlayınız.
Dizinin tüm elemanlarına değer olarak dizi indislerinin 2 katı değer atayınız.
Daha sonra aranacak veriyi klavyeden giriniz.
Eğer aranan veri dizide bulunursa, bulunduğu dizinin indisi ile birlikte ekrana yazdırınız.
Eğer aranan bilgi bulunamazsa ekrana bulunamadığına dair bilgi veriniz.
C Programı
Dizinin tüm elemanlarına değer olarak dizi indislerinin 2 katı değer atayınız.
Daha sonra aranacak veriyi klavyeden giriniz.
Eğer aranan veri dizide bulunursa, bulunduğu dizinin indisi ile birlikte ekrana yazdırınız.
Eğer aranan bilgi bulunamazsa ekrana bulunamadığına dair bilgi veriniz.
C Programı
Kaydol:
Kayıtlar (Atom)