NANTAI NVERSTES ALGORTMA VE PROGRAMLAMAYA GR FONKSYONLARA DZ















![ÇOK BOYUTLU DİZİLER • Örnek: int matris [2] [3] ; float v[3] [1]; • ÇOK BOYUTLU DİZİLER • Örnek: int matris [2] [3] ; float v[3] [1]; •](https://slidetodoc.com/presentation_image_h/1e9506c4728fad8d2d746bec13802d78/image-16.jpg)





- Slides: 21
NİŞANTAŞI ÜNİVERSİTESİ ALGORİTMA VE PROGRAMLAMAYA GİRİŞ FONKSİYONLARA DİZİ GEÇİRME, ÇOK BOYUTLU DİZİLER İktisadi, İdari ve Sosyal Bilimler Fakültesi iisbf. nisantasi. edu. tr TESİ NİŞANTAŞI ÜNİVERSİ ©
DEĞİŞKEN SINIFI • Bir değişkenin bir programdaki yaşam süresi değişkenin sınıfına bağlıdır. C 'de iki sınıf vardır: 1. otomatik (automatic) , 2. statik (static). • Otomatik değişkenler geçici değişkenlerdir. Tanımlandıkları blok'a girildiği veya tanımlandıkları fonksiyon çağrıl dığı zaman yaratılırlar, bloktan veya fonksiyondan çıkıldığında yok edilirler. Bu yüzden bu değişkenlere otomatik denilir. Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 2
DEĞİŞKEN SINIFI • Statik değişkenler ise programın çalıştığı süre içinde var olmaya, yani değerlerini saklı tutmaya devam ederler. Statik bir değişken tanıtımı şöyledir: static tip değişken_adı; • Bir değişkenin bir de geçerli olduğu alan (scope) vardır, statik bir değişken, ta nımlandığı fonksiyon için geçerli olur. Başka fonksiyonlarda tanınmaz, geçerli olmaz. • Bütün fonksiyonlar için tanımlı olmasını istiyorsak, onu bu fonksiyonlardan ya da main( ) 'den önce tanıtmamız gerekir. Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 3
DEĞİŞKEN SINIFI • Fonksiyon içinde bir diziye ilk değer verilebilmesi için dizinin statik olarak tanıtılması gerekir, main() den önce tanıtılan küresel değişkenler gibi dizilere de ilk değer verilebilir. • Statik değişkenler tanımlandıkları fonksiyon dışında geçerli olmazlar. • Bir dizi static olarak tanıtılırsa elemanları otomatik olarak sıfırlanır. Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 4
DEĞİŞKEN SINIFI • Bir programda bir değişkenin yaşam süresi üç farklı düzeyde olabilir: 1. Blok düzeyinde 2. Fonksiyon düzeyinde 3. Dosya düzeyinde. • Dosya düzeyinde olanlar en uzun yaşam süresi olan değişkenlerdir. Program çalışmaya devam ettikçe varlıklarını sürdürürler. Bir değişken fonksiyon içinde statik olarak tanıtılırsa yaşam süresi fonksiyon düzeyinde olur. Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 5
ÖRNEK • Elemanlarının değerleri klavyeden girilen, 5 elemanlı 2 tamsayı dizisinin tanımlandığı; bu dizilerin aynı sıradaki elemanlarının toplamını hesaplayarak üçüncü bir diziye aktaran C programını yazınız. 6
ÖRNEK 7
ÖRNEK • Elemanları klavyeden girilen 10 elemanlı bir tamsayı dizi içerisindeki en büyük sayıyı bulan ve ekrana yazdıran programı yazınız. 8
ÖRNEK 9
ÖRNEK • 10 elemanlı bir tamsayı dizisi içerisindeki sayıları küçükten büyüğe doğru sıraya dizen ve sıralı diziyi ekrana yazdıran programı yazınız. 10
ÖRNEK 11
KAYNAKLAR • Fahri Vatansever, Algoritma Geliştirme ve Programlamaya Giriş, Seçkin Yayıncılık • İbrahim Güney, C Programlama Dili, Nobel Yayıncılık
FONKSİYONLARA DİZİ GEÇİRME • Bir fonksiyona bir dizi geçirmek için fonksiyon adının yanındaki parantezlerin arasına dizinin sadece adını (köşeli parantezleri değil) yazmak yeterlidir. Örneğin a[10] dizisini, fonk() adlı fonksiyona geçirmek için şu komutu kullanırız: fonk (a) ; • Bilindiği gibi fonksiyonlar iki farklı yolla çağırılır: a) değer ile çağrı b) adres ile çağrı. • Değer ile çağrıda argümanın kopyası fonksiyona gönderilir. Çağırılan fonksiyon içinde doğrudan doğruya argümana ulaşılamaz ve dolayısıyla değeri değiştirilemez. Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 13
FONKSİYONLARA DİZİ GEÇİRME • Şimdi şu soruyu soralım: fonk(a); çağrısı hangi yolla yapılan bir çağındır? • Bir dizinin adresi söz konusu edilmek istenirse dizinin sadece adı göz önüne alınır. O halde fonk (a) ifadesinde fonksiyona dizinin adresi geçirilmektedir. Böylece çağırılan fonksiyon içinde dizinin elemanları değiştirilebilir. O halde bir dizi bir fonksiyona geçirilince dizideki ilk elemanın adresi parametreye geçirilmiş olur. Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 14
ÇOK BOYUTLU DİZİLER • Satır ve sütunlarda yer alan veri tabloları iki boyutlu dizilerle gösterilir. • Böyle bir tablonun özel bir elemanını göstermek için satır ve sütun numarası verilmelidir. • İlk indis satır numarası, ikinci indis de sütun numarasını gösterir. • İki boyutlu bir dizi tanıtımının genel formatı şöyledir. tip dizi_adı[m] [n] ; • İlk parantez içindeki m tam değeri satır boyutunu, ikinci parantez içindeki n de sütun boyutunu gösterir. 15
ÇOK BOYUTLU DİZİLER • Örnek: int matris [2] [3] ; float v[3] [1]; • İndisler bilindiği gibi sıfırdan başlar. a[3][2] dizisini tablo ile gösterelim: 0. sütun 1. sütun 0. satır a[0][0] a[0][1] 1. satır a[1][0] a[1][1] 2. satır a[2][0] a[2][1] 16
ÇOK BOYUTLU DİZİLER • Bu tablo bellekte tek boyutlu bir dizi olarak yer alır. a[0][0] a[0][1] a[1][0] a[1][1] a[2][0] a[2][1] 17
İKİ BOYUTLU DİZİLERE İLK DEĞER VERİLMESİ • İki boyutlu dizilere ilk değer verilmesi, tek boyutlu dizilerde olduğu gibidir. • a[3][4] dizisine bu ilk değerler bir kaç türlü verilebilir: 1) int a[3][4]= { {1, 3, 5, 2 }, {2, 4, 6, 3 }, { 3, 5, 7, 8 } } Her satırın elemanları iki ayraç arasında ve aralarına virgül konarak yazılır, son satır da hep sıfır değeri varsa, o satır yazılmayabilir. derleyici elemanların yerine sıfır alır. 2) int a[3][4]= {1, 3, 5, 2, 3, 4, 6, 3, 3, 5, 7, 8 } Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 18
İKİ BOYUTLU DİZİLERE İLK DEĞER VERİLMESİ • Bazı derleyiciler static belirticisi yazılmayan tanıtımlarda hata mesajı verir. • Bazı derleyiciler fonksiyon içinde dizilere ilk değer verilmesine izin verirken diğer bazıları static belirticisinin kullanılmasını ister. Kaynak: İbrahim Güney, C Programlama Dili, Nobel Yayıncılık 19
ÖRNEK • İlk değerleri program içerisinde verilen 3 x 2 boyutundaki iki matrisin toplamını hesaplayarak sonucu yazdıran C programını yazınız. 20
ÖRNEK 21











