BİL102 - Bilgisayar Yazılımı II Özet Ders Notları

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

Download "BİL102 - Bilgisayar Yazılımı II Özet Ders Notları"

Transkript

1 BİL102 - Bilgisayar Yazılımı II Özet Ders Notları Halil Özmen Bu notlar, Başkent Üniversitesindeki BİL102 Bilgisayar Yazılımı II dersini veren öğretmenlerin konuları eksiksiz anlatmaları için, bir kontrol listesi olması amacıyla hazırlanmıştır. Kapsamlı ders notları değildir, önerilen ders kitapları yerine geçmez. Özet bilgi içerir, detayları eğitimci ders sırasında anlatmalıdır. Öğrencinin, bu notların yanı sıra, mutlaka ders notu tutması ve önerilen ders kitabını kullanması gerekir. Kaynak: "C How To Program, 8th Ed.", Deitel & Deitel. İÇİNDEKİLER 1. Göstericiler (Pointers) Dizgiler (Strings) Yapılar (Structures) Dosyalar (Files) C++'a Giriş Nesne Yönelimli Programlama (Object Oriented Programming) Operatör Aşırı Yükleme (Operator Overloading) Kalıtım (Inheritance) Göstericiler (Pointers) Gösterici (pointer): Göstericiler başka verilerin adreslerini içeren nesnelerdir. Göstericiler, program çalışırken, başka nesnelerin bellekteki adreslerini içerirler. Gösterici bir veri yapısının (değişken, dizi, dizgi, yapı, vs) adresini içerebileceği gibi, bir fonksiyonun adresini de içerebilir. BİL102 kapsamında sadece veri adresi içeren göstericiler işlenecektir. Göstericiler bazen programlamayı kolaylaştırırlar. Bazı işlemler ise göstericiler olmaksızın yapılamazlar. Gösterici tanımlanması ve değer atanması: int sayac; // int değişken tanımlanması int *sayacptr = NULL; // int değişkene gösterici tanımlanması sayacptr = &sayac; // Gösterici sayac değişkeninin adresini içeriyor Göstericiler ile ilgili operatörler: & operatörü: Adres operatörüdür, sağındaki nesnenin adresini oluşturur. &a a değişkeninin adresi. &aptr aptr nesnesinin adresi. * operatörü: Bir adresteki verinin kendisini veren operatördür. *aptr aptr'ın gösterdiği adresteki veri. aptr = &a; printf("%d\n", *aptr); // a'nın adresi // a'nın değeri yazdırılıyor. NULL Gösterici: Bazen bir gösterici hiçbir veriyi göstermeyebilir. Bu durumda değeri NULL olur. Bunlara NULL gösterici denir. (Dizgilerde kullanımı gösterilecektir.)

2 int *xptr; xptr = NULL; Parametre Geçirme Türleri: C dilinde parametreler fonksiyonlara iki türlü geçirilirler: Değer-ile-geçirme (pass-by-value): Gönderilen parametrenin bir kopyası fonksiyonda oluşturulur, fonksiyon bu kopyayı kullanır. Fonksiyonun çağırıldığı yerdeki parametre etkilenmez. Adres-ile-geçirme (pass-by-reference): Fonksiyona nesnenin adresi veya referansı gönderilir. Fonksiyon bu adresi (referansı) kullanır. int a = 77, b = 12; int *aptr = &a; fonk1(a, b); fonk2(&a, b); fonk3(aptr, b); // Her 2 parametre değer-ile-geçiriliyor. // 1. parametre adres-ile-geçiriliyor. // 1. parametre gösterici, yani adres içeriyor. Göstericiler ve diziler arasındaki ilişkiler: int a = 77; int arr[100]; int j; int *aptr = &a; int *arrptr; arrptr = arr; Yukarıdaki program parçasındaki tanımlara göre, şu yazımlar eşdeğerdir ya da aynı sonucu verir. a *aptr *aptr a'nın değerini verir arr &arr[0] arr tek başına dizinin başlangıç adresini verir. arr[j] *(arr + j) Her iki yazım eşdeğerdir. Dizinin j'ninci elemanının değeri. *arrptr arrptr[0] *(arrptr+j) arrptr[j] arr[j] arrptr[j] Göstericiler üzerinde aritmetik işlemler: Eğer bir gösterici, dizinin bir elemanını gösteriyorsa, gösterici artırıldığında dizinin bir sonraki elemanını gösterir. int dizi[100] = 12, 4, 8, 41, 70, 3, 28, 32, 0, 16; int *dptr; dptr = dizi; // dptr dizinin başlangıç adresi. Veya: dptr = &dizi[0]; printf("%d, ", *dptr); // 12 dptr++; // dizinin sonraki elemanının adresi olur. Yani: &dizi[1] printf("%d, ", *dptr); // 4 const Kullanımı: Eğer bir parametre fonksiyonda değiştirilmeyecekse, const sözcüğü ile tanımlanmalıdır. void diziyaz(const char *baslik, int *diziptr, const int n) int j; printf("%s\n", baslik); for (j = 0; j < n-1; j++) // Sonuncu hariç diziyi dolas. printf ("%d, ", *diziptr); diziptr++; printf("%d\n", *diziptr); // Sonuncusunu yaz ve satir basi yap. // end diziyaz BİL102 - Özet Ders Notları 2 Halil Özmen

3 2. Dizgiler (Strings) Dizgiler içinde karakterler barındıran veri yapılarıdır. Karakterler ASCII tablosundaki kodlarla tutulurlar. Dizgiler C dilinde, char dizisi olarak tanımlanır. Dizgideki son karakterden sonra mutlaka '\0' (NULL karakter) gelir. NULL karakter sadece 1 byte uzunluğundadır ve göstericilerdeki NULL değerinden (4 veya 8 byte) farklıdır. Programın daha okunaklı olması için NULLCHAR deyiminin tanımlanması ve kullanılması yararlıdır. #define NULLCHAR '\0' Dizgi tanımlanması: char ad[40]; // NULL karakter olacağı için en çok 39 karakter alır. Sabit dizgiler: Sabit dizgiler çift-tırnak " ile başlar ve biter. "Bizim galaksimizin adı Samanyolu Galaksisi'dir." "Bu çift tirnak \" içeren bir dizgi!" "Burada \"iki çift tirnak\" var." Dizgi değişkene sabit dizgi atamak: bir dizgi değişkene tanımlama sırasında atanabilir, veya daha sonra strcpy komutu kullanarak sabit dizgi atanabilir. char sehir[20] = "Antalya"; // Tanımlama sırasında dizgi atama. char sehir[] = "Antalya"; // Sadece 8 byte yer tutar. char sehir[20]; // NULL karakter olacağı için en çok 19 karakter alır. strcpy (sehir, "Antalya"); İndeks İçerik A n t a l y a \0 Belirsiz. char sehir[20]; // NULL karakter olacağı için en çok 19 karakter alır. strcpy (sehir, "Buenos Aires"); strcpy (sehir, "Antalya"); İndeks İlk hali B u e n o s A i r e s \0 Sonraki A n t a l y a \0 i r e s \0 Dizgi sonu. Belirsiz. Karakter Fonksiyonları <ctype.h> ın programa dahil edilmesi gereklidir (#include <ctype.h>). int isblank(int c) int isspace(int c) int isdigit(int c) int isalpha(int c) int isalnum(int c) int islower(int c) int isupper(int c) Parametre olarak verilen karakter boşluk karakteri (' ') ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. Parametre olarak verilen karakter beyaz boşluk karakterlerinden biri (' ', '\t', veya '\n', vs.) ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. Parametre olarak verilen karakter rakam karakteri ('0' '1' '2'... '9') ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. Parametre olarak verilen karakter harf ('A' - 'Z', 'a' - 'z') ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. Parametre olarak verilen karakter, alfa-nümerik (rakam veya harf) ('0' - '9', 'A' - 'Z', 'a' - 'z') ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. Parametre olarak verilen karakter, küçük harf ('a' - 'z') ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. Parametre olarak verilen karakter, büyük harf ('A' - 'Z') ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. BİL102 - Özet Ders Notları 3 Halil Özmen

4 int ispunct(int c) Parametre olarak verilen karakter, rakam, harf veya boşluk dışındaki basılabilen karakterlerden biri ('.' ',' '!', '(' ')' '&' vs...) ise, 1 yani doğru döndürür, değilse 0 yani yanlış döndürür. int tolower(int c) Parametre olarak verilen karakter, eğer büyük harf ('A' - 'Z') ise onun küçük harfini döndürür, değilse karakterin kendisini değiştirmeden döndürür. int toupper(int c) Parametre olarak verilen karakter, eğer küçük harf ('a' - 'z') ise onun büyük harfini döndürür, değilse karakterin kendisini değiştirmeden döndürür. Dizgi Düzenleme Fonksiyonları <string.h> ın programa dahil edilmesi gereklidir (#include <string.h>). char *strcpy(char *s1, const char *s2) char *strncpy(char *s1, const char *s2, size_t n) char *strcat(char *s1, const char *s2) char *strncat(char *s1, const char *s2, size_t n) Örnekler: s2 dizgisini s1'e kopyalar. s1'i döndürür. s2 dizgisinin en çok ilk n karakterini s1'e kopyalar. Eğer s2 de n'den daha az karakter varsa NULL karakteri kopyaladıktan sonra durur. s1'i döndürür. s2 dizgisini s1'in sonuna ekler. s2'nin ilk karakteri s1'in sonundaki NULL karakterin üzerine kopyalanır. s1'i döndürür. s2 dizgisinin en çok ilk n karakterini s1'in sonuna ekler. s2'nin ilk karakteri s1'in sonundaki NULL karakterin üzerine kopyalanır. s1'i döndürür. char d1[40] = "Akdeniz"; char d2[40], d3[40]; strcpy(d2, d1); // d1'i d2'ye kopyalar. d2 <= "Akdeniz" strcpy(d3, d1+2); // d1+2 adresinden sonrasini d3'ye kopyalar: "deniz" strcat(d2, d3); // d2 <= "Akdenizdeniz" u1 = strlen(d1); // u1 = 7 strncat(d1, d3, 3); // d1 <= "Akdenizden" d1[u1+3] = '\0'; // strncat NULL character koymadığı için bu gerekli. Dizgi giriş ve çıkış işlemleri ve fonksiyonları int getchar(void) Standart girdiden bir sonraki c = getchar(); karakteri okur ve döndürür. char *gets(char *s) Standart girdiden satır okur. gets(str); int scanf("%s", dizgi); Boşluğa kadarki girdiyi okur. scanf("%s", ad); Birden çok kelime okunacaksa, gets() kullanmak gerekir. int printf("%s",dizgi); Verilen dizgiyi yazar. sprintf("ad: %s\n", ad); int putchar(int c) Verilen karakteri yazar. putchar(c); int puts(const char *s) Verilen dizgiyi yazar ve satırbaşı puts(str); yapar. int sprintf(char *s,const char *format,...) Verilen dizginin içine yazar. sprintf(str, "%d %.2lf", k, x); int sscanf(char *s,const char *format,...) Verilen dizginin içinden okur. sscanf(str, "%d %d", m, n); Örnekler: char d1[40], d2[40]; scanf("%s", d1); // girdideki boşluğa kadarki kısmı d1'e koyar. gets(d2); // Girdideki tüm satırı okur ve d2'ye koyar. printf("%s", d2); // d2 dizgisini yazar. puts(d2); // d2 dizgisini yazar ve satır-başı yapar. Dizgi Karşılaştırma Fonksiyonları int strcmp(const char *s1, const char *s2); s1 ve s2'yi ASCII kod olarak karşılaştırır. s1 s2'ye eşitse 0, büyükse pozitif sayı, küçükse negatif sayı döndürür. BİL102 - Özet Ders Notları 4 Halil Özmen

5 int strncmp(const char *s1, const char *s2, size_t n); Örnekler: s1 ve s2'nin en çok ilk n karakterini ASCII kod olarak karşılaştırır, birinin uzunluğu n'den azsa onun uzunluğu kadar karşılaştırır. Eşitse 0, ilkindeki büyükse pozitif sayı, küçükse negatif sayı döndürür. char d1[] = "Ankara"; char d2[] = "Antalya"; char d3[] = "Ankara"; if (strcmp(d1, d2) > 0) // d1 d2'den küçük (önce) olduğu için negatif sayı döndürür ==> Yanlış.... if (strcmp(d1, d3) == 0) // d1 ve d3 aynı oldukları için 0 döndürür ==> Doğru.... if (strncmp(d1, d2, 2) == 0) // d1 ve d2'nin ilk 2 karakteri eşit için 0 döndürür ==> Doğru.... char a1[] = "Ali"; char a2[] = "Aliye"; if (strcmp(a1, a2) < 0) // a2 de ekstra karakterler olduğu için a2 daha büyük, negatif sayı. ==> Doğru... Dizgi Dizileri (String Array), Tanımlarken ilk boyut dizgi adedini, ikinci boyut her bir dizgi elemanının uzunluğunu (bellekte kapsadığı yeri) içerir. Hem tanımlarken, hem de fonksiyon parametresi olarak kullanılırken, dizgi uzunluğunun (2. boyut) belirtilmesi zorunludur. char sehirler[81][21]; // 81 adet 20 uzunlukta dizgi strcpy (sehirler[0], "Antalya"); strcpy (sehirler[1], "Izmir"); strcpy (sehirler[2], "Edirne"); char adlar[][25] = "Mustafa Kemal", "Albert Einstein", "Descartes"; void dizgidiziyaz (char dizgiler[][uzunluk], int n) int j; for (j = 0; j < n; j++) printf("%s\n", dizgiler[j]); Dizgi Arama Fonksiyonları char *strchr (char *string, int c) string içinde c karakterinin ilk olduğu yerin adresini döndürür. Bulamazsa NULL döndürür. char *strrchr (char *string, int c) string içinde c karakterinin son olduğu yerin adresini döndürür. Bulamazsa NULL döndürür. char *strstr (char *str1, char *str2) str1 içinde str2 dizgisinin ilk geçtiği yerin adresini döndürür. Bulamazsa NULL döndürür. Dizgi Dönüştürme Fonksiyonları int atoi(const char *str) Dizgi içindeki long sayıyı döndürür. "408" 408 double atof(const char *str) Dizgi içindeki double sayıyı döndürür. "3.14" 3.14 Örnekler: char d1[] = "1729 ve Ramanujan"; char d2[] = " pi, e sayisidir."; int a; double x; a = atoi(d1); // fonksiyon 1729 sayısını döndürür. x = atof(d2); // fonksiyon sayısını döndürür. BİL102 - Özet Ders Notları 5 Halil Özmen

6 3. Yapılar (Structures) Yapılar, içinde birden çok veri bulunduran nesnelerdir. Bir yapı içinde farklı türde veriler barındırabilir. Yapı tanımlama struct sözcüğü kullanılarak genellikle program başında (fonksiyon prototiplerinden ve main()'den önce) tanımlanır. struct tarih int yil; int ay; int gun; ; struct kisi char ad[21]; char soyad[21]; char cinsiyet; int dogumyili; double kilo; ; Yapı değişkenleri (yapı nesneleri) tanımlama struct kisi struct tarih typedef deyimi k1, kisiler[20], *kptr; t1, tarr[10], *tptr; typedef anahtar sözcüğü veri tiplerini daha kolay adlandırmak için kullanılır. Programın okunurluğunu artırır. struct kisi char ad[21]; char soyad[21]; char cinsiyet; int dogumyili; double kilo; ; typedef struct kisi Kisi; // (veya) typedef struct kisi kisi_t; Kisi k1, kisiler[20]; // program içinde yapı nesnesi tanımlanması. // kisi_t k1, kisiler[20]; // typedef struct kisi kisi_t; diye tanımlandıysa // veya: typedef struct // typedef varsa "tag" ismine gerek yok! char ad[21]; char soyad[21]; char cinsiyet; int dogumyili; double kilo; Kisi; Kisi k1, kisiler[20]; // program içinde yapı nesnesi tanımlanması. BİL102 - Özet Ders Notları 6 Halil Özmen

7 Yapı değişkenlerine ilk değer atanması (Initializing structure) typedef struct int saat; int dak; int san; Zaman; typedef struct char ad[21]; char soyad[21]; char cinsiyet; int dogumyili; double kilo; Kisi; // 'E' veya 'K' int main() Zaman z = 11, 59, 58; Kisi k1 = "Elif", "Huzurlu", 'K', 2000, 52.4;.... Yapı elemanlarına erişim (Accessing Members of Structures) Yapı elemanlarına erişim nokta (dot) ve ok (arrow) operatörleri ile gerçekleştirilir. Kisi k1, kisiler[20], *kptr; Nokta (dot) (. ) operatörü Bir yapının elemanlarına erişmek için, nokta (.) operatörü kullanılır. strcpy (k1.ad, "Burcu"); strcpy (k1.soyad, "Ekermen"); k1.cinsiyet = 'K'; k1.dogumyili = 1994; k1.kilo = 60.1; Ok (arrow) ( -> ) operatörü Bir yapı göstericisinin gösterdiği yapının elemanlarına erişmek için, ok (->) operatörü kullanılır. kptr = &k1; printf("ad Soyad: %s %s\n", kptr->ad, kptr->soyad); kptr->kilo = 57.8; Yapılara atama Yapılara doğrudan atama yapılabilir. Kisi k1, k2;... // k1 yapısı oluşturuldu. k2 = k1; // k1 yapısı komple k2'ye kopyalanıyor. Kisi kisiler[10], kyedek;... // kisiler[j] ile kisiler[j+1] arasında yer değiştirmek: kyedek = kisiler[j]; kisiler[j] = kisiler[j+1]; kisiler[j+1] = kyedek; BİL102 - Özet Ders Notları 7 Halil Özmen

8 Yapıların fonksiyonlara gönderilmesi Yapılar fonksiyonlara şu yollarla geçirilirler: Yapının bir elemanını geçirmek, Bir yapının tamamını geçirmek (değer-ile geçirilir), Yapının adresini veya yapı-göstericisini geçirmek. kisiyaz (k1); // Değer ile yapı geçirmek. void kisiyaz (Kisi kisi) // Yapının bir kopyası fonksiyonda oluşuyor. printf("ad Soyad: %s %s (%c), Dogum yili: %d, Agirlik: %.2lf kg\n", kisi.ad, kisi.soyad, kisi.cinsiyet, kisi.dogumyili, kisi.kilo); kisioku (&k1); // Adres ile yapı geçirmek. kisiyaz2 (&k1); // Adres ile yapı geçirmek. void kisioku (Kisi *kptr) // çağrıldığı yerdeki yapıya gösterici. printf("ad: "); gets(kptr->ad); // çağrıldığı yerdeki yapıya konuyor. printf("soyad: "); gets(kptr->soyad); // çağrıldığı yerdeki yapıya konuyor. printf("cinsiyet, Dogum Yili ve Agirlik giriniz: "); scanf("%c %d %lf", &(kptr->cinsiyet), &(kptr->dogumyili), &(kptr->kilo)); void kisiyaz2 (Kisi *kptr) // çağrıldığı yerdeki yapıya gösterici. printf("ad Soyad: %s %s (%c), Dogum yili: %d, Agirlik: %.2lf kg\n", kptr->ad, kptr->soyad, kptr->cinsiyet, kptr->dogumyili, kptr->kilo); BİL102 - Özet Ders Notları 8 Halil Özmen

9 4. Dosyalar (Files) Bir program çalışırken oluşturulan bilgiler, program durduğunda yok olur. Bilgisayarlar bilgileri dosyalarda tutarlar. Bir programda oluşturulan veya işlenen verinin kaybolmamasını istiyorsak, bilgileri dosyaya (dosyalara) yazarız. Veri Hiyerarşisi Bit: Byte: 0 veya 1 değeri alabilen, bilgisayardaki en küçük veri nesnesidir. İkili sayı sistemindeki tek bir rakama (0 veya 1) karşılık gelir. 8 adet bitten oluşmuş olan veri parçasıdır. Bilgisayar bellek ve disk boyutları "byte" cinsinden belirtilir: KB, MB, GB, TB, vs. Karakter: Karakterler, rakamlar, harfler, noktalama işaretleri, bazı matematiksel işaretler (+, -, /, =), parantezler ve diğer özel sembollerdir. Bilgisayarlarda ASCII kodlarla tutulurlar. ASCII karakterler 8 bitte, yani bir byte'ta tutulurlar. Alan: Kayıt: Dosyalar: Veri-tabanı (database): Karakterlerin bitlerden oluşması gibi, alanlar da karakterlerden veya byte'lardan oluşurlar. Örneğin bazı bilgisayarlarda (işletim sistemlerinde), tam sayılar 4 byte, noktalı sayılar 4 (float) veya 8 byte (double) yer tutarlar. Birbirleriyle ilişkili birkaç alan bir kaydı oluştururlar. Dosyalar, birbirleriyle ilişkili bir grup kaydın bulunduğu nesnelerdir. Veri tabanları verilerin kolay erişim için bir arada tutulduğu ortamlardır. Dosyalar ve Akışlar (Files and Streams) C programları, dosyaları sıralı byte dizisi (akış) olarak görür. Bir C programı çalışmaya başladığında, üç akış (stream) otomatik olarak açılır: stdin, stdout, stderr. Standart girdi (standard input = stdin) akışı klavyeden okumayı sağlar. Standart çıktı (standard output = stdout) akışı ekrana yazmayı sağlayan akıştır. Standart hata (standard error = stderr) akışı, hata mesajlarının ekrana yazılmasını sağlar. stdin, stdout ve stderr <stdio.h> içinde tanımlanmışlardır. Dosyalar: Ya sonunda dosya-sonu (end-of-file) karakteri ile biter, Ya da belli bir yerinde dosyanın kaç byte'tan oluştuğu bilgisi kayıtlıdır. Dosya Türleri Düz metin dosyaları (plain text files): Notepad veya benzeri bir programla açılabilen, içeriğin insanlar tarafından doğrudan okunabildiği dizgilerden oluşan dosyalardır..txt,.inf,.c,.h,.cpp,.html, vb. dosyalar bu tür dosyalardır. Kodlanmış dosyalar: Kaydedilebilmesi ve açılabilmesi için özel program gerektiren veya içindeki bilgilerin bilgisayar içinde tutulduğu ikili kod sistemi ile aynı şekilde kaydedilmiş olan dosyalardır..exe,.jpg,.avi,.mp3,.pdf,.docx,.xlsx,.zip, vb. dosyalar bu tür dosyalardır. Ses, resim, video, çalıştırılabilir program, veri dosyaları, sıkıştırılmış dosyalar gibi pek çok türleri vardır. Dosya Erişim Türleri Sıralı Erişim (Sequential Access): Dosyanın başından başlayıp, bilgilerin sıralı okunmasına ya da yazılmasına sıralı erişim denir. Rasgele (doğrudan) Erişim (Random Access): doğrudan dosya içindeki herhangi bir yerdeki bilgiye erişilmesi mekanizmasına rasgele erişim denir. Erişilen noktadan itibaren, okuma veya yazma yapılabilir. BİL102 - Özet Ders Notları 9 Halil Özmen

10 Dosya Açma ve Kapama Dosyaları açmak ve kullanmak için bir dosya göstericisi (FILE *) tanımlamak gerekir. FILE *dptr; // Dosya göstericisi tanımlama. Dosya açma işlemi fopen() fonksiyonu ile yapılır. Açma işlemi başarısız olursa, NULL döndürür. Dosya kapama işlemi fclose() fonksiyonu ile yapılır. Bir dosya ile ilgili başka işlem yapılmayacaksa, dosya kapatılmalıdır. Dosya Açma Modları Aşağıdaki tablo bazı dosya açma modlarını içermektedir. Başka dosya açma modları da vardır. r Var olan dosyayı okuma modunda açmak için. w Yazma amaçlı dosya yaratmak için. Dosya zaten varsa, içeriği yok edilip yeniden yaratılır. a Dosya sonuna eklemek için. Dosya varsa sonuna eklenir, yoksa yaratılır ve yazılır. r+ Var olan dosyayı güncellemek için kullanılır, hem okuma hem yazma işlemleri yapılabilir. w+ Okumak ve yazmak için dosya yaratılır. Dosya zaten varsa, içeriği silinip baştan yaratılır. a+ Okumak ve güncellemek için dosya açılır veya yaratılır. Tüm yazmalar dosya sonuna yapılır. rb Var olan dosyayı ikili (binary) modda açmak içindir. FILE *dptr; dptr = fopen(<dosya adı dizgisi>, <mod>); if (dptr == NULL) // dosya açılamadığında fopen NULL döndürür. return(1);... fclose(dptr); // Dosyayı kapat. Örnekler: FILE *dptr; dptr = fopen("dosya1.txt", "r"); // "r" okumak için if (dptr == NULL) printf ("dosya1.txt açilamadi.\n"; return (1); // Programı hata ile sonlandır // Dosya ile ilgili işlemler. fclose(dptr); // Dosyayı kapat. FILE *d1ptr, *d2ptr, *d3ptr; // Birden çok dosya açmak gerekebilir. if ((d1ptr = fopen("dosya1.txt", "r")) == NULL) printf ("dosya1.txt açilamadi.\n"; else // açıldı if ((d2ptr = fopen("dosya2.txt", "w")) == NULL) printf ("dosya2.txt açilamadi.\n"; else // açıldı if ((d3ptr = fopen("dosya3.txt", "a")) == NULL) printf ("dosya3.txt açilamadi.\n"; else // açıldı // "r" okumak için // "w" yazmak için // "a" eklemek için fclose(d1ptr); fclose(d2ptr); fclose(d3ptr); BİL102 - Özet Ders Notları 10 Halil Özmen

11 Dosya giriş, çıkış ve konumlandırma fonksiyonları int fgetc (FILE *stream) Dosyadan bir karakter okuyup döndürür. int fputc (int character, FILE *stream ) 1. parametredeki karakteri dosyaya yazar. char * fgets (char * str, int num, FILE *stream ) Dosyadan bir satır okur ve 1. parametredeki dizgiye koyar. Dosyadaki satırın uzunluğu "num"dan fazlaysa sadece "num" kadar karakter okur. int fputs (const char *str, FILE *stream) Dizgiyi (olduğu gibi) dosyaya yazar. Dizgi sonunda satır-başı karakteri yoksa, dosyada da satır-başı olmaz. fprintf (FILE *stream,......) printf'in stdout'a (ekrana) yazdığı gibi, aynı şekilde dosyaya yazmakta kullanılır. fscanf (FILE *stream,......) scanf'in stdin'den (klavyeden) okuduğu gibi, aynı şekilde dosyadan okumakta kullanılır. int feof (FILE *stream) Dosyanın sonuna gelindiyse (veya son okuma işlemi başarısız olduysa), feof fonksiyonu doğru döndürür, aksi halde 0 (yanlış) döndürür. void rewind (FILE * stream) Dosya konum göstergecini dosyanın başına getirir. int fseek (FILE *stream, long int offset, int origin) Dosya konum göstergecini (file position pointer) dosyanın "origin" den "offset" kadar byte ilerisine getirir. "origin" SEEK_SET, SEEK_CUR veya SEEK_END seçeneklerinden birisidir. Dosya başlangıcı için SEEK_SET, mevcut konum için SEEK_CUR, dosya sonu için SEEK_END kullanılır. "offset" negatif ise, o kadar byte geriye götürür. Başarılı olursa fonksiyon 0 (sıfır) döndürür. Örnekler: FILE *dptr; char c, str[200], ad[40]; int boy; dptr = fopen(dosyaadi,...); c = fgetc (dptr); fputc (c, dptr); fgets (str, 200, dptr); fputs (str, dptr); rewind (dptr); // Dosyadan 1 karakter oku. // Dosyaya 1 karakter yaz. // Satır sonuna kadar ama en çok 200 karakter oku. // Dizgiyi dosyaya yaz. Satır-başı eklemez. // Dosyanın başına dön. fprintf (dptr, "Ad: %-20s Boy: %d\n", ad, boy); fscanf (dptr, "%d", &boy); // Formatlı oku. // Formatlı yaz. while (!feof(dptr) ) // Dosya sonu değilse devam et. fseek (dptr, 10, SEEK_SET); c = fgetc (dptr); // Dosyanın başındaki 10. karaktere git. // Dosyadan 10. karakteri oku. BİL102 - Özet Ders Notları 11 Halil Özmen

12 5. C++'a Giriş C++ Tarihçesi Danimarkalı bilgisayar bilimcisi Bjarne Stroustrup doktora çalışmaları sırasında 1979 yılında "Nesne Yönelimli Programlama" (object oriented programming) üzerinde çalışmaya başlar. Kullandığı Simula- 67 çok yavaş olduğu için, "C" diline sınıfların (classes) eklenmiş şekli olan "C with Classes" dilini yaratır ve kullanmaya başlar yılında dilin adını "C with Classes" adından "C++" a çevirir yılında Bjarne Stroustrup "The C++ Programming Language" kitabını yayınlar ve C++ ticari olarak kullanılmaya başlanır. 1990'da "The Annotated C++ Reference Manual" yayınlanır ve aynı yıl Borland "Turbo C++" piyasaya sürülür. C++'ın yaygınlaşmasında "Turbo C++"ın çok büyük etkisi vardır. C ve C++ Arasındaki Başlıca Farklar C ile C++ arasındaki başlıca farklar şöyle özetlenebilir: Sınıflar (classes). C prosedürel bir programlama dili iken ve sınıfları ve nesneleri desteklemez iken, C++ "nesne yönelimli" (object oriented) bir programlama dilidir ve sınıfları ve nesneleri destekler. Girdi ve çıktı farkları: std::cin, std::cout... Açıklamaların /*... */ şeklinde yazılması yerine, satırın gerisi açıklama ise //... şeklinde yazılması. C++'ta main() sonunda "return(0);" yazmaya gerek yoktur. C fonksiyon aşırı yüklemeyi (function overloading) desteklemezken, C++ destekler. C++'ta String ve Boolean veri tipleri vardır. C++'ta referans parametrelerinin kullanımı daha basit ve kolaydır. C++'ta varsayılan değerli fonksiyon parametreleri vardır. Başka birçok fark vardır. Yukarıdaki farklar ve bazı diğer farklar ileride açıklanacaktır. İlk C++ Programları #include <iostream> // Programın girdi çıktı yapmasını sağlar. int main() std::cout << "Merhaba Galaksi!\n"; std::cout << "2 kere 2 = " << 2 * 2 << std::endl; // end main // Ekrana yaz. // Ekrana yaz. #include <iostream> using namespace std; // Programın girdi çıktı yapmasını sağlar. // std::cout, std::cin, vs. yerine dogrudan cout, cin int main() cout << "Ilk tamsayiyi giriniz: "; int sayi1; cin >> sayi1; // Ilk sayiyi oku ve sayi1 degiskenine koy. cout << "Ikinci tamsayiyi giriniz: "; int sayi2; cin >> sayi2; // 2. sayiyi oku ve sayi2 degiskenine koy. int toplam = sayi1 + sayi2; // Sayilari topla ve toplam'a koy. cout << "Toplam = " << toplam << endl; // toplamı göster. cout << "Toplam = " << sayi1 + sayi2 << endl; // toplamı göster. // end main BİL102 - Özet Ders Notları 12 Halil Özmen

13 Referanslar ve Referans Parametreler İki türlü parametre geçirme yöntemi vardır: Değer-ile-geçirme (pass-by-value): Gönderilen parametrenin bir kopyası fonksiyonda oluşturulur, fonksiyon bu kopyayı kullanır. Fonksiyonun çağırıldığı yerdeki parametre etkilenmez. Referans-ile-geçirme (pass-by-reference): Fonksiyona nesnenin referansı (adresi) gönderilir. Fonksiyon bu referansı kullanır. C++'ta referans parametre yazımında ve fonksiyon içindeki kullanımında kolaylıklar getirilmiştir. 1. Sadece fonksiyon başlık satırında ve prototipinde & operatörü kullanılır. 2. Fonksiyon çağırılırken parametrede veya fonksiyon içinde hiçbir operatör kullanılmaz! Fonksiyondaki parametre, fonksiyonun çağırıldığı yerdeki parametre olmuş olur. #include <iostream> // Programin girdi çikti yapmasini saglar. using namespace std; // std::cout, std::cin, vs. yerine dogrudan cout, cin int degerilekare (int n); void referansilekare (int &nref); int main() int x = 2; cout << "Baslangictaki x = " << x << endl; cout << "degerilekare'nin sonucu = " << degerilekare(x) << endl; cout << "degerilekare'den sonra x = " << x << endl << endl; int y = 4; cout << "referansilekare'den once y = " << y << endl; referansilekare(y); cout << "referansilekare'den sonra y = " << y << endl; // end main int degerilekare (int n) n = n * n; // veya: n *= n; return (n); void referansilekare (int &nref) nref *= nref; Varsayılan (Default) Parametre Değerleri Fonksiyon prototipinde parametrelere varsayılan değer atanabilir. Bu durumda, fonksiyon çağırılırken o parametreler verilmeyebilir. Varsayılan değerli parametreler en son parametreler olmak zorundadır. // Fonksiyon Prototipi double hacim(double uzunluk = 1, double genislik = 1, double yukseklik = 1); int main() cout << "Varsayilan kutu hacmi (1 x 1 x 1) = " << hacim() << endl; cout << "Uzunlugu 2 olan kutu hacmi (2 x 1 x 1) = " << hacim(2) << endl; cout << "Boyutlari 4, 2.5 ve 1 olan kutu hacmi = " << hacim(4, 2.5) << endl; cout << "Boyutlari 4, 2.5 ve 3 olan kutu hacmi = " << hacim(4, 2.5, 3) << endl; // end main // Hacim hesaplar ve döndürür. double hacim (double uzunluk, double genislik, double yukseklik) return (uzunluk * genislik * yukseklik); BİL102 - Özet Ders Notları 13 Halil Özmen

14 C++ Standart Kütüphane Başlık Dosyaları <iostream> <iomanip> <cmath> <cstdlib> <ctime> <cctype> <cstring> <string> <array>, <vector>, <list>, <queue>, C++ standart girdi ve çıktı akış tanımları. Veri akışlarının formatlanmasına ilişkin tanımlar. Matematik fonksiyonlarının prototipleri. Metinden sayıya, sayıdan metine dönüştürme fonksiyonları, rasgele sayı fonksiyonları, vs. Tarih ve zaman fonksiyonları. Karakter fonksiyonları. C tipi dizgi (string) fonksiyonları C++ String sınıfının tanımı. Dizi ve diğer konteyner öğeler ile ilgili tanımlar ve fonksiyonlar. Fonksiyonların Aşırı Yüklenmesi (Adaş Yordam) (Function Overloading) C++ aynı isimde birden çok fonksiyon tanımlanmasına ve kullanılmasına izin verir. Ancak bu fonksiyonların tüm parametreleri tamamen aynı türde olamazlar. Ya farklı parametre sayısı olmalıdır, ya farklı türde parametreler olmak zorundadır, veya parametre türleri frklı dizilişte olmak zorundadır. Bu özelliğe fonksiyon aşırı yüklenmesi (adaş yordam) (function overloading) denir. Aynı isimde bir fonksiyon çağırıldığında, C++ derleyicisi parametrelerin cinsine, sayısına ve dizilişine bakarak adaş yordamlardan hangisinin kasdedildiğini anlar. Adaş yordamlar, benzer işlem yapan ama farklı veri türleri üzerinde işlem yapan fonksiyonlarda kullanılır. // Fonksiyon Prototipleri: int kare (int x); double kare (double x); int main() cout << "7 nin karesi = " << kare(7) << endl; cout << "7.5 nin karesi = " << kare(7.5) << endl; // Hacim hesaplar ve döndürür. int kare (int x) return (x * x); double kare (double x) return (x * x); C++ Anahtar Sözcükleri: C ve C++ Ortak Sözcükler: 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++ Anahtar Sözcükleri: and and_eq asm bitand bitor bool catch class compl const_cast delete dynamic_cast explicit export false friend inline mutable namespace new not not_eq operator or or_eq private protected public reinterpret_cast static_cast template this throw true try typeid typename using virtual wchar_t xor xor_eq C++11 Anahtar Sözcükleri: alignas alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local BİL102 - Özet Ders Notları 14 Halil Özmen

15 6. Nesne Yönelimli Programlama (Object Oriented Programming) Nesne Yönelimli Programlamaya Giriş Gerçek dünyada, hemen herşey nesnelerden oluşur. Çevremizde nesneler görürüz, algılarız: eşyalar, bitkiler, kuşlar, hayvanlar, yiyecekler, binalar, odalar, bilgisayarlar, telefonlar, uçaklar, vs. İnsanlar nesne temelli algılarlar ve düşünürler. Aynı türden nesnelerin ortak yönleri vardır: hepsinin "özellik"leri (verileri / data) vardır, ve hepsi bazı "davranış"lar gösterirler (işlem veya eylem yaparlar). Özellikler için boyut, biçim, renk, ağırlık, kapasite, ad, boy, doğum tarihi, vs. türü şeyler sayabiliriz. Davranış (işlem/eylem) nesne türlerine göre çok farklı olabilir. Otobüs nesneleri için: "durmak", "bir yere gitmek", "yolcu almak", "yolcu indirmek", "benzin almak" gibi işlemleri örnek gösterebiliriz. C++ ve Java nesne yönelimli programlama dilleridirler. Bu gibi dillerle nesneler kullanarak programlamaya NYP - Nesne Yönelimli Programlama (OOP: Object Oriented Programming) denir. Nesne yönelimli tasarlanmış sistemler (object oriented designed systems), en kolay C++, Java gibi NYP'yi yani sınıfları destekleyen dillerle gerçekleştirilebilirler. C gibi diller yordamsal (procedural) dillerdir. Yordamsal dillerde sınıflar ve nesneler yoktur, yordam/işlem temellidirler. Sınıflar (Classes) Her nesne bir sınıfa aittir. "Eda Bal isimli numaralı öğrenci" nesnesi "öğrenci" sınıfının bir nesnesidir, "A304 sınıfındaki projektör" nesnesi "projektör" sınıfındandır, "06NYP88 plakalı otomobil" nesnesi "otomobil" sınıfındandır. Her sınıf bir dizi veri (data) ve bir dizi fonksiyon (işlem) içerir. Fonksiyonlar bu sınıftan nesnelerin verilerini işleyen (atamak, güncellemek, sunmak) ve bu sınıftan nesneleri kullananlara çeşitli hizmetler sunan yordamlardır. Sınıflardaki fonksiyonlara üye fonksiyon (member function) da denir. Sınıfların veri tanımlama kısmı, yapılardaki (struct) öğelere benzer. Ancak verilerin kullanımı (atanması ve alınması) çok farklıdır. Sınıfların çeşitli fonksiyonları vardır: Yapıcı fonksiyonlar (constructor): nesne oluşturulurken çalışan fonksiyonlardır. Nesneyi yaratır. Yıkıcı fonksiyonlar (destructor): nesne yok edilirken çalışan fonksiyonlardır. Verilere atama yapan fonksiyonlar ("set" fonksiyonları): nesnelerin (paketlenmiş) verilerine atama yapmak veya değiştirmek için kullanılırlar. Verileri alan fonksiyonlar ("get" fonksiyonları): nesnelerin (paketlenmiş) verilerini alıp kullanabilmek için kullanılırlar. Yardımcı fonksiyonlar: verilerle ilgili alma ve atama işlemleri dışında kalan, nesnelerle ilgili diğer işlemlerin yapıldığı fonksiyonlardır. DİKKAT: Sınıfların verisi (data) bellekte yer işgal etmez, sadece tanımdır! Sınıflardan yaratılan nesnelerin verisi (data) vardır ve bellekte yer alırlar! (C'deki yapı/struct öğeleri gibi.) Sınıflarda veri (data) tanımları vardır, ancak bunlar tanım olmaktan öteye geçmez. Ancak sadece o sınıftan bir nesne yaratıldığında, tanımlanmış olan veriler o nesneye ait olmak üzere yaratılmış olur. Özetle, sınıfların verisi yoktur (sınıfların veri tanımları vardır), nesnelerin gerçek verisi vardır. Paketleme (encapsulation) NYP'de genel yöntem nesnelerin verilerini ve fonksiyonlarının içeriğini (kodlarını) kullanıcıdan saklamaktır. Yani, sınıflardan nesneler oluşturan programcılar, doğrudan nesnelerin verilerine ulaşamazlar, bu işlem sınıflarda tanımlanmış olan verileri alma (get) ve verileri değiştirme (set) fonksiyonları ile yapılır. Sınıflardaki fonksiyonların nasıl kodlanmış olduğunu, o sınıflardan nesneler yaratan programcının bilmesine gerek yoktur. Programcının sadece fonksiyonların neler olduğunu (hangi işe yaradığını) ve parametrelerinin neler olduğunu bilmesi yeterlidir. Bu kavrama "paketleme" (encapsulation) denir. BİL102 - Özet Ders Notları 15 Halil Özmen

16 Sınıf kullanan örnek bir C++ programı: #include <iostream> using namespace std; class Dikdortgen private: int uzunluk; int genislik; public: // Yapici (Constructor) Fonksiyon Dikdortgen (int u = 1, int g = 1) uzunluk = u; genislik = g; double alan () return (uzunluk * genislik); ; int main() Dikdortgen dd1 (4, 7); Dikdortgen dd2; // Uzunlugu 4 genisligi 7 olan dikdörtgeni yarat // Uzunlugu genisligi varsayılan olan dikdörtgen cout << "1. Dikdortgenin alani = " << dd1.alan() << endl; cout << "2. Dikdortgenin alani = " << dd2.alan() << endl; system("pause"); Kapsamlı örnek sınıf: class Dikdortgen private: // Veriler double uzunluk; double genislik; public: // Fonksiyonlar // Yapici (Constructor) Fonksiyon Dikdortgen (double u = 1, double g = 1) uzunluk = u; genislik = g; void setuzunluk (double u) uzunluk = u; void setgenislik (double g) genislik = g; double getuzunluk () return (uzunluk); DİKKAT: Verilerin hepsi private olmayabilir, bazı özel durumlarda public veri olabilir. Fonksiyonlar her zaman public olmayabilir, private fonksiyonlar da olabilir. BİL102 - Özet Ders Notları 16 Halil Özmen

17 double getgenislik () return (genislik); double alan () // Dikdörtgenin alanını döndürür. return (uzunluk * genislik); double cevre () // Dikdörtgenin çevresini döndürür. return ( (uzunluk + genislik) * 2 ); void yaz() // Dikdörtgenin verilerini yazar. cout << "Dikdortgen: " << uzunluk << " " << genislik << endl; void yaz2() // Dikdörtgenin verilerini, alanını ve çevresini yazar. cout << "Dikdortgen: " << uzunluk << " " << genislik << " Alan = " << alan() << " Cevre = " << cevre() << endl; ; // end class Dikdortgen // class'lar ; ile biter!! Yapıcı (Constructor) Fonksiyonlar Yapıcı fonksiyonlar nesne tanımlanırken devreye girer ve nesnelerin yaratılmalarını sağlar. Yapıcı fonksiyonlar sınıf adı ile aynı adda yazılmak zorundadırlar. Tipleri yoktur (void bile değildir). Bir sınıfta birden çok yapıcı fonksiyon olabilir, bu durumda yapıcı fonksiyonların parametrelerinde farklılık olması zorunludur. Fonksiyon aşırı yüklemedeki (function overloading) prensipler geçerlidir. Dikdortgen dd1 (7, 4); // dd1 nesnesi yapıcı fonksiyonla yaratılıyor. // Yapici (Constructor) Fonksiyon: Dikdortgen (double u = 1, double g = 1) uzunluk = u; genislik = g; Ogrenci ogr2 ("Kaan Caliskan"); // ogr2 yapıcı fonk.la yaratılıyor // Yapici (Constructor) Fonksiyon: Ogrenci (string as, int vize = 0, int final = 0) adsoyad = as; vizenotu = vize; finalnotu = final; Yıkıcı (Destructor) Fonksiyonlar Bir nesne artık kullanılmayacağında, yıkıcı (destructor) fonksiyon çağırılarak yok edilmeden önce yapılması gereken işlemler varsa yapılır ve o nesne yok edilir, nesnenin bellekte kapsadığı alan serbest kalır. C++ programları, ömrü biten nesneler için, o nesnelerin yıkıcı fonksiyonunu otomatik çağırırlar. Örneğin bir fonksiyonda bir nesne yaratılmışsa, o fonksiyon bitince, çağırıldığı yere dönmeden önce, yaratılan o nesne yıkıcı fonksiyonu çağırılarak yok edilir. Eğer nesnenin sınıfı içinde yıkıcı fonksiyon yazılmamışsa, sistemin kendi varsayılan yıkıcı fonksiyonu devreye girer ve nesnenin verileri yok edilir. Yıkıcı fonksiyonlar tilde işaretinden (~) sonra sınıf adı yazılarak isimlendirilirler. // Yikici (Destructor) Fonksiyon: ~Dikdortgen ()... BİL102 - Özet Ders Notları 17 Halil Özmen

18 Erişim Fonksiyonları: Atama (Set) ve Alma (erişim) (Get) Fonksiyonları Nesnelerin verilerine doğrudan erişilmez. Nesnenin verisi atanacaksa veya değiştirilecekse atama (set) fonksiyonu ile yapılır. Veri kullanılacaksa, alma / erişim (get) fonksiyonu ile alınıp kullanılır. Atama (set) fonksiyonlarına parametre olarak atanacak değer verilir, fonksiyon tipi void 'dir. Tek parametre alır ve bu parametreyi ilgili nesne verisine atar. Alma / erişim (get) fonksiyonlarının parametresi yoktur, istenen veri tipindedir ve o nesne verisini döndürür. Alma (get) fonksiyonu, döndürdüğü veri ile aynı tiptedir. Nesnenin tüm verileri için atama ve alma fonksiyonları yazmak gerekmeyebilir. Bazı bilgiler yapıcı (constructor) fonksiyon tarafından atandıktan sonra değiştirilmeyeceklerse, o bilgiler için atama (set) fonksiyonları yazılmaz. Bazı durumlarda da bazı nesne verileri nesne kullanıcılarına açık değildir (nesnenin iç işlerinde kullanılırlar), bu tür veriler için atama ve alma fonksiyonları yazılmaz. void setuzunluk (double u) // fonksiyon adi atauzunluk olabilirdi. uzunluk = u; void setgenislik (double g) // fonksiyon adi atagenislik olabilirdi. genislik = g; double getuzunluk () // fonksiyon adi aluzunluk olabilirdi. return (uzunluk); double getgenislik () // fonksiyon adi algenislik olabilirdi. return (genislik); string getadsoyad () return (adsoyad); Yardımcı Fonksiyonlar Nesnenin verilerini atama ve alma işlemleri dışındaki nesne işlemleri yardımcı fonksiyonlar kullanılarak yapılır. Örneğin "Dikdortgen" sınıfından yaratılan bir dikdörtgen nesnesinin alanını ve çevresini, "Dikdortgen" sınıfının ilgili yardımcı fonksiyonları kullanılarak hesaplatıp almak gerekir. Yardımcı fonksiyonların parametresi olabilir. Tipi void veya başka tipte olabilir. double alan () return (uzunluk * genislik); double cevre () return ( (uzunluk + genislik) * 2 ); void yaz() cout << "Dikdortgen: " << uzunluk << " * " << genislik << endl; // Ogrenci nesnesinin, vizenotu ve finalnotu'na göre genelnot'u döndürür. double genelnot (int vizeyuzde, int finalyuzde) return ( (vizenotu * vizeyuzde + finalnotu * finalyuzde) / ); BİL102 - Özet Ders Notları 18 Halil Özmen

19 Nesne Yönelimli Analiz ve Tasarım, UML (Unified Modeling Language) Nesne yönelimli analiz ve tasarım yapılırken, yapısal programlamadaki analiz ve tasarımdan farklı olarak, geliştirilecek yazılımda kullanılacak sınıflar, sınıfların veri tanımları ve fonksiyonları saptanır. Sınıfların tanımlanmasında UML kullanılır. Dikdortgen - uzunluk: double - genislik: double <constructor> + Dikdortgen (u: double, g: double) + setuzunluk (u: double) : void + setgenislik (g: double) : void + getuzunluk () : double + getgenislik () : double + alan () : double + cevre () : double + yaz () : void Sınıf Adı Veriler Fonksiyonlar + : public olduğunu, - : private olduğunu gösterir. Object Oriented Analysis and Design (OOAD) Ogrenci - ogrnum: int - ad: string - soyad: string - bolum: string - vizenotu: int - finalnotu: int - toplamnot: double <constructor> + Ogrenci (ogrnum: int, ad: string, soyad: string, bolum: string) + setvizenotu (v: int) : void + setfinalnotu (f: int) : void + getogrnum () : string + get [diğer get fonksiyonları] + toplamnothesapla (vyuzde: int, fyuzde: int) : double + yaz () : void Nesnelerin tüm bilgileri için atama (set) fonksiyonu yazılması zorunlu değildir. Bazı bilgiler nesne yaratılırken yapıcı (constructor) fonksiyon ile atanır. Bazı bilgiler sonradan atama (set) fonksiyonları ile atanabilir veya değiştirilebilir. Nesnelerin değişmeyen bilgileri yapıcı fonksiyon ile atandıktan sonra, değişmeyecekleri için, bu bilgiler için atama (set) fonksiyonu yazılmaz. Normal koşullarda öğrencinin numarası, adı, soyadı ve bölümü değişmeyeceği için, bu sınıfta bu alanlar için atama (set) fonksiyonuna gerek görülmemiştir. Kaynak Kodu Parçalara Ayırma Sınıfların olduğu C++ programları yazarken bir yöntem, herşeyin tek bir.cpp kaynak dosyasında yer almasıdır. Ancak bu yöntem sadece çok basit sınıflar ve çok basit ana programlar söz konusu ise yapılabilinir. Bu yöntem tavsiye edilmez, doğru programlama yöntemi değildir. İkinci yöntem, sınıf için bir.h kaynak dosyası yaratıp, tüm sınıf tanımlarını ve fonksiyonların kodlarını.h dosyasındaki sınıfın (class) içinde oluşturmaktır. Bu durumda uygulama programı (yani main() fonksiyonu ve diğer fonksiyonlar) ayrı bir.cpp program kaynak dosyasında yer alır ve bu dosyada #include "sinif.h" satırı yer alır. Üçüncü yöntem, sınıfın verileri ve fonksiyonlarının prototipleri için bir.h kaynak dosyası yaratmak, sınıfın fonksiyonlarının kodlarını ayrı bir.cpp kaynak dosyasına koymak, uygulama programını (main() ve diğer fonksiyonlar) ayrı bir.cpp program kaynak dosyası oluşturmaktır. Bu yöntemle sınıf için "arayüz ile uygulamanın ayrılması" (separating interface from implementation) gerçekleştirilmiş olur. DevC++ yazılımı kullanılıyorsa, 3. yöntemde "proje" yaratılması zorunludur, ikinci yöntemde projeye gerek yoktur. Büyük projelerde 3. yöntem uygulanır. 1 kaynak dosyası 2 kaynak dosyası 3 kaynak dosyası uygulama.cpp: Sınıf, main ve tüm fonksiyonlar tek bir sinif.h: Sınıfın herşeyi (veriler ve fonksiyonlar) bir dosyada; sinif.h: Sınıfın veri tanımları ve fonksiyon prototipleri; dosyada. (Tavsiye edilmez!) uygulama.cpp: main() ve diğer program fonksiyonları. sinif.cpp: sınıfın fonksiyonlarının kodları; uygulama.cpp: main() ve diğer program fonksiyonları. BİL102 - Özet Ders Notları 19 Halil Özmen

20 Bir program birden çok sınıf kullanıyorsa, 2. yöntemde her sınıf için bir kaynak dosyası, bir de uygulama programı olmak üzere, toplam dosya adedi = sınıf adedi + 1 olur. Üçüncü yöntemde ise toplam dosya adedi = (2 * sınıf adedi) + 1 olur. Nesnelerin Birbirine Aktarılması (Atanması) Bir nesneye ancak aynı sınıftan bir nesne aktarılabilir (atanabilir). Atama yapılan nesneye diğer nesnenin tüm verileri kopyalanır. Dikdortgen dd1 (8, 12); // Nesnenin yaratilmasi. Dikdortgen dd2; // Nesnenin yaratilmasi. cout << "1. Dikdortgen:" << endl; dd1.yaz(); cout << endl << "2. Dikdortgen:" << endl; dd2.yaz(); // 2. dikdörtgene 1.yi ata (1. dikdörtgen bilgilerini 2.ye kopyala) dd2 = dd1; cout << endl << "Atamadan sonra 2. Dikdortgen:" << endl; dd2.yaz(); Arkadaş Fonksiyonlar (Friend Functions) ve Arkadaş Sınıflar (Friend Classes) Arkadaş fonksiyon, arkadaşı olduğu sınıfın fonksiyonu olmayıp, sınıftaki bütün açık (public) ve özel (private) üyelere (veri veya fonksiyon) erişim hakkı olan fonksiyondur. Bağımsız fonksiyonlar bir sınıfın arkadaş fonksiyonu olarak tanımlanabilirler. Arkadaş fonksiyonlar, sınıf tanımı içinde en başta belirtilirler. class Dikdortgen friend void setu (Dikdortgen &, double); // Arkadaş fonksiyon tanımı // diğer sınıf tanımları. ; Örnekteki setu() bağımsız fonksiyon olduğu için, nesne.setu() şeklinde kullanılamaz. Ancak bir nesne ile ilgili işlem yapacağı için, nesneyi kullanır. (Nesnenin adı adresidir.) Dikdortgen dd1(4, 3); setu (dd1, 7); Eğer bir sınıfın (Sinif2) bütün fonksiyonları, başka bir sınıfın (Sinif1) arkadaş fonksiyonları olacak ise, "Sinif1" içinde "Sinif2"nin arkadaş sınıf olarak tanımlanması gerekir. class Sinif1 friend class Sinif2; // Sinif2 fonksiyonları Sinif1'in herseyine ulaşır // diğer sınıf tanımları. ; BİL102 - Özet Ders Notları 20 Halil Özmen

21 this Göstericisi Eğer sınıf kodu içinde, sınıf verisi ile aynı isimde başka değişken (veri) varsa, nesnenin kendi verisini belirtmek için "this" deyimi kullanılır. this nesnenin göstericisidir, üye verilere ok "->" operatörü ile erişilir. private: double uzunluk; double genislik; public: void setuzunluk (double uzunluk) this -> uzunluk = uzunluk; void setgenislik (double genislik) this -> genislik = genislik; // uzunluk verisine atama yapmak. // Nesnenin kendi verisine parametreyi ata // genislik verisine atama yapmak. // Nesnenin kendi verisine parametreyi ata Devingen Bellek Yönetimi (Dynamic Memory Management) Normalde, bir program çalıştırıldığı anda, programdaki veriler ve diziler için bellek yerleri ayrılmış olur. Program çalışırken, nesneler ve diziler (veriler) için bellekten yer alınması ve işi biten yerlerin tekrar geri verilmesi program ile kontrol edilebilir. Bu kavrama "Devingen Bellek Yönetimi" (Dynamic Memory Management) denir. Program çalışırken bellekten yer alınmasına "devingen bellek yerleşimi" (dynamic memory allocation) denir. C++ dilinde bellekten yer alma ve iade etme işlemleri new ve delete operatörleri ile yapılır. double *ptr = new double(); // 1 double'lık yer ayır. double *piptr = new double( ); // 1 double'lık yer ayır, ata int *notdizisi = new int[10](); // 10 int'lik yer ayır. Kisi *kisiler = new Kisi[20](); // 20 Kisi'lik yer ayır. Dikdortgen *ddptr = new Dikdortgen(); // 1 nesnelik yer ayır, nesneyi yarat Dikdortgen *dd2ptr = new Dikdortgen(16, 12); // yer ayır, nesne yarat (*ddptr).setuzunluk(20); (*ddptr).setgenislik(10); (*ddptr).yaz(); cout << "Alan = " << (*dd2ptr).alan() << endl; delete ptr; delete notdizisi; delete kisiler; delete ddptr; delete dd2ptr; BİL102 - Özet Ders Notları 21 Halil Özmen

22 7. Operatör Aşırı Yükleme (Operator Overloading) Operatörlerin aşırı yüklenmesine giriş: C++ operatörlerinin sınıf nesneleri üzerinde işlem yapmasını sağlamaya "operatör aşırı yükleme" (operator overloading) denir. C++ standart fonksiyon kütüphanelerinde birçok operatör aşırı yükleme örneği bulunmaktadır. Örneğin << operatörü hem dizgiye dönüştürme operatörü, hem de bit-temelli sola-kaydırma operatörü olarak tanımlanmıştır. Benzer şekilde >> operatörü de aşırı yüklenmiş ve hem dizgiden çıkarma operatörü hem de bit-temelli sağa-kaydırma operatörü olarak tanımlanmıştır. C++ programcısı operatörlerden bir çoğunu aşırı yükleyebilir. Örneğin "Tarih" sınıfı oluşturan bir programcı, ++ operatörünü tarihi 1 gün artırmak için aşırı yükleyebilir, ve += operatörünü, tarihi, verilen bir gün sayısı kadar ilerletmek (artırmak) için aşırı yükleyebilir. Operatörlerin aşırı yüklenme temelleri: C++ dilin yapısında olmayan yeni operatörler tanımlanmasına izin vermez. Ancak mevcut C++ operatörlerinin çoğunun aşırı yüklenmesine (sınıflar için yeniden tanımlanmasına) izin verir. C++ dilindeki string sınıfında birçok operatör aşırı yüklenmiştir: + += ==!= > >= < <= operatörleri bunlardan bazılarıdır. Operatör aşırı yükleme otomatik değildir, programcının bunun için sınıf içinde gerekli operatör aşırı yükleme fonksiyonlarını yazması gerekir. Bu fonksiyonların adı herzaman "operator" sözcüğü ile başlar ve operatörün kendisi ile devam eder. İstenirse arada boşluk bırakılabilir. Operatörlerin aşırı yüklenme kuralları ve kısıtları: Bazı operatörler aşırı yüklenemez. Aşırı yüklenemeyen operatörler şunlardır:..* (üyeye gösterici) ::? : Operatör aşırı yükleme kuralları ve kısıtları şunlardır: Operatörlerin önceliği aşırı yükleme ile değişmez. Örneğin * her zaman + ya göre önceliğe sahiptir. Operatörlerin işlem sırası aşırı yükleme ile değişmez. Örneğin soldan sağa işlem yapan bir operatörün bu özelliği değiştirilemez. Operatörün kullandığı nesne sayısı değiştirilemez. Örneğin + gibi iki nesne arasında işlem yapan bir operatör ++ gibi tek nesne üzerinde işlem yapar hale dönüştürülemez. Yeni operatör yaratılamaz. C++ dilindeki operatörlerden başkası aşırı yüklenemez. Operatörlerin temel veri tipleri üzerindeki işlem prensibi değiştirilemez. Örneğin + operatörü iki sayı arasında çıkarma yapacak şekilde aşırı yüklenemez. + ve += gibi birbirleriyle ilişkili operatörlerin ayrı ayrı aşırı yüklenmesi gerekir. Biri öbürünün işlemini etkilemez. İkili operatörlerin (+, -, *, >, <, ==,!= gibi) aşırı yüklenmesi: İkili operatörlerde, yani iki tarafındaki aynı tipte nesneler arasında işlem yapan operatörlerde (+, -, *, /, %, ==,!=, >, >=, <, <=, vb.), operatör yükleme fonksiyonunda sağdaki nesne parametrede yer alır, soldaki nesne fonksiyon içinde this göstericisi ile gösterilir. nesne1 operatör nesne2 ifadesi için, operatör yükleme fonksiyonunda nesne1 için nesnenin kendi verileri kullanılırken, nesne2 fonksiyonun parametresi olarak kullanılır. nesne2 nesne1 ile aynı veri tipinde olmayabilir. Operatör Aşırı Yükleme Fonksiyon Tipi: Operatör Türü Operatörler Operatör Aşırı Yükleme Fonksiyon Tipi İşlem Operatörleri + - * / % vb... genellikle soldaki nesnenin sınıfı Atama Operatörleri = += -= *= /= %= void Karşılaştırma Operatörleri ==!= > >= < <= bool BİL102 - Özet Ders Notları 22 Halil Özmen

23 // + (arti) operatörünü Zaman nesneleri için tanimla. // Iki zamani topla: zaman1 + zaman2; Zaman Zaman::operator + (const Zaman z) Zaman sonuc (saat + z.saat, dak + z.dak, san + z.san); if (sonuc.san > 59) sonuc.san %= 60; sonuc.dak++; if (sonuc.dak > 59) sonuc.dak %= 60; sonuc.saat++; sonuc.saat %= 24; return (sonuc); bool Zaman::operator == (const Zaman z) return (saat == z.saat && dak == z.dak && san == z.san); bool Zaman::operator!= (const Zaman z) return!(saat == z.saat && dak == z.dak && san == z.san); bool Zaman::operator > (const Zaman z) int san1 = saat * dak * 60 + san; int san2 = z.saat * z.dak * 60 + z.san; return (san1 > san2); bool Zaman::operator < (const Zaman z) int san1 = saat * dak * 60 + san; int san2 = z.saat * z.dak * 60 + z.san; return (san1 < san2); +=, -= gibi atama operatörlerinin aşırı yüklenmesi: Operatör aşırı yükleme fonksiyonunun tipi void 'dır ve solundaki nesnenin verilerine atamalar yapılır. // Zaman nesnesini += in sagindaki saniye kadar artir: zaman1 += saniye; // Burada operatörün saginda yalnizca int tipi deger olabilir. void Zaman::operator += (int saniye) san += saniye; if (san > 59) dak += san / 60; san = san % 60; if (dak > 59) saat += dak / 60; dak = dak % 60; if (saat > 23) saat = saat % 24; BİL102 - Özet Ders Notları 23 Halil Özmen

24 // zaman1 += zaman2; için bu fonksiyon kullanilir. void Zaman::operator += (const Zaman z) saat += z.saat; dak += z.dak; san += z.san; if (san > 59) san %= 60; dak++; if (dak > 59) dak %= 60; saat++; saat %= 24; ++, -- gibi tekil operatörlerin aşırı yüklenmesi: Tekil operatörler nesne üzerinde değişiklik yaptıkları için, bu tip operatörlerin aşırı yükleme fonksiyonlarının tipi nesnenin sınıfı olur. // 1 saniye artir: ++ operatoru. [PREFIX ++] ++zaman1; Zaman& Zaman::operator ++ () (*this)++; // Artirma isini postfix ++'ya yaptir. return (*this); // 1 saniye artir: ++ operatoru. [POSTFIX ++] zaman1++; Zaman Zaman::operator ++ (int) san++; if (san > 59) san = 0; dak++; if (dak > 59) dak = 0; saat = (saat + 1) % 24; return (*this); BİL102 - Özet Ders Notları 24 Halil Özmen

25 8. Kalıtım (Inheritance) Kalıtıma giriş Nesne Yönelimli Programlamanın (object oriented programming) önemli özelliklerinden birisi de kalıtım (inheritence) özelliğidir. Bir sınıf oluştururken, sıfırdan sınıfı oluşturmak yerine, var olan bir sınıfın özelliklerini ve fonksiyonlarını miras alıp, yeni özellikler ve fonksiyonlar ekleyerek oluşturmak daha verimli olabilir. Örneğin otomobil, otobüs, kamyon ve gemi sınıflarının olduğunu düşünelim. Bu dört sınıfın ortak özelliklerini ve ortak fonksiyonlarını "taşıt" sınıfında toplayabilir, ve otomobil, otobüs, kamyon, gemi sınıflarının "taşıt" sınıfından kalıtımla bu ortak özellik ve fonksiyonları alması sağlanabilir. Bir başka örnek: öğrenci, öğretmen ve çalışan sınıfları "kişi" sınıfından kalıtım ile bazı özellik ve fonksiyonları alabilir. Farklı özellikler için gereken kodlama yapılarak, üretilmiş sınıf oluşturulur. Avantajları: (a) Temel sınıfın denenmiş ve kanıtlanmış yapısını kullanmanın getirdiği sağlam tasarım avantajı. (b) üretilmiş sınıflarda, ortak özelliklerin (bilgilerin) ve ortak fonksiyonların tekrarlanmasının engelleyerek yazılım geliştirme zamanını azaltmak, (c) ortak öğelerde değişiklik yapılması gerektiğinde, tek bir yerde değişiklik yaparak hepsine yansımasını sağlamak, ve bu yolla zamandan kazanmak ve hata (unutma) riskini azaltmak. is-a ve has-a ilişkileri: is-a ilişkisi kalıtım ilişkisidir. has-a ilişkisi bir sınıftan nesnenin, başka bir sınıftan nesneyi içermesi ilişkisidir. Örnek: Öğrenci, Kişi ve Tarih sınıfları olduğunu varsayalım. Öğrenci is-a Kişi. (Öğrenci bir Kişi'dir. Öğrenci Kişi sınıfından ortak öğeleri miras alır.) Kişi has-a Tarih. (Kişi sınıfı Tarih [doğum tarihi] içerir.) Temel sınıf (base class) ve Türetilmiş sınıf (derived class) arasındaki ilişki Temel Sınıf Öğrenci Şekil Çalışan Taşıt Türetilmiş Sınıflar LisansÖğrencisi, YüksekLisansÖğrencisi Daire, Üçgen, Dörtgen Müdür, Programcı, İdariÇalışan, Sekreter Otomobil, Otobüs, Kamyon, Gemi, Uçak Temel Sınıf Türetilmiş Sınıf (1) Türetilmiş Sınıf (2) Özellik 1 Özellik 1 Özellik 1 Özellik 2 Özellik 2 Özellik 2 Özellik Özellik 4 BİL102 - Özet Ders Notları 25 Halil Özmen

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ı

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ı

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ı

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir.

Dizgiler. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir. Bu karakterlerin her biri aslında bir tamsayı ile ifade edilir. DİZGİLER (STRINGS) Dizgiler char tipli karakterlerin gruplanmş haline dizgi(string) denilir. Bazen katar ismide kullanılabilir. C dilinde karakter m şeklinde tek tırnak içerisinde yazılan ifadelerdir.

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ı

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ı

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ı

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ı

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ı

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ı

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ı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 KARAKTERLER KARAKTER DİZİLERİ (STRING) Sunu Planı Karakterler ve Stringler Karakter İşleme Kütüphanesi String Dönüşüm Fonksiyonları Standart Giriş/Çıkış Kütüphane Fonksiyonları

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ı

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ı

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ı

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ı

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

ELN1002 BİLGİSAYAR PROGRAMLAMA 2 ELN1002 BİLGİSAYAR PROGRAMLAMA 2 DOSYALAMA Sunu Planı Rasgele Erişim (Random Access) Dosyaları Rasgele Erişim Dosyalarına Veri Yazma Rasgele Erişim Dosyalarından Veri Okuma 1 Sıralı Erişim Dosyası Bir

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ı

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ı

Giriş. ENF102 Jeoloji

Giriş. ENF102 Jeoloji DİZİLER Arrays Giriş Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır.

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ı

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 Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0

C Dosyalama. Öğr. Gör. M. Ozan AKI. Rev 1.0 C Dosyalama Öğr. Gör. M. Ozan AKI Rev 1.0 Dosyalama Dosyalar, disk üzerinde verilerin kalıcı olarak saklanmasını ve başka bir ortama kopyalanarak taşınabilmesini sağlayan yapılardır. Dosyalama C Dili ve

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ı

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ı

Hafta 12 Karakter Tutan Diziler

Hafta 12 Karakter Tutan Diziler BLM111 Programlama Dilleri I Hafta 12 Karakter Tutan Diziler Yrd. Doç. Dr. Caner ÖZCAN Katar (String) Tanımlama Dizileri ve çok boyutlu dizileri gördük. Katar dediğimiz şey de aslında bir dizidir. Değişken

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ı

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek

DİZİLER 5/4/2010. ENF-102 Jeoloji Giriş. Tek Boyutlu Diziler. Tek Boyutlu Diziler. Örnek. Örnek Giriş DİZİLER Arrays Aynı isim altında, aynı türde birden fazla değer tutmak için kullanılan veri yapılarıdır (Data Structure). Dizi bir kümedir; aynı türde verilere tek bir isimle erişmek için kullanılır.

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

PASCAL PROGRAMLAMA DİLİ YAPISI BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama

Detaylı

C++ Dersi: Nesne Tabanlı Programlama

C++ Dersi: Nesne Tabanlı Programlama C++ Dersi: Nesne Tabanlı Programlama Bölüm 9: Sınıf İçerik Sınıf Tanımı Nesne Tanımı İkili Kapsam Çözme Operatörü UML ile Sınıfların Gösterimi 2 Sınıf kavramı, nesne-tabanlı programlamanın temelini oluşturur.

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya BMB1002 Bilgisayar Programlamaya Giriş Dosyalar Prof. Dr. Necmettin Kaya Dosyalar, verilen saklanması ve daha sonra okunması için bilgi içeren ve kalıcı olarak saklanabilen ortamlardır. Dosya işlemleri,

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ı

BİL1001 Bilgisayar Bilimlerine Giriş 1

BİL1001 Bilgisayar Bilimlerine Giriş 1 DEÜ Bilgisayar Bilimleri Bölümü BİL1001 Bilgisayar Bilimlerine Giriş 1 Öğr. Gör. Dr. Alper VAHAPLAR 2017 Yaz Okulu Tekrarlı Yapılar Algoritmanın belirli bir kısmının, belirli kere ya da belirli durumlar

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ı

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ı

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ı

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ı

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ı

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ı

ş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ı

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ı

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ı

Genel Programlama II

Genel Programlama II Genel Programlama II 18.04.2011 1 DİSK DOSYALARI İLE ÇALIŞMA DOSYALARIN AÇILMASI C programlama dilinde bir dosyayı kullanabilmek için, öncelikle o dosyanın açılması gerekmektedir. Hem okuma hem de yazma

Detaylı

Fall Object-Oriented Programming Laboratory 02 - Structures

Fall Object-Oriented Programming Laboratory 02 - Structures 2017-2018 Fall Object-Oriented Programming Laboratory 02 - Structures 10.10.2017 1. Diziler. Bir tamsayi dizisinin elemanlarını ekrana yazdırmak için void printarr(int arr[], int elem_count) prototipli

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu

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ı

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ş Data Hiyerarşisi Files (Dosyalar) ve Streams (Kaynaklar)

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ı

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ı

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 Dosya İşlemleri (Rastgele 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ı

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ı

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ı

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ı

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ı

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ı

ALFASAYISAL BİLGİLER KARAKTER DİZİLERİ (STRING)

ALFASAYISAL BİLGİLER KARAKTER DİZİLERİ (STRING) ALFASAYISAL BİLGİLER KARAKTER DİZİLERİ (STRING) 1. HAFTA KARAKTER Karakterler, programlarda kullanılan temel simgelerdir. Her karakterin ASCII kod tablosunda bir tamsayı değer karşılığı vardır ve C programlama

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ı

PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr.

PROGRAMLAMA. Dosyalama İşlemleri. Yrd. Doç. Dr. Bülent Çobanoğlu. Sakarya Üniversitesi Mekatronik Mühendisliği. Yrd.Doç.Dr. PROGRAMLAMA Dosyalama İşlemleri Yrd. Doç. Dr. Bülent Çobanoğlu Sakarya Üniversitesi Mekatronik Mühendisliği Yrd.Doç. Dosyalama İşlemleri Program ve verileri daha sonra kullanabilmek amacı ile kalıcı olarak

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ı

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe

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ı

C Konsol Giriş Çıkış Fonksiyonları

C Konsol Giriş Çıkış Fonksiyonları C Konsol Giriş Çıkış Fonksiyonları Öğr. Gör. M. Ozan AKI Rev 1.0 Stringlerde Özel Karakterler \n : Bir sonraki satırın ilk sütununa git \b : Backspace (önceki karakteri sil) \a : Bip sesi \\ : Ters bölü

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ı

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 Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri

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ı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

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ı

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ş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

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ı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları SABİTLER VE DEĞİŞKENLER Değişken, verilerin bellekte geçici olarak kaydedilmesini ve gerektiğinde kullanılmasını sağlayan değerdir. Nesne tabanlı programlama dilinde değişken kullanımı diğer programlama

Detaylı

Operator Aşırı Yükleme (Operator OverLoading)

Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme (Operator OverLoading) Operator Aşırı Yükleme Operatör metotları bir nesnenin ifadeler içinde operatörlerle kullanıldığı zaman davranışını belirler. Temel veri türleri için operatörler

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA 6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı

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ı

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 Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer

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ı

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

Pointers (İşaretçiler)

Pointers (İşaretçiler) Pointers (İşaretçiler) Pointers (İşaretçiler) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ile ilişkilidir. Donanımsal açıdan

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ı

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ı

/ 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ı

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 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ı

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ı

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ı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı

Detaylı

C++ Operatörler (Operators)

C++ Operatörler (Operators) C++ Operatörler (Operators) Konular Operatörler o Aritmetiksel (Matematiksel) Operatörler o Karşılaştırma Operatörleri o Mantıksal Operatörler o Atama Operatörleri o Bit Düzeyinde Operatörler o Özel Amaçlı

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ı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

NESNE MODELLERİ : SINIFLAR

NESNE MODELLERİ : SINIFLAR NESNE MODELLERİ : SINIFLAR Bu bölümünden itibaren C++ programlama dilinin nesneye dayalı programlamaya yönelik özellikleri tanıtılacaktır. Bu özellikler yazılımların kalitesini yükseltmek amacıyla geliştirilmişlerdir.

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ı

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ı

STRİNG DİZİLER(KATARLAR)

STRİNG DİZİLER(KATARLAR) STRİNG DİZİLER(KATARLAR) Giriş Katar bir char tipinde bildirilen karakter dizisidir. Katarlar (strings), içeriği harfler, rakamlar, veya bazı semboller olan text bilgilerini tutmak(saklamak) için kullanılır.

Detaylı

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

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

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ı

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ı