Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
YAPISAL PROGRAMLAMA Hafta-5
AR. GÖR. ESRA SÖĞÜT
2
İçindekiler Header Dosyaları Veri Tipleri Fonksiyonlar-Örnekler
Matematik Kütüphanesi Rand() Fonksiyonu Void() Fonksiyonu Fonksiyon Parametresi Referans Değişkenleri Varsayılan Parametreler Değişken Kapsamı Tek Kapsam Çözme Operatörü :: Fonksiyon Yükleme Satıriçi Fonksiyonlar (Inline) Const Belirteci Sizeof operatörü Operator Overloading Örnek Sorular Kaynaklar
3
Header Dosyaları <assert.h> Programın hatalarının ayıklanmasında yardımcı olması için eklenen teşhislerin makroları ve bilgilerini içerir. <ctype.h> karakterleri belli özelliklere göre test eden fonksiyonların ve küçük harfi büyük harfe çeviren fonksiyonların (terside geçerlidir) prototiplerini tutar <errno.h> hata mesajlarını iletmek için gereken makroları tanımlar <float.h> sistemin ondalıklı sayılar için limitlerini tutar <limits.h> sistemin integral limitlerini tutar <locale.h> Programın çalıştırıldığı yerdeki yerel bilgilere göre değiştirilebilmesini sağlayan fonksiyon prototiplerini ve bunların ihtiyaç duyabileceği bilgileri içerir. Yerel gösterimler bilgisayar sisteminin, tarih, zaman, para birimleri ve dünya üzerindeki büyük sayılar için değişik gösterim biçimlerini doğru bir şekilde kullanmasını sağlatır. Kullanımı: #include “square.h”
4
Header Dosyaları <math.h> matematik kütüphane fonksiyonlarının prototiplerini tutar. <setjmp.h> fonksiyon çağrıları ve geri dönüşleri arasındaki geçişlere izin veren fonksiyonların prototiplerini tutar <signal.h> programın çalıştırılması esnasında oluşabilecek çeşitli durumları gerçekleştiren makroları ve fonksiyon prototiplerini tutar <stdarg.h> sayısı ve tipleri belli olmayan argüman listesine sahip fonksiyonların çalışmasını sağlayan makroları tutar <stddef.h> C’de belli hesaplamaları yaptığımız tiplerinin genel tanımlarını tutar <stdio.h> standart giriş/çıkış kütüphane fonksiyonlarının prototiplerini ve bunlar tarafından kullanılan bilgileri tutar <stdlib.h> sayıları yazılara, yazıları sayılara çeviren, rastgele sayılar üreten, hafıza ayrılmasını sağlayan fonksiyonların prototiplerini tutar <string.h> string işlemlerini yapan fonksiyonların prototiplerini tutar <time.h> zamanla ve tarihle ilgili işlemler yapan fonksiyonların prototiplerini tutar.
5
Veri Tipleri printf ile kullanımları scanf ile kullanımları
long double %Lf %Lf double %f %lf float %f %f unsigned long int %lu %lu long int %ld %ld unsigned int %u %u int %d %d short %hd %hd char %c %c
6
Fonksiyonlar Fonksiyonlar bir görevi yapan komutlar grubudur.
Fonksiyonlar uzun bir problemi daha küçük problemlere bölerek çözmek ve program yazımını basitleştirmek için kullanılır. Fonksiyonu bir kere yazıp programın farklı yerlerinden çağırmak mümkündür. İnt fakt(intx); // veya İnt fakt(int); Fonksiyon Prototipi
7
Fonksiyonlar-Matematik Kütüphanesi
TANIM ÖRNEK sqrt(x) x’in karekökü sqrt(900.0) 30.0 değerini verir exp(x) ex üssel fonksiyon exp(1.0) değerini verir exp(2.0) değerini verir log(x) x’in e tabanına göre logaritması log ( ) 1.0 değerini verir log ( ) 2.0 değerini verir log10(x) x’in 10 tababına göre logaritması log10(1.0) 0.0 değerini verir log10(10.0) 1.0 değerini verir log10(100.0) 2.0 değerini verir fabs(x) x’in mutlak değeri x>0 ise x değerini verir x=0 ise 0.0 değerini verir x<0 ise –x değerini verir
8
Fonksiyonlar-Matematik Kütüphanesi
TANIM ÖRNEK ceil(x) x’i kendinden büyük ilk tamsayıya yuvarlar ceil(9.2) 10.0 değerini verir ceil(-9.8) –9.0 değerini verir floor(x) x’i kendinden küçük ilk tamsayıya yuvarlar floor(9.2) 9.0 değerini verir floor(-9.8) –10.0 değerini verir pow(x) xy x üzeri y pow(2,7) değerini verir pow(9,.5) 3 değerini verir fmod(x,y) x/y işleminin kalanını bulur fmod(13.657,2.333) değerini verir sin(x) x’in sinüsünü hesaplar(x radyan) sin(0.0) 0.0 değerini verir cos(x) x’in cosinüsünü hesaplar (x radyan) cos(0.0) 1.0 değerini verir tan(x) x’in tanjantını hesaplar (x radyan) tan(0.0) 0.0 değerini verir
9
Rand() Fonksiyonu /* 1+rand( )%6 ile üretilmiş kaydırılmış ve derecelendirilmiş tamsayılar */ #include <stdio.h> #include <stdlib.h> //rand() icin int main( ) { int i; for ( i = 1; i <= 20; i++ ) { printf( "%10d", 1 + ( rand( ) % 6 ) ); if ( i % 5 == 0 ) printf( "\n" ); } return 0; }
10
Fonksiyonlar-Örnek
11
Fonksiyonlar-Örnek
12
Fonksiyonlar-Örnek
13
Void Fonksiyonları Bir fonksiyon değer döndürmüyorsa veya parametre içermiyorsa, bu durumu void yazarak belirtmemiz gerekir.
14
Void Fonksiyonları
15
Fonksiyon Parametresi
Bu parametreler değer parametresi (call by value) veya referans parametresi (call by reference) olarak kullanılabilir.
16
Fonksiyon Parametresi
C++ dilinde parametreler iki şekilde yollanabilir:
17
Referans Değişkeni Referans değişkenleri bir değişkene farklı bir isim vermek için kullanılır. Referans değişkenleri & (referans) operatörü ile tanımlanır. int &ref; YANLIŞ TANIMLAMA İnt x=5,y=6; İnt &ref=x; ref=y; GEÇERSİZ ATAMA
18
Varsayılan Parametreler
Gerçek parametre yollanmadığında daha önce tanımlanmış değeri alan parametrelere varsayılan parametre denir.
19
Değişken Kapsamı-Faaliyet Alanı
Her değişkenin program içinde hangi bölgelerde kullanılabileceğini gösteren bir kapsamı (scope) vardır.
20
Fonksiyonlar ve Değişkenlerin Faaliyet Alanları-Örnek
#include <stdio.h> void a( void ); /* fonksiyon prototipi*/ void b( void ); /* fonksiyon prototipi */ void c( void ); /* fonksiyon prototipi */ int x = 1; /* global değişken */
21
Fonksiyonlar ve Değişkenlerin Faaliyet Alanları-Örnek Devamı
int main( ) { int x = 5; /* main’e yerel değişken */ printf ("main’in faaliyet alanı dışındaki yerel x değişkeni %d olur.\n", x ); { /* yeni faaliyet alanına başla */ int x = 7; printf( "main’in faaliyet alanı içindeki yerel x değişkeni %d olur.\n", x ); } /* yeni faaliyet alanını bitir*/ printf( "main’in faaliyet alanı dışındaki yerel x değişkeni %d olur.\n", x ); a( ); /* a automatic yerel x’ e sahiptir.*/ b( ); /* b static yerel x’ e sahiptir. */ c( ); /* c global x kullanır. */ a( ); /* a automatic yerel x’ e tekrar ilk değer atar.*/ b( ); /* static yerel x önceki değerini korur */ c( ); /* global x ‘ de değerinin korur. */ printf( "main içindeki yerel x %d olur.\n", x ); return 0; }
22
Fonksiyonlar ve Değişkenlerin Faaliyet Alanları-Örnek Devamı
void a( void ) { int x = 25; /* a her çağrıldığında ilk değeri atanır */ printf( "\na’ya girildikten sonra yerel x %d olur.\n", x ); ++x; printf( "a’dan çıkmadan önce yerel x %d olur.\n", x ); } void b( void ) { static int x = 50; /* sadece static ilk değer atama */ /* b’nin ilk çağırılması */ printf( "\nb’ye girerken static x %d olur.\n", x ); printf( "b’den çıkarken önce static x %d olur.\n", x ); } void c( void ) { printf( "\nc’ ye girerken global x %d olur.\n", x ); x *= 10; printf( "c’ den çıkarken global x %d olur.\n", x ); }
23
Tek Kapsam Çözme Operatörü ::
Genel değişkenlere, içinde aynı isimde yerel değişken tanımı olan fonksiyonlardan erişmek için Tekli Kapsam Çözme Operatörünü (::) kullanabiliriz.
24
Fonksiyon Yükleme Aynı isimde birden fazla fonksiyonu, farklı parametrelerle tanımlayabiliriz. Bu yönteme Fonksiyon Yükleme denir.
25
Satıriçi Fonksiyonlar (inline)
Inline fonksiyonlar, fonksiyonun kullanıldığı yerlere doğrudan yapıştırılır. Böylece çağırma işleminin yapılmasına gerek kalmaz. Inline double alan() { return a*a; } gibi. Derleyici, satıriçi olarak tanımlanan her fonksiyonu satıriçi fonk. olarak değerlendirmeyebilir. Bu derleyicinin inisiyatifine bırakılmıştır. Çok kısa ve sık kullanılan fonk.lar için tercih edilmelidir. Aksi halde birçok yerde tekrar kopyalanacağı için programın kapladığı alan da büyüyecektir. Bu fonk.larda bir değişiklik yapıldığında, bu fonk.nun kullanıldığı diğer program parçalarının yeniden derlenmesi gerekir.
26
Soru-Cevap
27
Soru
28
Cevap Devamı…
29
Const Belirteci const belirteci, programcının derleyiciye belirli bir değişkenin değerinin değiştirilmemesi gerektiğinin bildirmesini sağlar. Eğer const olarak bildirilmiş bir değer değiştirilmeye çalışılırsa, derleyici bunu yakalar ve bilgisayara bağlı olarak hata ya da uyarı mesajı yayınlar.
30
Const olmadan-örnek /*küçük harfleri büyük harfe çevirmek.*/ #include <stdio.h> #include <ctype.h> void buyukHarfeCevir( char * ); int main( ) { char string[ ] = "karakterler ve $32.98"; printf( "Çevrilmeden önceki string: %s", string ); buyukHarfeCevir( string ); printf( "\nÇevrildikten sonraki string: %s\n", string ); return 0; } void buyukHarfeCevir ( char *sPtr ) { while ( *sPtr != '\0' ) { if ( islower( *sPtr ) ) *sPtr = toupper( *sPtr ); /* büyük harfe çevir */ ++sPtr; /* sPtr ile diğer karaktere geç */ } }
31
Const olunca-örnek #include <stdio.h> void karakterleriYazdir ( const char * ); int main( ) { char string [ ] = "string karakterlerini yaz"; printf( "String:\n" ); karakterleriYazdir( string ); printf( "\n" ); return 0; } /* karakterleriYazdir fonksiyonunda sPtr bir karakter sabitini gösteren göstericidir. Karakterler sPtr kullanarak değiştirilemezler (yani sptr, sadece okunabilir bir göstericidir). */ void karakterleriYazdir ( const char *sPtr ) { for ( ; *sPtr != '\0'; sPtr++ ) /* ilk değer ataması yok */ printf( "%c", *sPtr ); }
32
Const olunca-örnek #include <stdio.h> void f ( const int * ); int main( ) { int y; f( &y ); /* f doğru olmayan bir değişiklik yapmaya çalıştı */ return 0; } /* f içinde xPtr,bir tamsayı sabitini gösteren göstericidir */ void f ( const int *xPtr ) { *xPtr = 100; /* const nesnesi değiştirilemez */ }
33
Const olunca-örnek #include <stdio.h> int main( ) { int x, y; int * const ptr = &x; /* ptr, tamsayı gösteren sabit bir göstericidir Bir tamsayı ptr ile değiştirilebilir ama ptr hafızada her zaman aynı yeri gösterir */ *ptr = 7; ptr = &y; return 0; }
34
Sizeof operatörü /*sizeof operatörü dizi isimlerine uygulandığında dizideki byte sayısını döndürür.*/ #include <stdio.h> size_t buyukluguBul( float * ); int main( ) { float dizi[ 20 ]; printf( "Dizinin byte uzunluğu: %d" "\nbuyukluguBul ile döndürülen byte sayısı: %d\n", sizeof( dizi), buyukluguBul( dizi ) ); return 0; } size_t buyukluguBul( float *ptr ) { return sizeof( ptr ); }
35
Operatörlere Yeni İşlevlerin Yüklenmesi (Operator Overloading)
36
Operator Overloading-Örnek
37
Kaynaklar Atılım Üniversitesi-Yrd. Doç. Dr. Çiğdem Turhan - Yrd. Doç. Dr. Fatma Cemile Serçe-C++ Dersi Sunumları Anadolu Üniversitesi- Öğr. Gör. Levent Terlemez-Bilgisayar Programlama Ders Notları C ve C++ Deitel&Deitel Programlama Kitabı İTÜ-Dr. Feza Buzluca-Nesneye Dayalı Programlama Dersi Notları
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.