Bölüm 14 İleri C Konuları

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "Bölüm 14 İleri C Konuları"

Transkript

1 Bölüm 14 İleri C Konuları Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 1 İçerik 14.1 Giriş 14.2 UNIX ve DOS Sistemlerinde Girdi/Çıktı Yönlendirme 14.3 Değişken Uzunluklu Argüment Listesi 14.4 Komut-Satırı Argümentleri Kullanma 14.5 Çoklu Kaynak Dosyalı Programların Derlenmesi 14.6 exit ve atexit ile Program Sonlandırma 14.7 volatile Tipi Niteleyici 14.8 Integer ve Floating-Point Sabitleri İçin Sonekler 14.9 Dosyalar Sinyal Kontrolü calloc ve realloc ile Dinamik Bellek Düzenleme Koşulsuz Branş: goto

2 14.1 Giriş Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 2 Bir çok ileri düzey konulardan bahsedilecek Özel olarak işletim sistemleri Genellikle UNIX veya DOS

3 14.2 UNIX ve DOS Sistemlerinde Girdi/Çıktı (I/O) Yönlendirme Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 3 Standard I/O klavye ve ekran Girdi ve çıktıyı yeniden yönlendir Yönlendirme sembolü(<) İşletim sistemi özelliği, C özelliği değil UNIX ve DOS $ veya % komut satırını temsil eder Örnek: $ Program < girdi Girdi değerlerini yazmak yerine, dosyadan okur ( ) komutu Bir programın çıktısı diğer bir programın girdisi olur $ Program1 Program2 Program1 in çıktısı Program2 ye girdi olarak gider

4 14.2 UNIX ve DOS Sistemlerinde Girdi/Çıktı (I/O) Yönlendirme Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 4 Yönlendirilmiş Çıktı (>) Bir programın çıktısının nereye gideceğini belirler Örnek: $ Program > dosyam Çıktı dosyam dosyasına gider (önceki içeriği siler) Ekleme Çıktısı (>>) Çıktıyı dosyanın sonuna ekler(önceki içeriği korur) Örnek: $ Program >> dosyam Çıktı dosyam dosyasının sonuna eklenir

5 14.3 Değişken Uzunluklu Argüment Listesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 5 Argüment sayısı belli olmayan fonksiyonlar <stdarg.h> yükle Parametre listesinin sonuna (...) yaz En az bir tanımlı parametre gereklidir Örnek: double fonksiyon( int i,... ); Noktalar değişken uzunluklu argüment listeli fonksiyonun sadece prototipinde kullanılır printf çoklu argüment alan bu tipten bir fonksiyondur printf prototipi int printf( const char* format,... ); şeklinde tanımlanır

6 14.3 Değişken Uzunluklu Argüment Listesi Makrolar ve değişken argümentlerin tanımları header (stdarg.h) va_list Tip belirteci, (va_list argümentleri) gereklidir va_start( argümentler, diğer değişkenler) Parametreleri verir, kullanımdan önce gerekli va_arg( argümentler, tip) va_arg her çağrıldığında bir parametre gönderir Otomatik olarak bir sonraki parametreyi işaret eder va_end( argümentler ) Fonksiyonun normal dönmesine yardım eder Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 6

7 14.3 Değişken Uzunluklu Argüment Listesi 2 Değişken uzunluklu argüment listesi kullanma */ 3 #include <stdio.h> 4 #include <stdarg.h> 5 6 double ortalama( int,... ); 7 8 int main() 9 { 10 double w = 37.5, x = 22.5, y = 1.7, z = 10.2; printf( "%s%.1f\n%s%.1f\n%s%.1f\n%s%.1f\n\n", 13 "w = ", w, "x = ", x, "y = ", y, "z = ", z ); 14 printf( "%s%.3f\n%s%.3f\n%s%.3f\n", 15 " w ve x in ortalaması ", 16 ortalama( 2, w, x ), 17 " w, x ve y nin ortalaması ", 18 ortalama( 3, w, x, y ), 19 " w, x,y ve z nin ortalaması ", 20 ortalama( 4, w, x, y, z ) ); return 0; 23 } double ortalama( int i,... ) 26 { 27 double toplam = 0; 28 int j; 29 va_list ap; 1. Yükle <stdarg.h> 1.1 Fonksiyon prototipi (değişken uzunluklu arg. listeli) 1.2 Değişkenleri belirle 2. Fonksiyon çağır 3. Fonksiyon tanımı 3.1 ap (va_list nesnesi) oluştur 3.2 ap belirle (va_start(ap, i)) İLERİ C KONULARI Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 7

8 14.3 Değişken Uzunluklu Argüment Listesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI va_start( ap, i ); for ( j = 1; j <= i; j++ ) 34 toplam += va_arg( ap, double ); va_end( ap ); 37 return toplam / i; 38 } 3.3 Argümentlere eriş va_arg(ap, double) 3.4 fonksiyon sonlandır va_end(ap); return toplam/1; w = 37.5 x = 22.5 y = 1.7 z = 10.2 w ve x in ortalaması w, x ve y nin ortalaması w x, y ve z nin ortalaması

9 14.4 Komut-Satırı Argümentleri Kullanma Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 9 DOS veya UNIX de argümentleri main e aktar Main tanımı int main( int argc, char *argv[] ) int argc Aktarılan argüment sayısı char *argv[] String dizisi Argüment adlarına sıralı olarak sahiptir argv[ 0 ] ilk argümenttir Örnek: $ copy input output argc: 3 argv[ 0 ]: "copy" argv[ 1 ]: "input" argv[ 2 ]: "output"

10 1 /* Fig. 14.3: fig14_03.c 2 Komut satırı argümentleri kullanma */ 3 #include <stdio.h> 4 5 int main( int argc, char *argv[] ) 6 { 7 FILE *girdidosyaptr, *ciktidosyaptr; 8 int c; 9 10 if ( argc!= 3 ) 14.4 Komut-Satırı Argümentleri Kullanma 11 printf( Kullanım: kopya girdidosyası çıktıdosyası\n" ); 12 else argv[2] 3. argümenttir, ve yazılmaktadır 13 if ( ( girdidosyaptr = fopen( argv[ 1 ], "r" ) )!= NULL ) if ( ( ciktidosyaptr = fopen( argv[ 2 ], "w" ) )!= NULL ) while ( ( c = fgetc( girdidosyaptr ) )!= EOF ) 18 fputc( c, ciktidosyaptr ); else 21 printf(" Dosya \"%s\" açılamıyor EOF a \n", kadar döngü. argv[ fgetc 2 ] ); ile infileptr den bir karakter al ve fputc ile outfileptr ye yaz else 24 printf( Dosya \"%s\" açılamıyor \n", argv[ 1 ] ); return 0; 27 } main deki argc ve argv[] ye dikkat et argv[1] 2. argümenttir ve okunmaktadır. İLERİ C KONULARI Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 10

11 14.5 Çoklu Kaynak Dosyalı Programların Derlenmesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 11 Çok dosyalı programlar Fonksiyon tanımı tek bir dosyada olmalı (parçalanamaz) Global değişkenler aynı dosyadaki fonksiyonlara erişebilir Global değişkenler kullanıldıkları her dosyada tanımlanmalıdır Örnek: Eğer birglobal tamsayısı bir dosyada tanımlandı ise Bunu bir başka dosyada kullanmak için extern int birglobal; dosyaya eklenmelidir extern Değişkenin bir başka dosyada tanımlandığını belirtir Fonksiyon prototipleri extern olmadan diğer dosyalarda kullanılabilir Fonksiyonu kullanan her dosyada bir prototip bulundur

12 14.5 Çoklu Kaynak Dosyalı Programların Derlenmesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 12 static anahtar kelimesi Değişkenin sadece tanımlandığı dosyada kullanılacağını belirtir Çoklu dosyalı programlar Bir dosyada küçük bir değişiklik yapıldıysa tümünü yeniden derlemek gereksizdir Sadece değiştirilen dosyalar derlenebilir İşlem sisteme bağlıdır UNIX: make komutu

13 14.6 exit ve atexit ile Program Sonlandırma exit fonksiyonu Programın sonlanmasını sağlar Parametreler EXIT_SUCCESS veya EXIT_FAILURE sembolik sabitleri Uygulama-tanımlı bir değer gönderir Örnek: exit( EXIT_SUCCESS ); atexit fonksiyonu atexit( çalıştırılacak fonksiyon ); Programın başarı ile sonlanması sonucunda çalıştırılacakfonksiyon u işleme sokmak için kaydeder atexit programı kendisi sonlandırmaz 32 fonksiyona kadar kaydedebilir (çoklu atexit() deyimleri) Fonksiyonlar sondan başa kayıt sırası ile çağrılır Çağrılan fonksiyonlar argüment almaz veya birşey göndermez Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 13

14 1 /* Fig. 14.4: fig14_04.c 14.6 exit ve atexit ile Program Sonlandırma 2 exit ve atexit fonksiyonları kullanımı*/ 3 #include <stdio.h> 4 #include <stdlib.h> 5 6 void yaz( void ); 7 8 int main() 9 { 10 int cevap; atexit( yaz ); /* yaz fonksiyonunu kaydet */ 13 printf("exit fonksiyonu ile programı kapatmak için 1 gir" 14 "\n Programı normal sonlandırmak için 2 gir\n" ); 15 scanf( "%d", &cevap ); if ( cevap == 1 ) { 18 printf( "\n Programı " 19 "exit ile sonlandırıyor\n" ); 20 exit( EXIT_SUCCESS ); 21 } printf( "\nprogramı main sonuna" 24 " ulaşarak sonlandırıyor \n" ); 25 return 0; 26 } void yaz( void ) 29 { 30 printf(" Program sonunda yaz fonksiyonunu " 31 çalıştırıyor\nprogram sonlandı.\n" ); 1. Register fonksiyonu yaz; atexit kullanarak 2. Kullanıcı girdisi 3. Çıktı 3.1 fonksiyon tanımı İLERİ C KONULARI Nuri 32 ÖZALP } (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 14

15 14.6 exit ve atexit ile Program Sonlandırma Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 15 exit fonksiyonu ile programı kapatmak için 1 gir Programı normal sonlandırmak için 2 gir : 1 Programı exit ile sonlandırıyor Program sonunda yaz fonksiyonunu çalıştırıyor Program sonlandı exit fonksiyonu ile programı kapatmak için 1 gir Programı normal sonlandırmak için 2 gir : 2 Programı main sonuna ulaşarak sonlandırıyor Program sonunda yaz fonksiyonunu çalıştırıyor Program sonlandı

16 14.7 volatile Tipi Niteleyici Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 16 volatile (Değişken tip) niteleyicisi Değişken program dışında değiştirilebilir Değişken programın kontrolünde değildir Değişken optimize edilemez Const tipinin zıttı

17 14.8 Integer ve Floating-Point Sabitleri İçin Sonekler Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 17 C sabitler için sonekler sağlar unsigned integer u veya U long integer l veya L unsigned long integer ul veya UL float f veya F long double l veya L Örnekler: 174u 467L 3451ul Eğer integer sabitte ek yok ise, tipi o değeri yükleyebilecek ilk tiple belirlenir(sırası: int, long int, unsigned long int) Eğer floating point de ek yok ise tipi otomatik olarak double dır

18 14.9 Dosyalar (Ekstra) C binary (ikili) dosyaları işleyebilir Her sistem binary dosyayı desteklemez Binary mod desteklenmiyorsa dosyalar tekst dosyası olarak açılır Hız bellek yeri ve uyumluluk koşulları gerektiriyorsa binary dosya kullanılmalıdır Diğer durumlarda tekst dosyası tercih edilir Doğal taşınabilirliği, veri incelemesi için satandart araçları olduğundan tmpfile fonksiyonu "wb+" modunda geçici bir dosya açar Bazı sistemler geçici dosyaları tekst dosyası olarak işlerler Geçici dosyalar fclose ile kapatılmadıkça veya program kapanmadıkça var olur rewind fonksiyonu Dosya pointer-ını dosyanın başına getirir Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 18

19 14.9 Dosyalar (Ekstra) Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 19 Dosya açma modları: Mod rb wb ab rb+ wb+ ab+ Açıklama Okumak için binary dosya aç. Yazmak için binary dosya oluştur. Dosya mevcut ise, içeriğini yok eder. Ekle; sonuna yazmak için bir binary dosya aç veya oluştur. Yenilemek için binary dosya aç (okuma ve yazma). Yenilemek için bir binary dosya oluştur. Dosya mevcut ise, içeriğini yok eder. Ekle; yenilemek için binary dosya aç veya oluştur; yazım dosya sonuna yapılır

20 14.10 Sinyal Kontrolü Sinyal Beklenmeyen olay, programı durdurur müdahale (<ctrl> c), illegal komut, kesimleme ihlali, sonlanma sırası, floating-point durumları (sıfıra bölme, çok büyük reel sayıları çarpma) signal fonksiyonu Beklenmedik olayları yakalar Header <signal.h> İki argüment alır; bir sinyal numarası ve sinyal kontrol fonksiyonuna bir pointer raise fonksiyonu Bir tamsayı sinyal numarası alır ve sinyal oluşturur Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 20

21 14.10 Sinyal Kontrolü Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 21 signal.h de tanımlı sinyaller Sinyal SIGABRT SIGFPE SIGILL SIGINT SIGSEGV SIGTERM Açıklama Beklenmedik program sonlanması (abort a bir çağrım gibi). Sıfıra bölme gibi, hatalı bir aritmetik işlem. Bir illegal komutun yakalanması. Bir interaktif dikkat sinyali alınması. Belleğe geçersiz bir erişim. Programa gönderilen bir durdurma istemi.

22 1 /* Fig. 14.8: fig14_08.c 2 Sinyal kontrol kullanımı */ 3 #include <stdio.h> 4 #include <signal.h> 5 #include <stdlib.h> 6 #include <time.h> 7 8 void sinyal_kontrol( int ); 9 10 int main() 11 { 12 int i, x; signal( SIGINT, sinyal_kontrol ); 15 srand( clock() ); for ( i = 1; i <= 100; i++ ) { 18 x = 1 + rand() % 50; if ( x == 25 ) 21 raise( SIGINT ); printf( "%4d", i ); if ( i % 10 == 0 ) 26 printf( "\n" ); 27 } return 0; 30 } Sinyal Kontrolü SIGINT sinyal tipi oluştuğunda signal, sinyal_kontrol fonksiyonunu çağırır 1. Fonksiyon prototipi 2. random sayı seç 2.1 x == 25 ise sinyali yükselt 3. Fonksiyon tanımı İLERİ C KONULARI Nuri 32 ÖZALP void (ANKARA sinyal_kontrol( ÜNİVERSİTESİ) İLERİ PROGRAMLAMA int sinyaldegeri ) 22

23 14.10 Sinyal Kontrolü Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI { 34 int cevap; printf( "%s%d%s\n%s", 37 "\n Kesme sinyali ( ", sinyaldeğeri, " ) alındı.", 38 Devam etmek istermisiniz ( 1 = evet veya 2 = hayır )? " ); scanf( "%d", &cevap ); Programı sonlandırmak için kullanıcı seçimi while ( cevap!= 1 && cevap!= 2 ) { 43 printf( "( 1 = evet veya 2 = hayır )? " ); Sinyal kontrol signal i tekrar çağırarak yenilenir 44 scanf( "%d", &cevap ); 45 } if ( cevap == 1 ) 48 signal( SIGINT, sinyal_kontrol ); 49 else 50 exit( EXIT_SUCCESS ); 51 }

24 14.10 Sinyal Kontrolü Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI Kesme sinyali ( 2 ) alındı. Devam etmek istermisiniz ( 1 = evet veya 2 = hayır )? Kesme sinyali ( 2 ) alındı. Devam etmek istermisiniz ( 1 = evet veya 2 = hayır )?

25 14.11 calloc ve realloc ile Dinamik Bellek Düzenleme Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 25 Dinamik Bellek Düzenleme Dinamik diziler oluşturabilir calloc( üyesay, boyut ) üyesay üye sayısı boyut her bir üyenin boyutu Dinamik bir diziye pointer gönderir realloc( nesneyepointer, yeniboyut) nesneyepointer düzenlenecek nesneye pointer yeniboyut nesnenin yeni boyutu Düzenlenmiş belleğe pointer gönderir Yeri düzenleyemezse NULL gönderir Eğer yeniboyut 0 ise işaretlenen nesne serbest bırakılır Eğer nesneyepointer 0 ise malloc gibi davranır

26 14.12 Koşulsuz Branş: goto Yapısallaşmamış programlama Zorunlu ise kullan Döngüden çıkmak için false oluşmasını beklemek yerine break ile çık goto deyimi Akış kontrolünü belirtilen etiketten başlatır Etiket bir belirleyicidir (örneğin basla:) İçiçe döngülerden hızla çıkmak için goto basla; Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 26

27 14.12 Koşulsuz Branş: goto 1 /* Fig. 14.9: fig14_09.c 2 goto kullanımı*/ 3 #include <stdio.h> 4 5 int main() 6 { 7 int say = 1; 8 9 basla: /* etiket */ 10 if ( say > 10 ) 11 goto son; printf( "%d ", say ); 14 ++say; 15 goto basla; son: /* etiket */ 18 putchar( '\n' ); return 0; 21 } Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA İLERİ C KONULARI 27

28 Bölüm 15 - C++ " Daha İyi Bir C " Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 1 İçerik 15.1 Giriş 15.2 C Bir Basit Program: İki Tamsayıyı Toplama 15.4 C++ Standard Kütüphanesi 15.5 Header Dosyaları 15.6 Satıriçi (Inline) Fonksiyonları 15.7 Referanslar ve Referans Parametreleri 15.8 Default Argumentler ve Boş Parametre Listesi 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü Fonksiyon Yüklemeleri Fonksiyon Şablonları

29 15.1 Giriş Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 2 İlk 14 bölüm Yordamsal programlama C ile yukarıdan-aşağı programlama dizaynı Bölüm C++ Nesne tabanlı programlama (sınıflar, nesneler, gruplama) Nesne tabanlı programlama (kalıt, polimorfism) Genel programlama (sınıf (class) ve fonksiyon şablonları)

30 15.2 C++ C++ Bir çok C özelliğini geliştirdi Nesne tabanlı kapasiteye sahip Yazılım kalitesini ve tekrar kullanılabilirliğini artırır Bell Labs de Bjarne Stroustrup geliştirdi "sınıflı C " olarak adlandırılır C++ (artırma operatörü) - C nin gelişmiş sürümü C den çok üstün C++ derleyicisi C programlarını da derleyebilir C programlarını adım adım C++ a genişletir ANSI C++ Son sürümü de bedava Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 3

31 15.3 Bir Basit Program: İki Tamsayıyı Toplama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 4 Dosya uzantısı C dosyası:.c C++ dosyası:.cpp (kullandığımız),.cxx,.c (büyük harf) Farkları C++ da " açıklamlar için" // kullan Örneğin: // açıklama yazısı <iostream> - girdi çıktı (input/output) akışı header dosyası Gönderme tipleri tüm fonksiyonlar gönderme tipini belirtmelidir C de gerek yok, fakat C++ da gerekli C++ değişkenler hemen hemen her yerde deklare edilebilir C de herhangi bir işletilebilir deyimden önce blok olarak verilir

32 15.3 Bir Basit Program: İki Tamsayıyı Toplama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 5 C++ da Input/Output Karakter akışları(streams) ile gerçeklenir Akışlar input/output nesnesine gönderilir Output std::cout - standard çıktı akışı (ekrana bağlanır) << stream ekleme operatörü std::cout << merhaba"; merhaba" kelimesini std::cout a ekler yani yazar Input std::cin - standard input nesnesi (klavyeye bağlanır) >> stream alma operatörü std::cin >> değişken; Klavyeden akışı alır ve değişken e aktarır

33 15.3 Bir Basit Program: İki Tamsayıyı Toplama std::endl satır sonu" Akış düzenleyici yeni satır yazar ve çıktı desteğini temizler Bazı sistemler yazılacak yeterli tekst olana kadar çıktıyı görüntülemez std::endl tekstin görünmesini sağlar using deyimleri std:: önek in kaldırılmasına izin verir Sonra tartışılacak Taşırma Çoklu << veya >> operatörleri tek bir deyimde std::cout << Merhaba " << sınıf" << std::endl; Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 6

34 15.3 Bir Basit Program: İki Tamsayıyı Toplama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 7 1 // Fig. 15.1: fig15_01.cpp 2 // Toplama programı 3 #include <iostream> 4 5 int main() 6 { 7 int tam1, tam2, toplam; // deklarasyon 8 9 std::cout << İlk tamsayıyı gir\n"; // uyarı 10 std::cin >> tam1; // tamsayı oku 11 std::cout << İkinci tamsayıyı gir"; // uyarı 12 std::cin >> tam2; // tamsayı oku 13 toplam = tam1 + tam2; // toplama atama 14 std::cout << Toplam= " << toplam << std::endl; // yaz return 0; // program sonu 17 } İlk tamsayıyı gir 45 İkinci tamsayıyı gir 72 Toplam= 117

35 15.4 C++ Standard Kütüphanesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 8 C++ programları Fonksiyonlar ve Sınıflar dan oluşur Çoğu programcı kütüphane fonksiyonları kullanır C++ öğrenmenin iki kısmı Dili öğren Kütüphane fonksiyonlarını öğren Kendi fonksiyonlarını yaratma Avantaj: nasıl çalıştığını biliyorsunuzdur Dezavantaj: zaman alıcı, etkinliğini korumak ve iyi dizayn etmek zordur

36 15.5 Header Dosyaları Header dosyaları Her standard kütüphane header dosyalarına sahiptir Fonksiyon prototipleri, veri tipi tanımlamaları, ve sabitler içerir.h ile bitenler eski-tip" header-lardır Okuyucu tanımlı header dosyaları Kendi header dosyanı oluştur.h uzantılı olsun Diğer dosyalarda kullanmak için o dosyaya #include dosyam.h" ekle Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 9

37 15.6 Satıriçi (Inline) Fonksiyonları Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 10 Çağrılan fonksiyonlar Derleme zamanını uzatır Fonksiyonun önündeki inline belirteci fonksiyonun o yere kopyalanmasını sağlar Çağrılan fonksiyon yerine o fonksiyonun bir kopyasını koyar Hızı artırır fakat dosya boyutunu büyültür Derleyici inline belirtecini gözardı edebilir En küçük fonksiyonlar hariç diğerlerini gözardı eder inline double kup( const double s ) {returns * s * s;} Using deyimleri using std::cout; yazarak programda std::cout yerine cout yazabiliriz std::cin ve std::endl için de uygulanabilir

38 15.6 Satıriçi (Inline) Fonksiyonları bool Boolean yeni veri tipi, ya true ya da false olur C++ Anahtar kelimeleri C ve C++ dillerindeki ortak anahtar kelimeler auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Sadece C++ asm bool catch class const_cast delete dynamic_cast explicit false friend inline mutable namespace new operator private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_t Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 11

39 15.7 Referanslar ve Referans Parametreleri Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 12 Değer ile Çağırma Fonksiyona geçen verinin kopyası Kopyayı değiştirebilir fakat orjinali değil Referans ile Çağırma Fonksiyon veriye doğrudan erişim sağlayabilir Değişiklikler orjinali etkiler Argümentler için referans parametreleri & kullan void degistir(int &degisken) { degisken += 3; } Orjinal girdi değişkenine 3 ekler int y = &x y yi değiştirmekle x de değişir

40 Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " Referanslar ve Referans Parametreleri Sallantı referansları Referansları değişkenlere atadığınızdan emin olunuz Eğer fonksiyon bir değişkene referans gönderirse, değişkenin static olduğundan emin olunuz Aksi halde, otomatik olup fonksiyon bittiğinde yok olur Çoklu referanslar Pointer gibi her referansda & gerekli int &a, &b, &c;

41 1 // Fig. 15.5: fig15_05.cpp 2 // Referanslarla 15.7 Referanslar ve Referans Parametreleri 3 // değer ile çagğırma ve referans ile çağırma karşılaştırılması 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 int degerilekare( int ); 10 void refilekare( int & ); int main() 13 { 14 int x = 2, z = 4; cout << "x = " << x << " degerilekare den önce\n" 17 << " degerilekare nin gönderdiği değer: " 18 << degerilekare( x ) << endl 19 << "x = " << x << " degerilekareden sonra\n" << endl; cout << "z = " << z << " refilekare den önce " << endl; 22 refilekare( z ); 23 cout << "z = " << z << " refilekare den sonra " << endl; return 0; 26 } int degerilekare( int a ) 29 { 30 return a *= a; // çağırıcı argümenti değişmez 31 } C++ " Daha İyi Bir C " Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 14

42 Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " Referanslar ve Referans Parametreleri void refilekare( int &cref ) 34 { 35 cref *= cref; // çağirıcı argümenti değişti 36 } x = 2 degerilekare den önce degerilekare nin gönderdiği değer: 4 x = 2 degerilekare den sonra z = 4 refilekare den önce z = 16 refilekare den sonra

43 15.8 Default Argumentler ve Boş Parametre Listesi Fonksiyon parametresi yazılmaz ise, default değeri alır sabit, global değişken, veya fonksiyon çağrımı olabilir Yeterince parametre belirtilmemişse, en sağdakiler default larını alır Fonksiyon parametresinde default-ları kurma int fonksiyonum( int x = 1, int y = 2, int z = 3 ); Boş parametre listesi C de, boş parametre listesinin anlamı fonksiyonun herhangi bir argümenti almasıdır C++ ise fonksiyonun hiçbir argüment almamasıdır Fonksiyonun hiç bir parametre almayacağını deklare etmek için: Parantez içine void yaz veya boş bırak Prototipler: void fonk1( void ); void fonk2(); Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 16

44 Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 17 1 // Fig. 15.8: fig15_08.cpp 2 // default argümentler kullanma 15.8 Default Argumentler ve Boş Parametre Listesi 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int kubhacim( int uzunluk= 1, int genislik= 1, int yukseklik= 1 ); 9 10 int main() 11 { 12 cout << "default küb hacmi: " << kuphacim() 13 << "\n\n uzunluğu 10, genişliği 1 ve yüksekliği 1 \n" 14 << olan kübün hacmi: " << kubhacim( 10 ) 15 << "\n\n uzunluğu 10, genişliği 5 ve yüksekliği 1 \n" 16 << olan kübün hacmi: " << kubhacim( 10, 5 ) 17 << "\n\n uzunluğu 10, genişliği 5 ve yüksekliği 2\n" 18 << olan kübün hacmi: " << kubhacim( 10, 5, 2 ) 19 << endl; return 0; 22 } // Hacmi hesapla 25 int kubhacim( int uzunluk, int genislik, int yukseklik ) 26 { 27 return uzunluk * genislik * yukseklik; 28 }

45 15.8 Default Argumentler ve Boş Parametre Listesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 18 default küb hacmi: 1 uzunluğu 10, genişliği 1 ve yüksekliği 1 olan kübün hacmi: 10 uzunluğu 10, genişliği 5 ve yüksekliği 1 olan kübün hacmi: 50 uzunluğu 10, genişliği 5 ve yüksekliği 2 olan kübün hacmi: 100

46 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü Unary hedef karar operatörü (::) Yerel değişken aynı ada sahipse global değişkene erişim sağla degisken yerine ::degisken kullan static_cast<yenitip> (degisken) yenitip tipindeki degişken nin kopyasını oluşturur Int-leri float-lara, vs çevirir. Akış düzenleyicileri Çıktı formatını değiştirir setprecision float-lar için duyarlılığı kurar (default 6 rakam) setiosflags çıktıyı formatlar setwidth alan genişliğini kurar Bölüm 21-e bakınız Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 19

47 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü 1 // Fig. 15.9: fig15_09.cpp 2 // tek operandlı hedef karar operatörü 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 using std::ios; 8 9 #include <iomanip> using std::setprecision; 12 using std::setiosflags; 13 using std::setw; const double PI = ; int main() 18 { 19 const float PI = static_cast< float >( ::PI ); cout << setprecision( 20 ) 22 << " PI nin yerel float değeri = " << PI 23 << "\n PI nin global double değeri = " << ::PI << endl; cout << setw( 28 ) << PI nin yerel float değeri = " 26 << setiosflags( ios::fixed ios::showpoint ) 27 << setprecision( 10 ) << PI << endl; 28 return 0; 29 } Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 20

48 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 21 PI nin yerel float değeri = PI nin global double değeri = PI nin yerel float değeri = =

49 15.10 Fonksiyon Yüklemeleri Fonksiyon yüklemeleri: Aynı adlı farklı parametreli fonksiyonlar Yüklenmiş fonksiyonlar benzer görevleri yapmalıdırlar Tamsayıların karesini alan veya reel sayıların karesini alan fonksiyonlar gibi int kare( int x) {return x * x;} float square(float x) { return x * x; } Program fonksiyonu imzası ile çağırır İmza, fonksiyon adı ve parametre tipi ile belirlenir Tip emniyetli bağlantı uygun yüklenmiş fonksiyonu çağırmayı garanti eder Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 22

50 15.10 Fonksiyon Yüklemeleri Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 23 1 // Fig : fig15_10.cpp 2 // Yüklenmiş fonksiyon kullanımı 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int kare( int x ) { return x * x; } 9 10 double kare( double y ) { return y * y; } int main() 13 { 14 cout << 7 tamsayısının karesi " << kare( 7 ) 15 << "\n 7.5 reel (double)sayısının karesi " << kare( 7.5 ) 16 << endl; return 0; 19 } 7 tamsayısının karesi reel (double)sayısının karesi 56.25

51 15.11 Fonksiyon Şablonları Fonksiyon Şablonları Yüklenmiş fonksiyonlar oluşturmanın kompakt yolu Anahtar kelime template Her formal tip parametreden önce anahtar kelime class veya tipadı template < class T > // veya template< tipadı T > T kare( T deger1) { return deger1 * deger1; } T çağrılan fonksiyondaki tip parametresi ile yer değiştirecek int x; int y = kare(x); Eğer int parametre ise, tüm T ler int olur float, double, long... kullanılabilir Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 24

52 1 // Fig : fig15_11.cpp 2 // fonksiyon şablonu kullanımı 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 template < class T > 10 T maximum( T deger1, T deger2, T deger3 ) 11 { 12 T max = deger1; if ( deger2 > max ) 15 max = deger2; if ( deger3 > max ) 18 max = deger3; return max; 21 } int main() 24 { 25 int int1, int2, int3; cout << Üç tamsayı gir: "; 28 cin >> int1 >> int2 >> int3; 29 cout << maksimum: " Fonksiyon Şablonları 30 << maximum( int1, int2, int3 ); // int versiyon C++ " Daha İyi Bir C " Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 25

53 15.11 Fonksiyon Şablonları Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " double double1, double2, double3; cout << "\n Üç double değer gir: "; 35 cin >> double1 >> double2 >> double3; 36 cout << maksimum: " 37 << maximum( double1, double2, double3 ); // double versiyonu char char1, char2, char3; cout << "\n Üç karakter gir: "; 42 cin >> char1 >> char2 >> char3; 43 cout << maksimumn: " 44 << maximum( char1, char2, char3 ) // char versiyonu 45 << endl; return 0; 48 } Üç tamsayı gir: maksimum: 3 Üç double sayı gir : maksimum: 3.3 Üç karakter gir: A C B maksimum: C

54 Bölüm 15 - C++ " Daha İyi Bir C " Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 1 İçerik 15.1 Giriş 15.2 C Bir Basit Program: İki Tamsayıyı Toplama 15.4 C++ Standard Kütüphanesi 15.5 Header Dosyaları 15.6 Satıriçi (Inline) Fonksiyonları 15.7 Referanslar ve Referans Parametreleri 15.8 Default Argumentler ve Boş Parametre Listesi 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü Fonksiyon Yüklemeleri Fonksiyon Şablonları

55 15.1 Giriş Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 2 İlk 14 bölüm Yordamsal programlama C ile yukarıdan-aşağı programlama dizaynı Bölüm C++ Nesne tabanlı programlama (sınıflar, nesneler, gruplama) Nesne tabanlı programlama (kalıt, polimorfism) Genel programlama (sınıf (class) ve fonksiyon şablonları)

56 15.2 C++ C++ Bir çok C özelliğini geliştirdi Nesne tabanlı kapasiteye sahip Yazılım kalitesini ve tekrar kullanılabilirliğini artırır Bell Labs de Bjarne Stroustrup geliştirdi "sınıflı C " olarak adlandırılır C++ (artırma operatörü) - C nin gelişmiş sürümü C den çok üstün C++ derleyicisi C programlarını da derleyebilir C programlarını adım adım C++ a genişletir ANSI C++ Son sürümü de bedava Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 3

57 15.3 Bir Basit Program: İki Tamsayıyı Toplama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 4 Dosya uzantısı C dosyası:.c C++ dosyası:.cpp (kullandığımız),.cxx,.c (büyük harf) Farkları C++ da " açıklamlar için" // kullan Örneğin: // açıklama yazısı <iostream> - girdi çıktı (input/output) akışı header dosyası Gönderme tipleri tüm fonksiyonlar gönderme tipini belirtmelidir C de gerek yok, fakat C++ da gerekli C++ değişkenler hemen hemen her yerde deklare edilebilir C de herhangi bir işletilebilir deyimden önce blok olarak verilir

58 15.3 Bir Basit Program: İki Tamsayıyı Toplama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 5 C++ da Input/Output Karakter akışları(streams) ile gerçeklenir Akışlar input/output nesnesine gönderilir Output std::cout - standard çıktı akışı (ekrana bağlanır) << stream ekleme operatörü std::cout << merhaba"; merhaba" kelimesini std::cout a ekler yani yazar Input std::cin - standard input nesnesi (klavyeye bağlanır) >> stream alma operatörü std::cin >> değişken; Klavyeden akışı alır ve değişken e aktarır

59 15.3 Bir Basit Program: İki Tamsayıyı Toplama std::endl satır sonu" Akış düzenleyici yeni satır yazar ve çıktı desteğini temizler Bazı sistemler yazılacak yeterli tekst olana kadar çıktıyı görüntülemez std::endl tekstin görünmesini sağlar using deyimleri std:: önek in kaldırılmasına izin verir Sonra tartışılacak Taşırma Çoklu << veya >> operatörleri tek bir deyimde std::cout << Merhaba " << sınıf" << std::endl; Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 6

60 15.3 Bir Basit Program: İki Tamsayıyı Toplama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 7 1 // Fig. 15.1: fig15_01.cpp 2 // Toplama programı 3 #include <iostream> 4 5 int main() 6 { 7 int tam1, tam2, toplam; // deklarasyon 8 9 std::cout << İlk tamsayıyı gir\n"; // uyarı 10 std::cin >> tam1; // tamsayı oku 11 std::cout << İkinci tamsayıyı gir"; // uyarı 12 std::cin >> tam2; // tamsayı oku 13 toplam = tam1 + tam2; // toplama atama 14 std::cout << Toplam= " << toplam << std::endl; // yaz return 0; // program sonu 17 } İlk tamsayıyı gir 45 İkinci tamsayıyı gir 72 Toplam= 117

61 15.4 C++ Standard Kütüphanesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 8 C++ programları Fonksiyonlar ve Sınıflar dan oluşur Çoğu programcı kütüphane fonksiyonları kullanır C++ öğrenmenin iki kısmı Dili öğren Kütüphane fonksiyonlarını öğren Kendi fonksiyonlarını yaratma Avantaj: nasıl çalıştığını biliyorsunuzdur Dezavantaj: zaman alıcı, etkinliğini korumak ve iyi dizayn etmek zordur

62 15.5 Header Dosyaları Header dosyaları Her standard kütüphane header dosyalarına sahiptir Fonksiyon prototipleri, veri tipi tanımlamaları, ve sabitler içerir.h ile bitenler eski-tip" header-lardır Okuyucu tanımlı header dosyaları Kendi header dosyanı oluştur.h uzantılı olsun Diğer dosyalarda kullanmak için o dosyaya #include dosyam.h" ekle Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 9

63 15.6 Satıriçi (Inline) Fonksiyonları Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 10 Çağrılan fonksiyonlar Derleme zamanını uzatır Fonksiyonun önündeki inline belirteci fonksiyonun o yere kopyalanmasını sağlar Çağrılan fonksiyon yerine o fonksiyonun bir kopyasını koyar Hızı artırır fakat dosya boyutunu büyültür Derleyici inline belirtecini gözardı edebilir En küçük fonksiyonlar hariç diğerlerini gözardı eder inline double kup( const double s ) {returns * s * s;} Using deyimleri using std::cout; yazarak programda std::cout yerine cout yazabiliriz std::cin ve std::endl için de uygulanabilir

64 15.6 Satıriçi (Inline) Fonksiyonları bool Boolean yeni veri tipi, ya true ya da false olur C++ Anahtar kelimeleri C ve C++ dillerindeki ortak anahtar kelimeler auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while Sadece C++ asm bool catch class const_cast delete dynamic_cast explicit false friend inline mutable namespace new operator private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_t Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 11

65 15.7 Referanslar ve Referans Parametreleri Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 12 Değer ile Çağırma Fonksiyona geçen verinin kopyası Kopyayı değiştirebilir fakat orjinali değil Referans ile Çağırma Fonksiyon veriye doğrudan erişim sağlayabilir Değişiklikler orjinali etkiler Argümentler için referans parametreleri & kullan void degistir(int &degisken) { degisken += 3; } Orjinal girdi değişkenine 3 ekler int y = &x y yi değiştirmekle x de değişir

66 Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " Referanslar ve Referans Parametreleri Sallantı referansları Referansları değişkenlere atadığınızdan emin olunuz Eğer fonksiyon bir değişkene referans gönderirse, değişkenin static olduğundan emin olunuz Aksi halde, otomatik olup fonksiyon bittiğinde yok olur Çoklu referanslar Pointer gibi her referansda & gerekli int &a, &b, &c;

67 1 // Fig. 15.5: fig15_05.cpp 2 // Referanslarla 15.7 Referanslar ve Referans Parametreleri 3 // değer ile çagğırma ve referans ile çağırma karşılaştırılması 4 #include <iostream> 5 6 using std::cout; 7 using std::endl; 8 9 int degerilekare( int ); 10 void refilekare( int & ); int main() 13 { 14 int x = 2, z = 4; cout << "x = " << x << " degerilekare den önce\n" 17 << " degerilekare nin gönderdiği değer: " 18 << degerilekare( x ) << endl 19 << "x = " << x << " degerilekareden sonra\n" << endl; cout << "z = " << z << " refilekare den önce " << endl; 22 refilekare( z ); 23 cout << "z = " << z << " refilekare den sonra " << endl; return 0; 26 } int degerilekare( int a ) 29 { 30 return a *= a; // çağırıcı argümenti değişmez 31 } C++ " Daha İyi Bir C " Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 14

68 Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " Referanslar ve Referans Parametreleri void refilekare( int &cref ) 34 { 35 cref *= cref; // çağirıcı argümenti değişti 36 } x = 2 degerilekare den önce degerilekare nin gönderdiği değer: 4 x = 2 degerilekare den sonra z = 4 refilekare den önce z = 16 refilekare den sonra

69 15.8 Default Argumentler ve Boş Parametre Listesi Fonksiyon parametresi yazılmaz ise, default değeri alır sabit, global değişken, veya fonksiyon çağrımı olabilir Yeterince parametre belirtilmemişse, en sağdakiler default larını alır Fonksiyon parametresinde default-ları kurma int fonksiyonum( int x = 1, int y = 2, int z = 3 ); Boş parametre listesi C de, boş parametre listesinin anlamı fonksiyonun herhangi bir argümenti almasıdır C++ ise fonksiyonun hiçbir argüment almamasıdır Fonksiyonun hiç bir parametre almayacağını deklare etmek için: Parantez içine void yaz veya boş bırak Prototipler: void fonk1( void ); void fonk2(); Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 16

70 Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 17 1 // Fig. 15.8: fig15_08.cpp 2 // default argümentler kullanma 15.8 Default Argumentler ve Boş Parametre Listesi 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int kubhacim( int uzunluk= 1, int genislik= 1, int yukseklik= 1 ); 9 10 int main() 11 { 12 cout << "default küb hacmi: " << kuphacim() 13 << "\n\n uzunluğu 10, genişliği 1 ve yüksekliği 1 \n" 14 << olan kübün hacmi: " << kubhacim( 10 ) 15 << "\n\n uzunluğu 10, genişliği 5 ve yüksekliği 1 \n" 16 << olan kübün hacmi: " << kubhacim( 10, 5 ) 17 << "\n\n uzunluğu 10, genişliği 5 ve yüksekliği 2\n" 18 << olan kübün hacmi: " << kubhacim( 10, 5, 2 ) 19 << endl; return 0; 22 } // Hacmi hesapla 25 int kubhacim( int uzunluk, int genislik, int yukseklik ) 26 { 27 return uzunluk * genislik * yukseklik; 28 }

71 15.8 Default Argumentler ve Boş Parametre Listesi Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 18 default küb hacmi: 1 uzunluğu 10, genişliği 1 ve yüksekliği 1 olan kübün hacmi: 10 uzunluğu 10, genişliği 5 ve yüksekliği 1 olan kübün hacmi: 50 uzunluğu 10, genişliği 5 ve yüksekliği 2 olan kübün hacmi: 100

72 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü Unary hedef karar operatörü (::) Yerel değişken aynı ada sahipse global değişkene erişim sağla degisken yerine ::degisken kullan static_cast<yenitip> (degisken) yenitip tipindeki degişken nin kopyasını oluşturur Int-leri float-lara, vs çevirir. Akış düzenleyicileri Çıktı formatını değiştirir setprecision float-lar için duyarlılığı kurar (default 6 rakam) setiosflags çıktıyı formatlar setwidth alan genişliğini kurar Bölüm 21-e bakınız Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 19

73 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü 1 // Fig. 15.9: fig15_09.cpp 2 // tek operandlı hedef karar operatörü 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 using std::ios; 8 9 #include <iomanip> using std::setprecision; 12 using std::setiosflags; 13 using std::setw; const double PI = ; int main() 18 { 19 const float PI = static_cast< float >( ::PI ); cout << setprecision( 20 ) 22 << " PI nin yerel float değeri = " << PI 23 << "\n PI nin global double değeri = " << ::PI << endl; cout << setw( 28 ) << PI nin yerel float değeri = " 26 << setiosflags( ios::fixed ios::showpoint ) 27 << setprecision( 10 ) << PI << endl; 28 return 0; 29 } Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 20

74 15.9 Tek Operandlı(Unary) Hedef Karar Operatörü Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 21 PI nin yerel float değeri = PI nin global double değeri = PI nin yerel float değeri = =

75 15.10 Fonksiyon Yüklemeleri Fonksiyon yüklemeleri: Aynı adlı farklı parametreli fonksiyonlar Yüklenmiş fonksiyonlar benzer görevleri yapmalıdırlar Tamsayıların karesini alan veya reel sayıların karesini alan fonksiyonlar gibi int kare( int x) {return x * x;} float square(float x) { return x * x; } Program fonksiyonu imzası ile çağırır İmza, fonksiyon adı ve parametre tipi ile belirlenir Tip emniyetli bağlantı uygun yüklenmiş fonksiyonu çağırmayı garanti eder Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 22

76 15.10 Fonksiyon Yüklemeleri Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 23 1 // Fig : fig15_10.cpp 2 // Yüklenmiş fonksiyon kullanımı 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 int kare( int x ) { return x * x; } 9 10 double kare( double y ) { return y * y; } int main() 13 { 14 cout << 7 tamsayısının karesi " << kare( 7 ) 15 << "\n 7.5 reel (double)sayısının karesi " << kare( 7.5 ) 16 << endl; return 0; 19 } 7 tamsayısının karesi reel (double)sayısının karesi 56.25

77 15.11 Fonksiyon Şablonları Fonksiyon Şablonları Yüklenmiş fonksiyonlar oluşturmanın kompakt yolu Anahtar kelime template Her formal tip parametreden önce anahtar kelime class veya tipadı template < class T > // veya template< tipadı T > T kare( T deger1) { return deger1 * deger1; } T çağrılan fonksiyondaki tip parametresi ile yer değiştirecek int x; int y = kare(x); Eğer int parametre ise, tüm T ler int olur float, double, long... kullanılabilir Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " 24

78 1 // Fig : fig15_11.cpp 2 // fonksiyon şablonu kullanımı 3 #include <iostream> 4 5 using std::cout; 6 using std::cin; 7 using std::endl; 8 9 template < class T > 10 T maximum( T deger1, T deger2, T deger3 ) 11 { 12 T max = deger1; if ( deger2 > max ) 15 max = deger2; if ( deger3 > max ) 18 max = deger3; return max; 21 } int main() 24 { 25 int int1, int2, int3; cout << Üç tamsayı gir: "; 28 cin >> int1 >> int2 >> int3; 29 cout << maksimum: " Fonksiyon Şablonları 30 << maximum( int1, int2, int3 ); // int versiyon C++ " Daha İyi Bir C " Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 25

79 15.11 Fonksiyon Şablonları Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA C++ " Daha İyi Bir C " double double1, double2, double3; cout << "\n Üç double değer gir: "; 35 cin >> double1 >> double2 >> double3; 36 cout << maksimum: " 37 << maximum( double1, double2, double3 ); // double versiyonu char char1, char2, char3; cout << "\n Üç karakter gir: "; 42 cin >> char1 >> char2 >> char3; 43 cout << maksimumn: " 44 << maximum( char1, char2, char3 ) // char versiyonu 45 << endl; return 0; 48 } Üç tamsayı gir: maksimum: 3 Üç double sayı gir : maksimum: 3.3 Üç karakter gir: A C B maksimum: C

80 Bölüm 16 - Sınıflar (Class) ve Veri Soyutlaması Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 1 Ġçerik 16.1 Giriş 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama 16.3 Class Alanı ve Class Üyelerine Erişim 16.4 Bütünlemeden Arayüzü Ayırma 16.5 Üyelere Erişim Kontrolü 16.6 Erişim ve Yarar Fonksiyonları 16.7 Class Nesnelerini Belirleme: Oluşturucular (Constructors) 16.8 Oluşturucularla Default Argümentlerin Kullanımı 16.9 Yokedicilerin (Destructors) Kullanımı Oluşturucular ve Yokediciler Çağrıldığında Veri Üyelerini ve Üye Fonksiyonlarını Kullanma Bir Ġnce Tuzak: Özel (private) bir Veri Üyesine bir Referans Gönderme Default Üyebazlı Kopyayla Atama Yazılım Kullanılabilirliği

81 16.1 Giriş Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 2 Nesne -Tabanlı programlama (OOP) Verileri (nesne) ve fonksiyonları (davranış) class adı verilen paketlere yükleme Veri ve fonksiyonlar yakın ilişkiye sahiptir Bilgi gizleme Uygulama detayları class-ların içinde gizlidir C++ programlama birimi: class class bir mavi kopya (plan) gibidir tekrar kullanılabilirdir Nesneler class-lardan oluşturulur Örneğin, bir ev mavi kopya class dan oluşturulur C programcıları fonksiyonlara konsantre olurlar

82 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 3 Class Niteliklere (veri üyeleri) ve davranışlara (üye fonksiyonları) sahip olan model nesneleri class anahtar kelimesi ile tanımlanır 1 class Zaman { 2 public: 3 Zaman(); 4 void kurzaman( int, int, int ); 5 void yazaskeri(); 6 void yazstandard(); 7 private: 8 int saat; // int dakika; // int saniye; // }; Public: ve Private: üye erişim belirteçleridir kurzaman, yazaskeri, ve yazstandard üye fonksiyonlardır. Zaman oluşturucudur. saat, dakika, ve saniye veri üyeleridir.

83 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 4 Format Gövde küme parantezleri ({ ve }) içinde yazılır Class tanımı noktalıvirgül ile biter Üye fonksiyonlar ve veriler Public - Programın Zaman class nesnesine her erişitiğinde erişilebilirdir Private sadece class-ın üye fonksiyonlarına erişilebilirdir Protected sonra tartışılacak

84 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 5 Oluşturucu Bir class nesnesinin veri üyelerini belirten özel üye fonksiyondur Değer göndermez class ile aynı ada sahiptir Deklarasyonlar class tanımlandıktan sonra bir veri tipi olarak kullanılabilirdir Zaman aksam, zamandizisi[ 5 ], *zamanapointer, &yemekzamanı= aksam; Not: class adı yeni tip bir belirteç oldu. // Zaman tipi nesne // Zaman nesnesinin dizisi // nesneye pointer // bir Zaman nesnesine referans

85 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 6 Binary hedef karar operatörü (::) Üye fonksiyona hangi class-ın sahip olduğunu belirtir Farklı class-ların üye fonksiyonlar aynı ada sahip olabilir Tanım class-ı üye fonksiyonları için format Return_Tipi ClassAdı::ÜyeFonksiyonAdı( ){ }

86 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama Eğer üye fonksiyon class-ın içinde tanımlanmış ise Hedef karar operatörü ve class adına gerek yoktur Bir fonksiyonu class dışında tanımlamak public veya private olmasını değiştirmez Class-lar yazılımın tekrar kullanımını teşvik eder Kalıtsallık özelliği yeni class-ların eskilerinden üretilmesine izin verir Aşağıdaki programda Zaman oluşturucusu veri üyelerini sıfırlar Oluşum aşamasında nesnenin kararlı konumda olmasına emin olunuz Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 7

87 1 // Fig. 16.2: fig16_02.cpp 2 // Zaman class-ı. 3 #include <iostream> 4 5 using std::cout; 6 using std::endl; 7 8 // zaman soyut veri tipi tanımı 9 class Zaman { 10 public: 11 Zaman(); // oluşturucu 12 void kurzaman( int, int, int ); // saat dakika ve saniyeyi kur 13 void yazaskeri(); // askeri zaman formatında yaz 14 void yazstandard(); // standard zaman formatında yaz 15 private: 16 int saat; // int dakika; // int saniye; // }; // Zaman oluşturucu her bir veri üyesini sıfır alır. 22 // tüm Zaman nesnelerinin kararlı durumda olduğuna garantile. 23 Zaman::Zaman() { saat = dakika = saniye = 0; } // Askeri zamanı kullanarak yeni bir zaman değeri gir. Ğeçerliliğini kontrol et 26 // Geçersiz değerleri sıfır yap 27 void Zaman::kurZaman( int s, int d, int sn ) 28 { 29 saat = ( s >= 0 && s < 24 )? s : 0; 30 dakika = ( d >= 0 && d < 60 )? d : 0; 31 saniye= ( sn >= 0 && sn < 60 )? sn : 0; 32 } SINIFLAR VE VERİ SOYUTLAMASI 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA 8

88 Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI // Askeri formatta zamanı taz 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama 35 void Zaman::yazAskeri() 36 { 37 cout << ( saat < 10? "0" : "" ) << saat << ":" 38 << ( dakika < 10? "0" : "" ) << dakika; 39 } // Standart formatta zamanı yaz 42 void Zaman::yazStandard() 43 { 44 cout << ( ( saat == 0 saat == 12 )? 12 : saat % 12 ) 45 << ":" << ( dakika < 10? "0" : "" ) << dakika 46 << ":" << ( saniye < 10? "0" : "" ) << saniye 47 << ( saat < 12? " AM" : " PM" ); 48 } // Test et 51 int main() 52 { 53 Zaman t; // Zaman sınıfının t nesnesini belirle cout << Ġlk askeri zaman: "; 56 t.yazaskeri(); 57 cout << "\n Ġlk standart zaman: "; 58 t.yazstandard(); 59

89 16.2 Bir Zaman Soyut Veri Tipini bir Class ile Uygulama Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI t.kurzaman( 13, 27, 6 ); 61 cout << "\n\n kurzaman dan sonra askeri zaman: "; 62 t.yazaskeri(); 63 cout << "\n kurzaman dan sonra standart zaman: "; 64 t.yazstandard(); t.kurzaman( 99, 99, 99 ); // yanlış girdi dene 67 cout << "\n\n Yanlış girdiden sonra:" 68 << "\naskeri zaman: "; 69 t.yazaskeri(); 70 cout << "\nstandart zaman: "; 71 t.yazstandard(); 72 cout << endl; 73 return 0; 74 } Ġlk askeri zaman: 00:00 Ġlk standart zaman: 12:00:00 AM KurZaman dan sonra askeri zaman: 13:27 KurZaman dan sonra standart zaman: 1:27:06 PM Yanlış girdiden sonra: Askeri zaman: 00:00 Standard zaman: 12:00:00 AM

90 16.3 Class Alanı(Hedefi) ve Class Üyelerine Erişim Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 11 Class alanı Veri üyeleri ve Veri Fonksiyonlarına Erişim Dosya Alanı Üye olmayan fonksiyonlar Fonksiyon Alanı Üye fonksiyonlarda tanımlanan değişkenler, fonksiyon işi bitince yokedilirler Alan İçi Tüm üye fonksiyonlarca erişilebilinen üyeler İsim ile refere edilirler

91 16.3 Class Alanı(Hedefi) ve Class Üyelerine Erişim Alan dışı Bir kulp kullan Bir nesne adı, nesneye pointer veya nesneye referans Class üyelerine erişim struct daki gibidir Nesneler için nokta (.) veya pointer-lar için ok (->) Örnek: t.saat, t nin saat elemanıdır zamanptr->saat saat elemanıdır Nuri ÖZALP (ANKARA ÜNİVERSİTESİ) İLERİ PROGRAMLAMA SINIFLAR VE VERİ SOYUTLAMASI 12

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin); case 2 : C = 0.5088-0.0011*(B-135); break; case 3 : C = 0.4978-0.0010*(B-145); break; case 4 : C = 0.4878-0.0009*(B-155); break; default : printf("yanlış seçenek\n");} cout

Detaylı

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 5. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 5. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Programlamaya Giriş Yük. Müh. Köksal Gündoğdu 2 Programlama Dili Bilgisayar dünyası 1960 lardan bu yana pek çok dille tanıştı.

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Özlem AYDIN NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü C DİLİNİN BİR ÜST-KÜMESİ OLARAK C++ Genel olarak, C de mevcut olan her şey C++ da da vardır. C dilinde

Detaylı

Bölüm 2 - C ile Programlamaya Giriş

Bölüm 2 - C ile Programlamaya Giriş 1 Bölüm 2 - C ile Programlamaya Giriş Başlıklar 2.1 Giriş 2.2 Basit C Programları: Bir Metni Yazdırmak 2.3 Basit C Programları: İki Tam Sayıyı Toplamak 2.4 Hafıza Konuları 2.5 C de Aritmetik 2.6 Karar

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

BMT 106 Algoritma ve Programlama II Bahar Dönemi

BMT 106 Algoritma ve Programlama II Bahar Dönemi BMT 106 Algoritma ve Programlama II 2016 2017 Bahar Dönemi DERS AKIŞI 1. C++ a Giriş, Veri Tipleri Yorum Satırı, Bool İfadesi, If Else Kullanımı, If Else Yapısı Örnekleri, Switch Case Yapısı, Operatörler

Detaylı

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.

Detaylı

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Çalıştırılabilir C ifadeleri ya bir işlem gerçekleştirir ( girilen verilerin toplanması

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

Eln 1002 Bilgisayar Programlama II

Eln 1002 Bilgisayar Programlama II Eln 1002 Bilgisayar Programlama II C»de Dosya ğşleme : S¹ral¹ EriŞim Ne ÖĆreneceĆiz? Dosyalar ve Streamler Sequential (sıralı) erişim dosyaların yaratılması Sıralı Erişim Dosyalarından Veri Okuma Sıralı

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır: C VERİ TÜRLERİ BASİT VERİ TÜRLERİ Değişkenler, program içinde üzerinde işlem yapılan, veri saklanan ve durumlarına göre programın akışı sağlanan nesnelerdir. C de bir değişken kullanılmadan önce tanımlanmalıdır.

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Veri Hiyerarşisi Dosyalar ve Akımlar(streams) Sıralı Erişim (Sequential Access) dosyalarının oluşturulması Sıralı Erişim Dosyalarından Veri Okuma Rasgele

Detaylı

10/17/2007 Nesneye Yonelik Programlama 3.1

10/17/2007 Nesneye Yonelik Programlama 3.1 Procedure-Based Programming in C++ Çoğu gerçek dünya problemleri binlerce kod satırı gerektirir ( MS Windows NT 5.0 25 million dan fazla kod satırından oluşmaktadır). Yazılımın tasarımı, kodlanması ve

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 11: Bileşim, Arkadaş ve Diğer Araçlar İçerik Bileşim Arkadaş Fonksiyonlar ve Sınıflar Arkadaş Fonksiyonlar Arkadaş Sınıflar Sabit Nesneler Sabit Üye Fonksiyonlar

Detaylı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar Fonksiyon Tanımı Karmaşıkveuzunprogramları,

Detaylı

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER C programlama dilinde, değişken, sabit, etiket ve fonksiyon isimleri programcı tarafından tanımlanır. İsimler, İngiliz alfabesini oluşturan 26 harf kullanılarak

Detaylı

Fonksiyonlar -Genel Test- A

Fonksiyonlar -Genel Test- A 1 Fonksiyonlar -Genel Test- A 1. C dilinde fonksiyon bildirimi için hangisi gereklidir? (a) Fonksiyonun döndüreceği veri tipi (b) Fonksionun adı (c) Fonksiyon parantezi ( ) (d) Hepsi 2. C dilinde fonksion

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri BLM-111 PROGRAMLAMA DİLLERİ I Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Temel Veri Tipleri C dilinde

Detaylı

Sınav tarihi : Süre : 60 dak.

Sınav tarihi : Süre : 60 dak. Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Final Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 31.05.2016 Süre : 60 dak. 1. Ekranda ne görüntülenir? int i =

Detaylı

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?

Detaylı

DOSYA İŞLEMLERİ Programlama dilleri hafta -

DOSYA İŞLEMLERİ Programlama dilleri hafta - BİLECİK ŞEYH EDEBALİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ DOSYA İŞLEMLERİ Programlama dilleri 1-10. hafta - Araş. Gör. Nesibe YALÇIN Dosya İşlemleri Programın çalışma esnasında

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 10: Yapıcı ve Yıkıcı Fonksiyonlar Yapıcı Fonksiyonlar İçerik Yapıcı Fonksiyon Tanımı Üyelere İlk Atama Yapıcı Fonksiyonu Yükleme Yapıcı Fonksiyon Çağırımı Kopya

Detaylı

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü

String ve Karakter Dizileri. Yrd. Doç. Dr. Fehim KÖYLÜ Erciyes Üniversitesi Bilgisayar Mühendisliği Bölümü String ve Karakter Dizileri #include Temel giriş çıkış akımları nesnelerinin tanımlandığı kütüphanedir. cin,cout,cerr,clog, wcin,wcout,wcerr,wclog nesneleri içerir. using namespace std; //std

Detaylı

KONU 7: DOSYA İŞLEME ( File Processing )

KONU 7: DOSYA İŞLEME ( File Processing ) DERS: PROGRAMLAMA DİLLERİ 1 DÖNEM: 2002-2003 Güz yarı yılı KONU 7: DOSYA İŞLEME ( File Processing ) HEDEFLER: 1- Dosyaları yaratabilme, okuyabilme, yazabilme ve güncelleyebilme 2- Sıralı erişim dosyalarını

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-8 Dosya İşlemleri-1. Yrd. Doç. Dr. Ümit ATİLA BLM-112 PROGRAMLAMA DİLLERİ II Ders-8 Dosya İşlemleri-1 Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Giriş Değişken ve dizilerde tutulan değerler programın çalışması

Detaylı

Eln 1001 Bilgisayar Programlama I

Eln 1001 Bilgisayar Programlama I Eln 1001 Bilgisayar Programlama I GiriŞ / ǹk¹Ş Fonksiyonlar¹ Ne ÖĆreneceĆiz? Temel Giriş/Çıkış Yapısı Giriş Fonksiyonları Karakterler için giriş fonksiyonları Scanf fonksiyonu Formatlı giriş Çıkış Fonksiyonları

Detaylı

Hafta 13 Fonksiyonlar

Hafta 13 Fonksiyonlar BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.

Detaylı

Algoritma ve Programlama: Karar Yapıları ve Döngüler

Algoritma ve Programlama: Karar Yapıları ve Döngüler Algoritma ve Programlama: Karar Yapıları ve Döngüler Bir algoritma, herhangi bir programlama dili (C, C++, Pascal, Visual Basic, Java gibi) ile kodlandığında program haline gelir. Algoritmada yer alan

Detaylı

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Nisan 2009 9031150 - Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım Referans: Bugün: 1. Ders Notları. Ders #4.1 Tekrar Dowhile ve for döngüleri Diziler Göstergeler 1. Tekrar for döngüleri Genel yazılımı

Detaylı

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, C++ İÇİN UFAK HATIRLATMALAR Değişken adları bir harf ile başlamalıdır. (a-z, A-Z). Değişken adı numara içerebilir.

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur.

C++ Statements. { ve } arasında ifade edilen bir dizi statement bir compound statement (birleşik ifade) oluşturur. C++ Statements En küçük çalışabilir birime statement (ifade) denir. Statements semicolon (;) ile sonlandırılır. Yalnız başına ; null statement ifade eder Örnek: while (*str++ = *inbuf++) ; { ve } arasında

Detaylı

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI 10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI İkincil bellekte tanımlanmış bölgelere dosya denir. Her dosyanın bir ismi vardır. Ancak dosyaların isimlendirme kuralları sistemden sisteme göre değişebilmektedir. Dosya

Detaylı

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama İçerik Java da İşleçler, Kontrol Akış ve Döngü Deyimleri Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu ders: Java da işleçler ( operators ) Java da kontrol-akış

Detaylı

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN ESM-361 Mikroişlemciler 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN Bit operatörleri Bit operatörleri bit düzeyinde işlem yapan operatörlerdir; yani sayıları bir bütün olarak değil, bit bit

Detaylı

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ C PROGRAMLAMA DİLİ C Programlama Dilinin Temelleri C Programlama Dili'ni popüler kılan önemli nedenler aşağıda listelenmiştir: C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir,

Detaylı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.

Detaylı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-12 Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı

Detaylı

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 6. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Veri Tipleri Yük. Müh. Köksal Gündoğdu 2 Veri Tipleri Tam sayı ve Ondalık sayı veri tipleri Veri Tipi Alt Sınıf Üst Sınıf Duyarlı

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 15.02.2011 1 Genel Programlama Tekrar Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Önceki bölümde bir problemin çözümü ile

Detaylı

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java da İşleçler, Ders #3 (4 Kasım 2009) Java da İşleçler, Kontrol Akış ve Döngü Deyimleri BS-515 Nesneye Yönelik Programlama Ders #3 (4 Kasım 2009) İçerikç Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Veri Hiyerarşisi Dosyalara Giriş

Detaylı

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU Diziler Yrd.Doç.Dr.Bülent ÇOBANOĞLU Dizi (Array) Nedir? Bellekte sürekli yer kaplayan artarda sıralanmış aynı türden verilerin oluşturduğu kümeye dizi (array) denir. Dizi, çok fazla miktardaki tek tip

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 6: Diziler İçerik Diziler Dizi Elemanlarına İlk Atama Diziler ve Fonksiyonlar İki Boyutlu Diziler İki Boyutlu Dizi Tanımı İki Boyutlu Dizi Elemanlarına Erişim

Detaylı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve

Detaylı

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon

Detaylı

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler

Programlama Dilleri 1. Ders 12: Belirleyiciler ve Niteleyiciler Programlama Dilleri 1 Ders 12: Belirleyiciler ve Niteleyiciler Genel Bakış Giriş Yer Belirleyicilerle Bildirim İşlemi auto Belirleyicisi register Belirleyicisi static Belirleyicisi Statik ve Global Değişkenlerin

Detaylı

Ders 2: Veri Tipleri, Değişkenler ve Sabitler

Ders 2: Veri Tipleri, Değişkenler ve Sabitler Ders 2: Veri Tipleri, Değişkenler ve Sabitler Giriş Orta ve yüksek seviyeli dillerin hemen hemen hepsinde veri tipi ve değişken kavramı bulunmaktadır. Bu kısımda C programlama dilindeki temel veri tipleri,

Detaylı

Temel Dosya İşlemleri. Kütük Organizasyonu 1

Temel Dosya İşlemleri. Kütük Organizasyonu 1 Temel Dosya İşlemleri Kütük Organizasyonu 1 Dosyaların Temel İşlemleri Bilgiler dosyada belirli bir düzen içerisinde yer alırlar Örn: ALAN THARP 100 100 100 JOHN BISHOP 70 80 75 PAUL AUSTER Bir satırda

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

Fonksiyonlar (Altprogram)

Fonksiyonlar (Altprogram) Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.

Detaylı

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)

Detaylı

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2; Dosya İşlemleri Nedir? Programlarınızı girdi (input) olarak aldığı verileri bir text dosyasında yada word dosyasında vb. saklamasıdır. Artık C programınızın yaratıp içine veriler koyacağı text dosyasını

Detaylı

Temel Giriş/Çıkış Fonksiyonları

Temel Giriş/Çıkış Fonksiyonları Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden

Detaylı

C Programlama Dilinde Değişkenler

C Programlama Dilinde Değişkenler C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DİNAMİK BELLEK YÖNETİMİ TEMEL G/Ç FONKSİYONLARI Dinamik Bellek Tahsisi Tanımlanmış olan dizilere eleman sayısı ve elemanlarının tiplerine göre, sistem belleğinde bir yer

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır stringh floath Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır 32 Sorgulama İfadesi - if Deyimi (5 Hafta) Bu deyim sorgulamanın tek basamakta yapılacağı yerlerde

Detaylı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap

Detaylı

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf İçindekiler 1. Giriş... 1 1.2. c++ Programı Yapısı... 2 1.3.Using Direktifi... 5 Bölüm 2. Veri türleri, değişken kavramı, sabit ve değişken bildirimleri ve c++ da kullanımı 7 2.1. Temel veri türleri...

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN GİRİŞ Değişken ve dizilerde tutulan değerler programın çalışması esnasında değerlerini korurlarken programın çalışması sona erdiğinde veri kaybolur. Dosyalar verinin kalıcı olarak

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş math Kütüphane Fonksiyonları Çok Parametreyle Fonksiyon Tanımı Fonksiyon

Detaylı

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü Metin Dosyaları Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü Metin Dosyaları Metin dosyaları, verileri bir kere hazırlayıp, ikincil saklama

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 14: Çoklu İşlev İçerik Çoklu İşlevin Gerçekleştirilmesi Saf Sanal Fonksiyonlar ve Soyut Sınıflar Sanal Yıkıcı Fonksiyonlar Statik ve Dinamik Bağlama 2 Çoklu İşlev

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA İŞARETÇİ ELEMANLI SINIFLAR REFERANSLAR OPERATÖRLERİN AŞIRI YÜKLENMESİ ATAMA OPERATÖRÜ Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü İşaretçi Elemanlı Sınıflar

Detaylı

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

Detaylı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki

Detaylı

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 Bölüm 11 Soyut veri tipleri ve kapsülleme kavramları ISBN 0-321-49362-1 11. Bölüm konuları Soyutlama kavramı Veri soyutlamasına giriş Soyut veri tipleri için tasarım konuları Dil örnekleri Parametreli

Detaylı

Giris {\} /\ Suhap SAHIN Onur GÖK

Giris {\} /\ Suhap SAHIN Onur GÖK Giris 0 \ /\ Suhap SAHIN Onur GÖK Fonksiyon C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) main() main() C: Ana Fonksiyon(main) Giris? main() Çıkıs main() C: Ana Fonksiyon(main) void main()

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 1 (Değerler, Değişkenler, İşleçler, Tip Dönüşümleri, Mantıksal Operatörler) Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN GİRİŞ Değişken ve dizilerde tutulan değerler programın çalışması esnasında değerlerini korurlarken programın çalışması sona erdiğinde veri kaybolur. Dosyalar verinin kalıcı olarak

Detaylı

int printf (const char *format [, argument,...]);

int printf (const char *format [, argument,...]); 1 printf (): Fonksiyonu Sayısal ve alfanümerik değerleri ekrana (çıkış elemanı olarak tanımlı ise) göndermek için kullanılan formatlı çıkış fonksiyonudur. Bu fonksiyon stdio.h başlık dosyası altında tanımlıdır.

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

C PROGRAMLAMA DİLİNE GİRİŞ

C PROGRAMLAMA DİLİNE GİRİŞ C PROGRAMLAMA DİLİNE GİRİŞ C Dilinin Tarihçesi 1972 de Dennis Ritchie tarafından AT&T Bell Laboratuarlarında B dilinden geliştirildi. C dili konusundaki ilk kitap 1978 de Dennis Ritchie ve Brain Kernighan

Detaylı

Temel Bilgisayar Programlama

Temel Bilgisayar Programlama BÖLÜM 11: : Birçok programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. Bütün programlama dillerinde, sabit disk sürücüsü (Hard Disk Drive, HDD) üzerindeki verileri okumak veya diske veri

Detaylı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Esnek Argümanlı Fonksiyonlar main() Fonksiyonuna Parametre Aktarımı

Detaylı

BTEP243 Ders 3. class Yazım Kuralı:

BTEP243 Ders 3. class Yazım Kuralı: BTEP243 Ders 3 Sınıflar ve Nesneler Nesne tabanlı programlamada, programlamanın temeli sınıflardır (class). Nesnelerin yaratılmasında taslak (blueprint) görevi görür. Sınıflar; o Nesnelerin özelliklerinin

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I C & C++ İlk Program Sabitler, Değişkenler Veri Tipleri, Operatörler Koşullar ve Karar Verme C & C++ C++, 80 li yılların başında AT&T Bell Laboratuarlarında geliştirilmiştir.

Detaylı

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b. Diziler Dizi Nedir Ortak özelliğe sahip birden fazla bilginin oluşturduğu bütün bilgi kümelerine veya hafızada art arda sıralanmış aynı türden verilerin oluşturduğu yapıya dizi denir. Kısaca; Bellekte

Detaylı

BÖLÜM 11: YAPISAL VERİ TİPLERİ

BÖLÜM 11: YAPISAL VERİ TİPLERİ BÖLÜM 11: YAPISAL VERİ TİPLERİ I. STRUCTURE-YAPI (struct) TİPİ DEĞİŞKENLER Birbiriyle bağlantılı ve bir küme teşkil eden değerler bir tek değişkenin çatısı altında bu değişkenin alt alanları olarak tanımlanabilirler.

Detaylı

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir

Detaylı

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders08/ 1 Yapısal Veri Tipleri C dili genişletilebilen bir dildir. Var olan veri tipleri kullanılarak yeni veri tipleri tanımlanıp kullanılabilir. Programlama

Detaylı

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar: Dosyalama Çoğu programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. C programlama dilinde, disk dosyasına erişme (okuma ve yazma için) iki farklı yöntemle yapılır. Bunlar üst düzey ve alt

Detaylı

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ Yrd.Doç.Dr. Emel ARSLAN earslan@istanbul.edu.tr C DİLİNDE FONKSİYONLAR C DİLİNDE FONKSİYONLAR C programlama dili fonksiyon olarak adlandırılan alt programların

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA SANAL FONKSİYONLAR VE ÇOK BİÇİMLİLİK Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü GİRİŞ C++, hem derleyici-zamanlı hem de çalışmazamanlı çok biçimliliği destekler.

Detaylı

Veri Yapıları Lab Notları 1

Veri Yapıları Lab Notları 1 C++ Programlama Dili Veri Yapıları Lab Notları 1 C++ dili, hızlı ve düşük seviye özelliklere erişmek isteyen uygulamaların yazılması için popüler bir dildir. C programlama diline birçok ekstra özellik

Detaylı