C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması

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

Download "C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması"

Transkript

1 C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması Kaan Aslan 16 Temmuz 2003 Standart C fonksiyonlarını kullanmadan bir dosyanın her byte ı üzerinde sırasıyla işlem yapmak isteyelim. Herhalde ilk akla gelecek yöntem doğrudan işletim sisteminin sistem fonksiyonlarını çağırmak olacaktır. Örneğin UNIX/Linux sistemlerinde dosyayı read fonksiyonuyla (Windows sistemlerinde ReadFile fonksiyonuyla) byte byte aşağıdaki gibi okuyabiliriz: int fd; ssize_t result; unsigned char ch; if ((fd = open("test", O_RDONLY)) < 0) { perror("open"); exit(exit_failure); while ((result = read(fd, &ch, 1)) > 0) { /* Okunan byte işleniyor */ if (result < 0) { perror("read"); exit(exit_failure); close(fd); Dosyayı bu biçimde read fonksiyonuyla byte byte okumak göreli olarak yavaş bir işlemdir. Çünkü her byte'ın okunması için çağrılan read fonksiyonu prosesi çekirdek moduna geçirerek işlemini yapar. Evet, read fonksiyonu prosesi çekirdek moduna geçirdikten sonra okunacak byte'ı işletim sisteminin aşağı seviyeli disk önbellek sisteminde (buffer cache) arayacak ve belki de bu nedenle çok az bir bir disk işlemi yapılacaktır. Fakat ne olursa olsun çekirdek moduna geçiş ve önbellek sistemindeki sorgulama zaman alıcı işlemlerdir. Pekiyi bunun için nasıl bir yol izleyebiliriz? İlk akla gelecek yöntem read fonksiyonuyla her defasında bir byte okumak yerine bir hamlede çok byte okuyup bunları bir diziye yerleştirmek ve daha sonra byte'ları bu diziden almak olabilir. Böylece read fonksiyonunu daha az çağırmayı başarabiliriz. Örneğin read fonksiyonuyla her defasında 512 byte'ı bir diziye okuyup byte'ları teker teker bu diziden alabiliriz. Böylece read fonksiyonunu 512 kez daha az çağırmış oluruz. İşte burada sözünü ettiğimiz tamponlama işlemi zaten standart C fonksiyonları tarafından yapılmaktadır. C'nin standart dosya fonksiyonları sistem fonksiyonlarını daha az çağırmak için prosesin adres alanı içerisinde tamponlama uygular. Bu tamponlama sistemine göre, 1

2 dosyadan okuma yapmak istediğimizde standart C fonksiyonları önce bu isteği tampondan karşılamaya çalışır; eğer istek tampondan karşılanamazsa işletim sisteminin sistem fonksiyonlarını (POSIX sistemlerinde read fonksiyonunu, Windows sistemlerinde ReadFile fonksiyonunu) çağırarak tamponu yeni bir grup bilgiyle doldurur. Tüm standart C fonksiyonları önce tampona bakacak biçimde tasarlanmıştır. Örneğin POSIX sistemlerinde bir dosyayı fopen fonksiyonuyla açıp fgetc fonksiyonuyla byte byte okuduğumuzu düşünelim: FILE *f; int ch; if ((f = fopen("test", "r")) == NULL) { fprintf(stderr, "Cannot open file!..\n"); exit(exit_failure); while ((ch = fgetc(f))!= EOF) { /* Okunan byte işleniyor */ fclose(f); Dosyadan ilk byte'ı okuduğumuzda fgetc fonksiyonu tamponun boş olduğunu görecek ve read fonksiyonunu çağırarak tamponu dolduracaktır. Artık diğer fgetc çağırmalarında talep edilen bilgiler tampondan karşılanabilecektir. Konuya devam etmeden önce önbellek (cache) ve tampon (buffer) kavramları üzerinde biraz durmak istiyoruz. Önbellek ve tampon birbirlerine benzer ve bazen de birbirlerinin yerine kullanılabilen iki kavramdır. Tampon, bilgilerin geçici süre saklandığı bellek bölgelerini belirtir. Tampon kavramında bilgilerin geçici olarak bekletileceği bellek bölgesi üzerine vurgu yapılmaktadır. Önbellek terimi ise etimolojik olarak donanımsal kökenlidir. Önbellek sistemleri yavaş bellekteki bilgilerin bir kısmının hızlı bellekte tutulduğu ve böylece yavaş belleğe erişimin azaltıldığı sistemlerdir. Her önbellek sistemi de bir tampon içermektedir fakat her tampon bir önbellek sistemini gerçekleştirmek amacıyla kullanılıyor olmak zorunda değilidir. Standart C fonksiyonlarının kullandığı sistem daha çok bir önbellek sistemini çağrıştırıyor olsa da tampon ve tamponlama terimlerinin bu bağlamda daha yaygın olarak kullanıldığını görüyoruz. Bu nedenle biz de standart C fonksiyonlarının uyguladığı bu sisteme tamponlama (buffering) diyeceğiz. Modern sistemlerde standart C fonksiyonlarıyla çalıştığımız zaman iki düzey bir tamponlama sistemi içerisinde bulunuyor oluruz: Standart C fonksiyonlarının proses düzeyinde oluşturmuş olduğu tamponlama sistemi ve çekirdek tarafından oluşturulan aşağı seviyeli disk tamponlama sistemi (buffer cache). Stdio tamponlamasının amacı sistem fonksiyonlarını daha az çağırmak, çekirdek tamponlamasının (buffer cache) amacı ise disk erişimini azaltmaktır. Bu iki düzey tamponlamayı şekilsel olarak şöyle gösterebiliriz: 2

3 Standart C fonksiyonlarının uyguladığı tamponlama sistemi bir grup bilginin önce tampona çekilmesi ve oradan hedefe aktarılması fikrine dayanan basit bir sistemdir. Stdio tamponu hem okunabilen hem de yazılabilen (read/write) bir sistemidir. Yani okuma işlemi de yazma işlemi de tampon kullanılarak yapılmaktadır. Aslında C standartlarında stdio tampon sistemi yalnızca genel hatlarıyla açıklanmıştır ve ayrıntılara girilmemiştir. Fakat tipik olarak tek bloklu (single cache line) bir tampon sistemi kullanılır. Bu sistemde okuma yapıldığında eğer okunacak bilgi tamponda yoksa tampon ardışıl byte larla doldurulur ve sonraki işlemler tampondan karşılanır. Yazma sırasında da bilgi önce tampona yazılır. Tampona daha önce yazılmış bilgiler başka bilgilerin tampona çekilmesiyle, dosya göstericisinin konumlandırılmasıyla ya da açıkça fflush fonksiyonunun çağrılmasıyla dosyaya aktarılmaktadır. fopen fonksiyonuyla Açılan her dosyanın ayrı bir stdio tamponu vardır. Kullanılan tamponun varsayılan uzunluğu <stdio.h> doyasında bildirilmiş olan BUFSIZ sembolik sabitinin belirttiği değer kadardır. (Pek çok derleyicide BUFSIZ değeri 512 biçiminde define edilmiştir.) Şüphesiz <stdio.h> içerisindeki BUFSIZ sembolik sabitininin değeri ile oynayarak dosya tamponlarının varsayılan uzunluklarını değiştiremeyiz. BUFSIZ sembolik sabiti varsayılan büyüklüğün programcı tarafından bilinmesi için define edilmiştir. fgetc fonksiyonunu kullanarak bir dosyayı byte byte okuduğumuzu düşünelim. Tamponlama mekanizması kullanılıyor olsa bile böylesi bir işlemde fgetc fonksiyonunun her byte için yeniden çağrılması göreli bir zaman kaybına yol açabilmektedir. Çünkü ne de olsa fonksiyon çağırmanın da bir zamansal maliyeti vardır. Gerçi disk işlemlerinin söz konusu olduğu pek çok durumda böyle küçük kayıpların önemsiz olduğunu biliyorsunuz. Fakat yine de bazı kritik uygulamalar için bu zaman kaybının engellenmesi amacıyla standart C kütüphanesinde getc isimli bir fonksiyon da bulundurulmuştur. getc fonksiyonu fgetc fonksiyonunun makro biçiminde gerçekleştirilebilen uyarlamasıdır. (C standartlarında getc fonksiyonunun makro biçiminde yazılması zorunlu tutulmamıştır. Fakat pek çok derleyici bu fonksiyonu tipik olarak makro biçiminde bildirmektedir.) getc bir makro biçiminde oluşturulmuşsa, fonksiyon çağırmasından kaynaklanan göreli zaman kaybına yol açmaz. Benzer biçimde fputc fonksiyonunun da putc isimli makrolu bir uyarlaması vardır. fopen fonksiyonundan elde edilen dosya bilgi göstericisinin FILE isimli bir yapı türünden olduğunu biliyorsunuz. İşte FILE yapısının içerisinde tamponlama mekanizmasını yönetebilmek için gerekli elemanlar bulunmaktadır. fopen fonksiyonu FILE türünden yapı nesnesini tahsis eder, işletim sisteminin sistem fonksiyonlarıyla 3

4 dosyayı açar, tahsis ettiği FILE türünden yapı nesnesinin elemanlarına ilkdeğerlerini vererek bu nesnenin adresiyle geri döner. Örneğin bir C derleyicisindeki FILE yapısı şöyledir: typedef struct _iobuf { char *_ptr; int _cnt; char *_base; int _flag; int _file; int _charbuf; int _bufsiz; char *_tmpfname; FILE; Yapının _file elemanı sistem fonksiyonlarını çağırmak için gereken dosya betimleyicisidir. Tamponun adresi _base elemanı ile, aktif noktası da _ptr elemanı ile tutulmaktadır. Yapının _bufsize elemanı tamponun uzunluğunu, _cnt elemanı ise tampondaki byte sayısını belirtiyor (tamponun hepsi dosya içeriği ile dolu olmak zorunda değildir). Söz konusu kütüphanede fgetc fonksiyonu aşağıdaki gibi yazılmıştır: int fgetc (FILE* F) { return (-- F->_cnt >= 0)? (int) * F->_ptr++ : _filbuf ( F); Fonksiyonun _ptr göstericisinin gösterdiği yerdeki byte değeri ile geri döndüğünü görüyorsunuz. Eğer tamponun sonuna gelinmişse _fillbuf fonksiyonu çağrılarak tampon tazelemesi yapılmıştır. Yukarıda standart C fonksiyonlarının tampon mekanizmasını kabaca açıkladık. Şimdi bazı ayrıntılara gireceğiz. C'nin standart dosya fonksiyonları üç tamponlama modunda kullanılabilmektedir: 1. Tam tamponlamalı (full buffered) mod 2. Satır tamponlamalı (line buffered) mod 3. Sıfır tamponlamalı (unbuffered) mod Tam tamponlamalı modda tampon tam kapasiteyle kullanılır. Yani bilgi mümkün olduğu kadar tamponda bekletilmektedir. Dosyadan okuma yapılmak istendiğinde önce tampona başvurulur. Bilgi tamponda varsa oradan alınır. Eğer bilgi tamponda yoksa talep edilen bilginin bulunduğu kısım dosyadan okunarak tampona aktarılır. Tampon sistemi yukarıda da belirttiğimiz gibi hem okunabilen hem de yazılabilen bir sistemdir. Yani yazma işleminde de tampon kullanılmaktadır. Tam tamponlamalı durumda tampon ile dosya arasındaki aktarımlar tipik olarak şu durumlarda yapılmaktadır: 1. Yeni yapılan okuma işleminin tampondan karşılanamaması durumunda (cache miss). Böylesi bir durumda dosyaya başvurularak tampon doldurulur. Tabi tampona 4

5 daha önce yazma yapılmışsa tampondaki değişmiş bilgi de yeniden dosyaya aktarılacaktır. 2. Dosya göstericisi konumlandırıldığında. Dosya göstericisinin konumlandırılması sırasında konumlandırılan yerdeki bilgiler tampona çekilmektedir. 3. fflush işlemi sırasında. Dosya yazma modunda açılmışsa fflush fonksiyonu tampondaki bilgileri doğrudan dosyaya aktarır. Satır tamponlamalı modda tampona yalnızca bir satırlık bilgi alınır. Örneğin bu modda fgetc fonksiyonu ile bir byte okumak isteyelim. fgetc fonksiyonu tampon boşsa tamponu bir satırlık bilgiyle, yani dosya göstericisinin gösterdiği yerden itibaren '\n' karakterini görene kadar olan karakterlerle ( \n karakteri de dahil olmak üzere) doldurur. Benzer biçimde bu modda yazma durumu söz konusu olduğunda dosyaya aktarım için tamponun dolması beklenmez. Aktarım '\n' karakteri görüldüğünde (bu karakter dahil olmak üzere) yapılır. Örneğin, dosyanın satır tamponlamalı olarak açıldığını varsayalım ve dosyaya aşağıdaki gibi bir yazma yapmış olalım: fprintf(f, "Bu birinci denemedir"); bu bilgi önce tampona yazılacaktır ve henüz akratım yapılmayacaktır. Şimdi de aynı dosyaya aşağıdaki gibi bir yazma yaptığımızı düşünelim: fprintf(f, "Bu ikinci denemedir\n"); Bu karakterler de önce tampona yazılacak fakat '\n' karakteri görüldüğünden öncekilerle birlikte dosyaya aktarım yapılacaktır. Görüldüğü gibi satır tamponlamasında tamponda yalnızca bir satırlık bilgi tutulmaktadır. Sıfır tamponlamalı modda tampon hiç kullanılmaz. Bu durumda standart C fonksiyonları doğrudan sistem fonksiyonlarını çağırarak aktarımı yapar. Örneğin dosyanın sıfır tamponlamalı modda açıldığını varsayalım. UNIX türevi bir sistemde dosyadan fgetc fonksiyonuyla bir byte okuduğumuzda fgetc doğrudan read fonksiyonu çağırarak aktarımı yapacaktır. Bir dosyanın tamponlama modu ve tampon olarak kullanılacak bölge dosya açıldıktan sonra setbuf ve setvbuf fonksiyonlarıyla değiştirilebilir. Bu fonksiyonlar dosya fopen fonksiyonu ile açıldıktan sonra fakat dosya üzerinde henüz bir işlem yapılmadan önce çağrılmalıdır. setvbuf fonksiyonu işlevsel olarak setbuf fonksiyonunu kapsamaktadır. Bu nedenle önce setvbuf fonksiyonunu inceleyeceğiz: #include <stdio.h> int setvbuf(file *stream, char *buf, int mode, size_t size); Fonksiyonun birinci parametresi açılan dosyaya ilişkin dosya bilgi göstericisini, ikinci parametresi ilgili dosya tarafından kullanılacak tampon alanı belirtmektedir. Yani setvbuf fonksiyonu ile biz kendi tahsis ettiğimiz bir alanın tampon olarak kullanılmasını sağlayabiliriz. Üçüncü parametre tamponlama modunu belirtmektedir. Bu parametre _IOFBF, _IOLBF ya da _IONBF değerlerinden biri olarak girilebilir. 5

6 _IOFBF tam tamponlama, _IOLBF satır tamponlaması, _IONBF ise sıfır tamponlama anlamına gelmektedir. Fonksiyonun son parametresi ise ikinci parametre ile verilen tampon alanın uzunluğunu belirtmektedir. Eğer fonksiyonun üçüncü parametresi (yani tamponlama modu) _IONBF biçiminde girilirse ikinci parametredeki tampon alanın adresi ve son parametredeki tampon alanının uzunluğu dikkate alınmaz. Eğer tampon alanın adresi NULL adres olarak girilirse bu durumda tampon alan setvbuf fonksiyonunun kendisi tarafından tahsis edilir. Fonksiyon başarı durumunda sıfır değerine, başarısızlık durumunda sıfır dışı herhangi bir değer geri döner. Örneğin: FILE *f; if ((f = fopen("test.txt", "r")) == NULL) { fprintf(stderr, "Cannot open file!..\n"); exit(exit_failure); setvbuf(f, NULL, _IOLBF, BUFSIZ * 2); Burada dosya açılarak satır tamponlamalı moda geçirilmiştir. Fonksiyonun ikinci parametresi olan tampon adresi NULL geçildiğine göre BUFSIZ * 2 uzunluğundaki tamponun tahsisatı fonksiyonun kendisi tarafından yapılacaktır. Dosyayı aşağıdaki gibi sıfır tamponlamalı moda geçirebilirdik: setvbuf(f, NULL, _IONBF, 0); Eğer tampon alanı programcı tahsis edecekse, tahsis edilen alanın dosya kapatılana kadar yaşıyor durumda olması gerekir. Tipik olarak tampon alan dinamik bellek fonksiyonlarıyla tahsis edilebilir ya da static bir alan tampon olarak kullanılabilir. Örneğin: FILE *f; char *pbuf; if ((f = fopen("test", "r")) == NULL) { fprintf(stderr, "Cannot pen file!..\n"); exit(exit_failure); if ((pbuf = (char *) malloc(bufsiz * 2)) == NULL) { fprintf(stderr, "Cannot allocate memory!..\n"); exit(exit_failure); setvbuf(f, pbuf, _IOFBF, 2 * BUFSIZ);... fclose(f); free(pbuf); setvbuf fonksiyonu başarı durumunda 0 değerine başarısızlık durumunda -1 değerine geri döner. Argümanlar doğru girilse bile fonksiyon başarılı olmak zorunda değildir. 6

7 Yani tamponlama modunun değiştirilmesine derleyiciniz izin verebilir ya da vermeyebilir. setbuf fonksiyonu setvbuf fonksiyonunun daha az yeteneki bir biçimidir: #include <stdio.h> void setbuf(file *stream, char *buf); Fonksiyonun birinci parametresi ilgili dosyanın dosya bilgi göstericisini, ikinci parametresi ise tampon olarak kullanılacak alanın adresini alır. setbuf fonksiyonu dosyaya ilişkin tampon alanını değiştirmek için ya da dosyayı sıfır tamponlamalı moda geçirmek için kullanılmaktadır. Fonksiyonun ikinci parametresi NULL adres girilirse dosya sıfır tamponlamalı moda geçirilmiş olur. Dosyaların tamponlama modlarının setvbuf ve setbuf fonksiyonlarıyla değiştirilebileceğini gördük. Pekiyi bir dosya ilk açıldığındaki varsayılan tamponlama modu nedir? C standartlarında stdin, stdout ve stderr dışındaki dosyaların varsayılan tamponlama modları hakkında bir belirlemede bulunulmamıştır. Bu durumda bir dosyayı fopen fonksiyonuyla açtığımızda derleyiciler o dosyanın varsayılan tamponlama modunu herhangi bir biçimde belirleyebilirler. Şüphesiz en faydalı durum tam tamponlama olduğuna göre, eğer özel bir durum söz konusu değilse derleyicilerin bu belirlemeyi tam tamponlama olarak yapacağını söyleyebiliriz. Fakat standartlarda stdin, stdout ve stderr dosyalarının başlangıçtaki tamponlama modları için bazı belirlemelerde bulunulmuştur. Bunları iki maddede özetleyebiliriz: 1. stderr dosyası başlangıçta hiçbir zaman tam tamponlamalı modda olamaz. Satır tamponlamalı ya da sıfır tamponlamalı modda olabilir. 2. stdin ve stdout dosyaları başlangıçta karşılıklı etkileşimli bir aygıta yönlendirilmişse tam tamponlamalı modda, karşılıklı etkileşimli bir aygıta yönlendirilmemişse satır ya da sıfır tamponlamalı modda olmak zorundadır. (Klavye ve ekran karşılıklı etkileşimli aygıtlardır.) Bu anlatımlardan çıkan sonuçlar şunlardır: 1. stderr dosyası nereye yönlendirilmiş olursa olsun başlangıçta hiçbir zaman tam tamponlamalı modda olamaz. 2. stdout dosyası ekrana yönlendirilmişse başlangıçta tam tamponlamalı olamaz fakat satır ya da sıfır tamponlamalı olabilir. Benzer biçimde stdin dosyası da başlangıçta klavyeye yönlendirilmişse tam tamponlamalı olamaz fakat satır ya da sıfır tamponlamalı olabilir. 3. stdin ve stdout dosyaları program çalışmaya başladığında normal bir disk dosyasına yönlendirilmişse tam tamponlamalı modda olmak zorundadır. Burada stdin dosyası hakkında özel birkaç şey söylemekte yarar görüyoruz. C derleyicilerinin hemen hepsinde stdin dosyası başka bir aygıta yönlendirilmemişse satır tamponlamalıdır ve bu dosya sıfır tamponlamalı moda geçirilemez. Bunun 7

8 nedeni işletim sistemlerinin ve kabuk programlarının tasarımından kaynaklanmaktadır. Bu nedenle her ne kadar standartlarda işin başında stdin dosyasının sıfır tamponlamalı olabileceği belirtilmişse de uygulamada karşılaşılan tipik durum bu dosyanın satır tamponlamalı olmasıdır. C de prototipleri <stdio.h> içerisinde olan ve başı f harfiyle başlamayan scanf, printf, gets, puts gibi fonksiyonlar da aslında birer dosya fonksiyonudur. Bu fonksiyonlar varsayılan bir biçimde stdin ve stdout dosyalarını kullanırlar. Örneğin scanf fonksiyonu fscanf fonksiyonunun stdin dosyasından okuyan biçimi, printf fonksiyonu da fprintf fonksiyonunun stdout dosyasına yazan biçimidir. Yani: printf(...); scanf(...); çağırmaları ile: fprintf(stdout,...); fscanf(stdin,...); çağırmaları tamamen aynı işleve sahiptir. stdin ve stdout dosyaları da tıpkı diğer dosyalarda olduğu gibi tamponlama mekanizmasını kullanmaktadır. Oysa pek çok C programcısının bunu göz ardı ettiğini görüyoruz. stdin dosyasından okuma yapan getchar, scanf, gets gibi fonksiyonların aynı akımdan okuma yaptıkları için- aynı tamponu kullandıklarına dikkat ediniz. stdin dosyasından okuma yapan birkaç fonksiyon hakkında yapacağımız açıklamalar faydalı olabilir. getchar fonksiyonu stdin dosyasından 1 byte okumakta kullanılır. Prototipi şöyledir: int getchar(void); Fonksiyon başarı durumunda okunan değere, başarısızlık durumunda <stdio.h> içerisinde bildirilmiş olan EOF değerine geri döner. Başarısızlığın en önemli nedeni dosya sonuna gelinmiş olmasıdır. Fakat genel bir giriş/çıkış hatası da başarısızlığa yol açabilir. Bu durum feof ya da ferror fonksiyonuyla sorgulanabilir. C standartlarında EOF sembolik sabitinin hangi değerle tanımlanacağı konusunda kesin bir belirlemede bulunulmamıştır. Fakat C derleyicilerinin hemen hepsinde EOF sembolik sabitinin -1 olarak tanımlandığını görmekteyiz: #define EOF (-1) getchar fonksiyonunun geri dönüş değerinin int türden olduğuna dikkat ediniz. Fonksiyon başarı durumunda yüksek anlamlı byte ları sıfır olan düşük anlamlı byte ı okunan karakter olan bir değerle geri döner. Fonksiyonun neden char türüyle değil de int türüyle geri döndüğünü merak edebilirsiniz. Eğer fonksiyonun geri dönüş değeri char türden olsaydı fonksiyonun 0xFF numaralı byte mı okuduğu yoksa başarısız mı olduğu anlaşılamazdı. 8

9 gets fonksiyonu \n karakterini görene kadar ( \n karakteri de dahil olmak üzere) stdin dosyasından okuma yapar; \n karakteri yerine \0 karakterini diziye yerleştirir. gets fonksiyonunun prototipine dikkat ediniz: char *gets(char *s); Fonksiyon normal olarak parametresiyle aldığı adresin aynısına, hiç bir karakter okuyamadan EOF ile karşılaşırsa ya da bir giriş/çıkış hatası oluşursa NULL adresle geri dönmektedir. Aşağıdaki kod parçasını inceleyiniz: int ch1, ch2; char s[10];... ch1 = getchar(); putchar(ch); ch2 = getchar(); putchar(ch); gets(s); printf("%c\n%c\n%s\n", ch1, ch2, s); Burada birinci getchar çağrısı stdin tamponu boş olduğu için ve satır tamponlamalı mod söz konusu olduğu için ENTER tuşuna basılana kadar tüm bir satırı kullanıcıdan ister. Şimdi kullanıcının ilk getchar çağrısı için şunları girdiğini varsayalım: ankara<enter> Burada tüm bu karkterler tampona aktarılır. Girişin sonundaki ENTER karakteri de tampona \n karakteri olarak yerleştirilir. Tamponun görünümü şöyle olacaktır: Böylece ilk getchar fonksiyonu a karakterini alır. Tampon göstericisi bir ilerletilir. Akış ikinci getchar fonksiyonuna geldiğinde tamponun durumu şöyle olacaktır: ikinci getchar fonksiyonu tampon dolu olduğu için klavyeden giriş istemez. Tampondan n karakterini alarak onunla geri döner. Akış gets fonksiyonuna geldiğinde tamponun durumu şöyle olacaktır: 9

10 gets fonksiyonu da \n karakterini görene kadar ( \n karakteri de dahil) tampondan karakterleri okuyacak ve diziye yerleştirecektir. Bu durumda ekrana şunlar çıkacaktır: a n kara gets fonksiyonunun tasarımının hatalı olduğu artık herkes tarafından kabul edilmektedir. Çünkü fonksiyona argüman olarak biz ne kadar büyük bir dizi geçirirsek geçirelim ondan daha uzun bir satır girişi söz konusu olabilir. (Gerçi işletim sistemleri konsol girişlerini belli bir karakterde sınırlayabiliyor. Fakat bunun belirlenmesi de standart bir biçimde mümkün değildir.) Yani gets fonksiyonunu kullanırken dizi taşmasını engellemenin kesin bir yolu yoktur. Halbuki fonksiyona bir güvenlik parametresi eklenerek sorun giderilebilirdi. gets fonksiyonunun güvenlik parametresi alan düzeltilmiş bir biçimi şöyle yazılabilir: char *mygets(char *s, size_t size) { unsigned i; int ch; if (size == 0) return NULL; for (i = 0; i < size - 1; ++i) { ch = getchar(); if (ch == '\n') break; if (ch == EOF) { if (i == 0) return NULL; break; s[i] = ch; s[i] = '\0'; return s; 10

11 Bazı programcılar gets yerine fgets fonksiyonunu kullanmayı tercih ediyorlar. Ancak fgets fonksiyonunun \n karakterini de diziye yerleştirdiğini unutmayınız. gets yerine fgets kullanımının tipik biçimi şöyledir: char buf[size], *str; fgets(buf, SIZE, stdin); if ((str = strchr(buf, '\n'))!= NULL) *str = '\0'; Burada eğer satırdaki karakter sayısı SIZE 1 değerinden küçükse \n karakteri dizinin sonuna yerleştirilir. strchr fonksiyonuyla bu durum sorgulanmış ve eğer dizinin sonunda \n karakteri varsa bu karakter silinmiştir. Pekiyi stdin bir dosya olduğuna göre bu dosyanın bir sonu var mıdır? Bu soruyu şöyle yanıtlayabiliriz: Eğer stdin bir disk dosyasına yönlendirilmişse evet; fakat varsayılan durumda olduğu gibi terminale yönlendirilmişse hayır. Çünkü terminal gerçek bir dosya değildir. Biz getchar fonksiyonu ile okuma yapa yapa terminal dosyasının sonuna gelemeyiz. Fakat yine de klavyenin bir dosya gibi davranabilmesi için dosya sonu etkisi yaratan özel bir tuş birleşimi düşünülmüştür. Klavyeden bu özel bir tuş birleşimine basılırsa bu durum sanki stdin için dosya sonuna gelme (EOF) etkisi yaratır. Dosya sonuna gelme etkisi yaratan tuş birleşimleri Windows ta Ctrl Z, UNIX/Linux sistemlerinde genellikle Ctrl D dir. Örneğin: int ch; while ((ch = getchar())!= EOF) putchar(ch); Burada dosya sonuna gelinene kadar döngü içerisinde okuma yapıldığını görüyorsunuz. İlk getchar bizden bir satırlık bilgiyi isteyecek ve onun yalnızca ilk karakteriyle geri dönecektir. Sonraki getchar çağrıları tampondaki diğer karakterleri okuyacaktır. Tampondaki tüm karakterler okunduktan sonra sıradaki getchar yeni bir satırı bizden isteyecektir. Döngüden çıkmak için Windows sistemlerinde Ctrl Z, UNIX/Linux sistemlerinde Ctrl D tuşlarına basmak gerekir. Ancak bir noktaya dikkatinizi çekmek istiyoruz. Burada sözünü ettiğimiz özel tuş birleşimleri stdin dosyasını kapatmaz, yalnızca dosya sonuna gelinmiş gibi bir etki yaratır. Yani biz bu özel tuş birleşimlerine bastıktan sonra stdin dosyasından okuma yapmaya devam edebiliriz. Eğer stdin dosyasından okuma yapan bir fonksiyonun kullanıcıdan yeniden giriş almasını istiyorsanız stdin tamponunu boşaltmalısınız. Maalesef bunun için standart bir C fonksiyonu bulundurulmamıştır. [1] stdin tamponunun boşaltılması için getchar fonksiyonu ile \n karakteri ya da EOF karakteri görülene kadar okuma yapılabilir: while (getchar()!= '\n') ; 11

12 Bu döngüden EOF görüldüğünde (yani klavyeden özel tuş birleşimine basıldığında) çıkılamaz. Eğer döngüden EOF görüldüğünde de çıkılmasını istiyorsanız aşağıdaki kalıbı kullanabilirsiniz: int ch; while ((ch = getchar())!= '\n' && ch!= EOF) ; Örneğin: int ch1, ch2; ch1 = getchar(); while (getchar()!= '\n') ; ch2 = getchar(); burada hem ch1 hem de ch2 için yeniden giriş istenecektir. scanf fonksiyonu stdin dosyasından karakterleri teker teker okur, girişin başındaki boşluk karakterlerini atar, format karakterine uygun olmayan ilk karakteri gördüğünde onu tampona geri bırakarak işlemini sonlandırır. Prototipi şöyledir: int scanf(const char *format,...); scanf normal olarak yerleştirme yaptığı parça sayısına geri dönmektedir. Eğer hiçbir yerleştirme yapamadan dosya sonuna gelinirse ya da giriş/çıkış hatası oluşursa fonksiyon EOF değerine geri döner. Örneğin: int a, b, result; char s[50]; result = scanf("%d%d", &a, &b); gets(s); Aşağıdaki gibi bir giriş yapılmış olsun: 100ankara<ENTER> scanf fonksiyonu 1, 0, 0 karakterlerinden sonra a karakterini okuduğunda bunun formata uygun olmadığını görür; bu karakteri ungetc fonksiyonuyla tampona geri bırakarak 1 değeri ile geri döner. Dolayısıyla daha sonra çağrılan gets fonksiyonu tampondaki ankara yazısını okuyacaktır. Aşağıdaki gibi okumalarda tamponu boşaltmayı unutmayınız: 12

13 int no; char name[50]; scanf("%d", &no); while (getchar()!= \n ) ; gets(name); Daha önce de belirttiğimiz gibi stdout dosyası için de tampon kullanılmaktadır. Yazılanlar önce tampona yazılır ve daha sonra tampondan dosyaya aktarılır. Aşağıdaki örneği inceleyiniz: int val; printf("bir sayi giriniz:"); scanf("%d", &val); Eğer stdout dosyasının varsayılan tamponlama modu satır tamponlamalı (line buffered) ise bu durumda akış scanf çağrısına geldiğinde printf ile stdout dosyasına yazdırılanlar ekrana çıkmaz. Çünkü satır tamponlamalı modda \n karakteri görüldüğünde aktarım yapılmaktadır. Tabi stdout dosyasının varsayılan tamponlama modu sıfır tamponlamalı (unbuffered) ise yazılanlar hemen ekranda görünecektir. stdout dosyasının tamponlama modunun bazı derleyicilerde satır tamponlamalı bazılarında ise sıfır tamponlamalı olabileceğini anımsatalım. Eğer kod aşağıdaki gibi yazılsaydı hangi tamponlama modu söz konusu olursa olsun bir sorun çıkmazdı: int val; printf("bir sayi giriniz:\n"); scanf("%d", &val); Fakat burada da imlecin aşağı satırın başına geçtiğini görüyorsunuz. Eğer bunu istemiyorsanız stdout üzerinde fflush işlemi uygulamalısınız: int val; printf("bir sayi giriniz:"); fflush(stdout); scanf("%d", &val); Aynı etkiyi yaratabilmek için programın başında stdout dosyasını setvbuf fonksiyonuyla sıfır tamponlamalı moda de geçirebilirdiniz. [1] Bazı C derleyicilerinde sistemlerde fflush(stdin) çağırması ile stdin tamponu boşaltılabilmektedir. Ancak C standartlarına göre stdin dosyası yalnızca okunabilir modda açılmış durumdadır ve yazma modunda açılmayan dosyalara fflush işlemi uygulanamaz. Dolayısıyla fflush(stdin) işlemi C standartlarına göre tanımsız davranışa yol açmaktadır. 13

14 Kaynaklar Aslan, K. (2001). Sistem Programlama ve İleri C Uygulamaları Kurs Notları. İstanbul: C ve Sistem Programcıları Derneği. International Organization for Standardization / International Electrotechnical Commission. (1990). International Standard ISO/IEC 9899: Programming languages - C. New York: American National Standards Institute. Plauger, P. J. (1992). The Standard C Library. New Jersey: Prentice Hall. Stevens, R. (1993). Advanced Programming in the UNIX(R) Environment. Addison- Wesley Professional. 14

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

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ı

DOSYALAR. Temel terimler Hafta. Dr. Fahri Vatansever

DOSYALAR. Temel terimler Hafta. Dr. Fahri Vatansever DOSYALAR 4 5. Hafta Temel terimler Bit: 0 veya 1 değerini alabilen bilgisayardaki en küçük veri parçasıdır. Byte: 8 bit in yan yana gelmesiyle oluşan veri grubudur. Karakter: Yazımda kullanılan harfler,

Detaylı

Dosyalar 1.1 Dosya Nedir?

Dosyalar 1.1 Dosya Nedir? 1 Dosyalar 1.1 Dosya Nedir? Bilgisayar kullanımını gerektiren çoğu işler çok sayıda veri kullanır. Üstelik, aynı konularda bilgi veren verilerin gruplandırılarak bilgisayar izlencesinin her yürütülüşünde

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ı

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ı

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ı

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ı

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ı

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

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ı

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ı

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ı

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 ASCII Tablosu ve

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ı

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ı

Strings(Karakter Dizisi)

Strings(Karakter Dizisi) Strings(Karakter Dizisi) 0 {\ /\ Suhap SAHIN Onur GÖK 1 Tanımlama ve Kullanım char ad[20]; printf("adinizi girin: "); scanf("%s", ad); printf("\nmerhaba %s\n\n", ad); 2 Tanımlama ve Kullanım char ad[20];

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ı

12. Saat : Dosyalar I (Files)

12. Saat : Dosyalar I (Files) 12. Saat : Dosyalar I (Files) Dosyalar (Files) Programın çalışma esnasında her türlü değişken içinde tutulan ve işlenen bilgiler RAM (Read Access Memory) bellekte tutulur ve program sona erdiğinde RAM

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ı

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir:

Gereksiz Kodlar. burada if deyiminin else bölümüne gerek var mı? İfade doğruysa zaten fonksiyon geri dönüyor. Bu aşağıdakiyle tamamen eşdeğerdir: Gereksiz Kodlar Kaan Aslan 9 Temuz 1997 Kapalı spor salonu, durak yeri, taşıt aracı, en optimum, geri iade etmek, davranış biçimi Bu ifadelerde bir gariplik var, değil mi? Açık spor salonu göreniniz var

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ı

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ı

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ı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 23 May. 2016 PHP Dosya İşlemleri Form yolu ile kullanıcıdan alınan bilgilerin veri tabanı yerine

Detaylı

Diziler (Arrays) Çok Boyutlu Diziler

Diziler (Arrays) Çok Boyutlu Diziler Diziler (Arrays) Çok Boyutlu Diziler ÇOK BOYUTLU DİZİLER Birden fazla indis numarası ile elemanlarına ulaşılan dizilere çok boyutlu diziler denir. Bunlardan en sık kullanılanı çift boyutlu dizilerdir.

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ı

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ı

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA BLM-111 PROGRAMLAMA DİLLERİ I Ders-11 Karakter Diziler Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Karakter ve String Karakter Karakter bir sabit tek tırnak

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ı

Programlama Dilleri 1. Ders 4: Diziler

Programlama Dilleri 1. Ders 4: Diziler Programlama Dilleri 1 Ders 4: Diziler Genel Bakış Tanım Dizilerin tanımlanması Dizilere ilk değer verilmesi Yerel ve Global diziler Dizilerin birbirine atanması Diziler ile ilgili örnekler Çalışma soruları

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ı

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ı

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ı

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ı

BÖLÜM 5: TEMEL GİRİŞ/ÇIKIŞ FONKSİYONLARI

BÖLÜM 5: TEMEL GİRİŞ/ÇIKIŞ FONKSİYONLARI BÖLÜM 5: TEMEL GİRİŞ/ÇIKIŞ FONKSİYONLARI Bu bölümde, C programlama dilinde kullanılan temel giriş ve çıkış fonksiyonları ele alınacaktır. C programlama dilinde default (varsayılan) giriş cihazı klavye

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ı

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ı

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ TBIL-303-01 Veri Yapıları ve Algoritmalar İki Yönlü Bağlantılı Liste Uygulaması HAZIRLAYAN

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ı

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ı

8. İŞARETCİLER (POINTERS)

8. İŞARETCİLER (POINTERS) 8. İŞARETCİLER (POINTERS) Verilerin bilgisayar hafızasında tutulduğu fiziki alan adres olarak tanımlanabilir. Adres, hem donanımla hem de yazılımla ilişkilidir. Donanımsal açıdan adres bellekte yer gösteren

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ı

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ı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

Detaylı

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf Giriş GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI printf Fonksiyonu scanf Fonksiyonu Verilerin kaybolmaması için hafızada değişkenler içine yerleştirilmeleri gerekir. Bu veriler iki şekilde yerleştirilebilir. Değişkene

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ı

UNIX Türevi Sistemlerde Temel Dosya Fonksiyonları: open, close, read, write ve lseek

UNIX Türevi Sistemlerde Temel Dosya Fonksiyonları: open, close, read, write ve lseek UNIX Türevi Sistemlerde Temel Dosya Fonksiyonları: open, close, read, write ve lseek Kaan Aslan 12 Temuz 2008 Dosya sözcüğünü çok sık kullanırız. Fakat bu sözcüğü tanımlayabilmek o kadar kolay değildir.

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ı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN malloc Malloc fonksiyonu bir değişken için hafızadan bir blok yer ayrılması için kullanılır. Eğer hafızada yeterli alan yoksa fonksiyon NULL döndürür. int *ptr; ptr = (int *)

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 1 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlamaya C ile Programlamaya Yazılım: Bilgisayarın işlemler yapması ve karar vermesi

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

Detaylı

BLM 111 Algoritma ve Programlama I Güz 2018

BLM 111 Algoritma ve Programlama I Güz 2018 BLM 111 Algoritma ve Programlama I Güz 2018 Eğitmen: Dr. Umut Konur konur@beun.edu.tr 2618 Asistanlar: Batuhan Cem Öğe, Murat Varul, Ersin Kılıç Ders kitabı: Deitel & Deitel, C ve C++, Prentice Hall Başvuru

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ı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2) BLM-112 PROGRAMLAMA DİLLERİ II Ders-3 İşaretçiler (Pointer) (Kısım-2) Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Dinamik Bellek Yönetimi Bir program çalıştırıldığında

Detaylı

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI C programlama dilinde, diğer programlama dillerinde olduğu gibi, işlemler, ilk satırdan başlamak üzere sırayla çalışır. Program kontrol yapıları ise, programın

Detaylı

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200)

Mifare Kart Yazıcı/Okuyucu Modül (MFM-200) 2012 Mifare Kart Yazıcı/Okuyucu Modül (MFM-200) İstanbul Yazılım ve Elektronik Teknolojileri 01.01.2012 MFM-200 Mifare Kart Yazıcı/Okuyucu Modül Genel Özellikler Ürün Kodu MFM-200 Protokol ISO14443A, ISO15693

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ı

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma NB Ekran Seri Port Üzerinden Veri Okuma/Yazma Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma Genel Bilgi NB Ekranlar üzerinde 2 adet seri port bulunmaktadır. Bu portları kullanarak noprotocol modunda

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 Bellek ve Adresleme Dinamik Bellek

Detaylı

UNIX/Linux ve Windows Sistemlerinde Dosyaların ve Dizinlerin Silinmesi

UNIX/Linux ve Windows Sistemlerinde Dosyaların ve Dizinlerin Silinmesi UNIX/Linux ve Windows Sistemlerinde Dosyaların ve Dizinlerin Silinmesi Kaan Aslan 23 Temuz 2007 UNIX/Linux sistemlerinde bir dosyanın katı bağ sayısı 1 ise dosyayı tek bir dizin girişi göstermektedir.

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ı

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

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

Detaylı

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr) KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr) 1. Kendisine gönderilen iki karakter dizisini birleştirip geriye tek bir dizi döndüren ve

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ı

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır. DOSYALAMALAR Programlama bilgilerin her zaman ekrana yazdırılması veya değişkenlerde tutulması yeterli olmayabilir. Programın çalışması sonucu girilen yada hesaplanan her bilgi manyetik ortama programda

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ı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I DİZİLER (ARRAYS) Kullanıcıdan N tane tamsayı, xi, alalım ve 1. Bu sayıların ortalamasını hesaplamak isteyelim ort = 0; for (i=0; i

Detaylı

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ C PROGRAMLAMA DİLİ Diziler Dizi bir kümedir. Aynı tipteki verilere tek bir isimle erişmek için kullanılır. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe saklanır. Bu yüzden dizilere

Detaylı

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur: Jval tipi /blugreen/homes/plank/cs360/include/jval.h içerisinde bir Jval tipi tanımlanmıştır.büyük bir union yapısı aşağıdadır: typedef union { int i; long l; double d; void *v; char *s; char c; unsigned

Detaylı

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme: 1 Program Çözümleme Bir bilgisayar programını çözümleme eylemini, onun her satırının (deyiminin) yaptığı işi açıklamak olarak anlayacağız. Bazı kaynaklarda bu eyleme analiz der. Daha ileri düzeyde "trace"

Detaylı

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8

ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde

Detaylı

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi

Hafta 7 C Programlama Diline Giriş ve C Derleyicisi BLM111 Programlama Dilleri I Hafta 7 C Programlama Diline Giriş ve C Derleyicisi Yrd. Doç. Dr. Caner ÖZCAN C Programlama Dili Tarihçesi C programlama dili 1972 yılında Bell Laboratuarlarında Dennis Ritchie

Detaylı

C Programlama printf() Fonksiyonu

C Programlama printf() Fonksiyonu C Programlama printf() Fonksiyonu Standart C kütüphanesinin bir parçası olan printf() C Programlama Dili'nin genel amaçlı çıktı alma fonksiyonudur. Girdi ve çıktı deyimleri gerçekte C dilinin bir parçası

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ı

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ı

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ı

Temel Giriş/Çıkış Fonksiyonları (Devam) Örnek :

Temel Giriş/Çıkış Fonksiyonları (Devam) Örnek : Temel Giriş/Çıkış Fonksiyonları (Devam) Örnek : scanf() Fonksiyonu Birçok programda ekrana verilerin yazdırılması yanısıra klavyeden veri okunması gerekebilir. scanf() fonksiyonu klavyeden veri okumak

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ı

Ders 4: Temel Giriş/Çıkış Fonksiyonları

Ders 4: Temel Giriş/Çıkış Fonksiyonları Ders 4: Temel Giriş/Çıkış Fonksiyonları Giriş 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

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ı

UNIX/Linux ve Windows Sistemlerinde stdin, stdout ve stderr Dosyaları

UNIX/Linux ve Windows Sistemlerinde stdin, stdout ve stderr Dosyaları UNIX/Linux ve Windows Sistemlerinde stdin, stdout ve stderr Dosyaları Kaan Aslan 31 Mart 2010 Yalnızca UNIX/Linux sistemlerinde değil modern işletim sistemlerinin çoğunda aygıtlar birer dosyaymış gibi

Detaylı

Fen ve Mühendislik Uygulamalarında MATLAB

Fen ve Mühendislik Uygulamalarında MATLAB Fen ve Mühendislik Uygulamalarında MATLAB Dosya Yönetimi Fonksiyon Yapısı Doç. Dr. İrfan KAYMAZ MATLAB Ders Notları DOSYA YÖNETİMİ Şu ana kadar bir programda hesaplanan veya elde edilen veriler RAM de

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ı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar 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

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ı

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER

İstanbul Teknik Üniversitesi IEEE Öğrenci Kolu DİZİLER DİZİLER Dizi Nedir? Aynı türden nesnelerin oluşturduğu, bellekte bitişik bir biçimde bulunan veri yapısına dizi denir.mesela alfabe diye bir dizi tanımlarız, harfleri a,b,c,d... diye sıralarız.dizinin

Detaylı

DÖNGÜ DEYİMLERİ (while, do while, for)

DÖNGÜ DEYİMLERİ (while, do while, for) DÖNGÜ DEYİMLERİ (while, do while, for) Kaynak: C ve Sistem Programcıları Derneği Kurs notu Yrd.Doç.Dr. Mahmut YALÇIN while Döngü Deyiminin Kullanıldığı Örnekler Aşağıda, bir tamsayının kaç basamaklı olduğu

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ı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Karakter Dizileri Karakter Dizilerini Okumak ve Yazmak Karakter Dizilerinin Uzunluğunu

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ı