UNIX/Linux ve Windows Sistemlerinde Dizin İçeriğinin Elde Edilmesi
|
|
- Ceren Şener
- 7 yıl önce
- İzleme sayısı:
Transkript
1 UNIX/Linux ve Windows Sistemlerinde Dizin İçeriğinin Elde Edilmesi Kaan Aslan 11 Haziran 2007 UNIX/Linux ve Windows sistemlerinde dizinlerle dosyalar tamamen aynı biçimde organize edilir. Dizinlerle dosyalar arasındaki tek fark, dosyalara ilişkin bloklarda dosya bilgileri bulunduğu halde dizinlere ilişkin bloklarda dizin girişlerinin bulunmasıdır. Bazı POSIX sistemlerinde dizinler de dosyalar gibi open fonksiyonuyla açılıp içerikleri read fonksiyonuyla okunabilmektedir. Böyle sistemlerde dizinlerin içerisinde bulunan dosya isimleri ve dosyaların düğüm numaraları normal dosya işlemleriyle elde edilebilir. Fakat dizin girişlerinin veri yapıları dosya sistemine göre bazı farklılıklar gösterebiliyorlar. Yani eğer programcı dizin içeriğini bu biçimde elde edecek olsa read fonksiyonu ile her sisteme göre değişik uzunlukta okumalar yapması ve okunanları değişik biçimlerde yorumlaması gerekecektir. Bundan dolayı UNIX türevi sistemlerin büyük çoğunluğu uzunca bir süredir dizin içeriklerinin doğrudan read fonksiyonlarıyla okunabilmesine izin vermiyorlar [1]. Dizin içeriklerinin taşınabilir bir biçimde elde edilmesi için prototipleri <dirent.h> içerisinde bulunan opendir, readdir, seekdir, rewinddir, telldir ve closedir isimli POSIX fonksiyonları kullanılmaktadır. UNIX/Linux sistemlerinde dizin listesini elde etmek için gereken ilk fonksiyon opendir fonksiyonudur. Bu fonksiyona içeriği elde edilecek dizininin yol ifadesi verilir ve fonksiyondan bir handle değeri elde edilir. Bu handle değeri de diğer fonksiyonlara argüman olarak geçirilir. opendir fonksiyonunun prototipini inceleyiniz: DIR *opendir(const char *dirname); Fonksiyon içeriği elde edilecek dizinin yol ifadesini parametre olarak alır. Başarı durumunda DIR isimli bir yapı adresine geri döner. POSIX standartlarında DIR isminin bir tür belirttiği söylenmiştir fakat bunun nasıl bir tür olduğu hakkında bir belirlemede bulunulmamıştır. Programcı elde ettiği bu DIR türünden adresi yalnızca diğer fonksiyonlara parametre olarak geçirmek için kullanır. Yani programcı DIR yapısının içeriğini bilmek zorunda değildir. opendir fonksiyonu başarısız olabilir. Başarısızlık durumunda NULL adresle geri döner. Başarısızlığın tipik nedenleri ve errno değişkeninin aldığı değerler şunlardır: 1
2 EACCESS : Yol ifadesine ilişkin herhangi bir bileşene erişim hakkı yoktur ENAMETOOLONG : Yol ifadesi PATH_MAX değerinden daha uzundur ya da yol ifadesinin bir bileşeni NAME_MAX değerinden daha uzundur. ENOENT : Fonskiyonun paarametresi bir dizini belirtmemektedir ya da boş bir yazıdan oluşmaktadır ELOOP : Sembolik bağlantılardan dolayı döngüsel bir durum oluşmuştur.... :... Hata kodlarında da gördüğünüz gibi opendir fonksiyonuyla bir dizini açabilmeniz için her yol bileşenine ilişkin dizine x hakkınızın olması ( r hakkı gerekmiyor) ve ayrıca hedef dizine de r hakkınızın olması gerekir. Örneğin /usr/include dizinini açabilmeniz için usr ve include dizinleri için x hakkına ve ayrıca include dizini için de ayrıca r hakkına sahip olmalısınız. opendir fonksiyonunu şöyle kullanabilirsiniz: DIR *dir;... if ((dir = opendir("/usr/include")) == NULL) perror("opendir"); opendir fonksiyonuyla dizini açtıktan sonra artık readdir fonksiyonuyla dizin içerikleri elde edilebilir. readdir fonksiyonu her çağrıldığında bir sonraki dizin elemanını verecektir. Prototipini inceleyiniz: struct dirent *readdir(dir *dir); Fonksiyon opendir fonksiyonundan elde edilen handle değerini parametre olarak alır. Başarı durumunda dizin girişine ilişkin bilgilerin bulunduğu dirent isimli bir yapının adresiyle, başarısızlık durumunda NULL değeriyle geri döner. Başarısızlığın iki nedeni olabilir. Birinci ve muhtemel nedeni dizin listesinin sonuna gelinmesidir. Bu durum programcı tarafından normal karşılanmalıdır. İkinci durumda ise daha ciddi bir giriş/çıkış problemiyle karşılaşımıştır. Eğer fonksiyon dizin listesinin sonuna gelmekten dolayı başarısız olduysa errno değişkeninin değeri değişmez. Yok eğer fonksiyon ciddi bir okuma hatasından dolayı başarısız olmuşsa errno değişkenine hata değeri atanır. Hata durumunda errno değişkeninin alabileceği önemli değerler şunlardır: 2
3 EBADF : Fonksiyonun parametresi. ENOENT : Dizin okumasında hata oluşmuştur.... :... errno değişkeninin alabileceği diğer değerler için dökümanlara başvururabilirsiniz. i-node tabanlı sistemlerde dizin girişi tipik olarak dosya ismi ve i-node numarasından oluşmaktadır. dirent yapısı tipik olarak aşağıdaki gibidir: struct dirent char d_name[name_max]; ino_t d_ino; ; POSIX standartlarına göre dirent yapısı daha fazla eleman içerebilir. Fakat en azından dosyanın ismini belirten bir d_name elemanı ile düğüm numarasını belirten bir d_ino elemanının olması gerekir. dirent yapısı da <dirent.h> başlık dosyası içerisinde bildirilmiştir. opendir fonksiyonuyla açılan dizin closedir fonksiyonuyla kapatılmalıdır. closedir fonksiyonunun prototipi de şöyledir: int closedir(dir *dir); Fonksiyon açılan dizine ilişkin handle değeri parametre olarak alır ve açılmış olan dizini kapatır. closedir fonksiyonu başarı durumunda sıfır değerine başarısızlık durumunda -1 değerine geri döner. Dizin doğru bir biçimde açıldıysa kapatılamaması için bir neden yoktur. Bu nedenle fonksiyonun geri dönüş değerini kontrol etmeyebilirsiniz. Başarısızlık durumunda errno değişkeninin alacağı değerler için dökümanlara başvurabilirsiniz. Tıpkı dosyalarda olduğu gibi dizinler de prosesin sonlanmasıyla otomatik olarak kapatılmaktadır. Sonraki örneklerimizde bu nedenle exit fonksiyonuyla prosesi sonlandırmadan önce closedir fonksiyonunu uygulamayacağız. Dizin içerisindeki dosyaların isimlerini tipik olarak aşağıdaki gibi elde edebiliriz: 3
4 /* dirlist1.c */ #include <stdio.h> #include <stdlib.h> void err_sys(const char *msg) perror(msg); fflush(stdout); int main(void) DIR *dir; struct dirent *ent; if ((dir = opendir("/usr/include")) == NULL) err_sys("opendir"); while ((ent = readdir(dir))!= NULL) printf("%s\n", ent->d_name); closedir(dir); return 0; Derlemeyi şöyle yapabilirsiniz: gcc o dirlist1 dirlist1.c Döngünün her yinelenmesinde yeni bir dosyanın bilgileri elde edilmektedir. Nihayet dizin listesi bittiğinde readdir fonksiyonu NULL değerine geri döner ve döngüden çıkılır. Tabi burada yalnızca dizin listesi bittiğinde değil bir giriş/çıkış hatası olduğunda da readdir fonksiyonu NULL ile geri döneceğinden döngüden çıkılacaktır. Giriş/çıkış hatası olasılığını gözardı edebilirsiniz. Çünkü herşeyi düzgün yaptığınız bir durumda böyle bir hatanın ortaya çıkma olasılığı da yoktur. Fakat tam bir hata denetimi sağlamak istiyorsanız başarısızlığın nedenini tespit etmelisiniz. Bunun için readdir fonksiyonunu çağırmadan önce errno değişkenine değer atanmalı, döngü çıkışında bu değere bakılmalıdır. /* dirlist2.c */ #include <stdio.h> #include <stdlib.h> #include <errno.h> 4
5 void err_sys(const char *msg) perror(msg); int main(void) DIR *dir; struct dirent *ent; if ((dir = opendir("/usr/include")) == NULL) err_sys("opendir"); while (errno = 0, (ent = readdir(dir))!= NULL) printf("%s\n", ent->d_name); if (errno) err_sys("readdir"); closedir(dir); return 0; Derleme işlemi şöyle yapılabilir: gcc o dirlist2 dirlist2.c rewinddir fonksiyonu listeleme işlemini baştan başlatmak için kullanılmaktadır. Örneğin, opendir fonksiyonuyla dizini açtıktan sonra listeleme yaptınız, fakat closedir ile dizini kapatmadan bu işlemi bir kez daha yapmak istiyorsunuz. İşte bu durumda rewinddir ile dizinin yeniden başına geçebilirsiniz: void rewinddir(dir *dir); telldir fonksiyonu listeleme sırasında dizinde bulunulan konumu almak için kullanılır: long telldir(dir *dir); Alınan offset çoğu POSIX kütüphanesinde dizin içerisinde o anda bulunulan dosya sırasına ilişkin indeks numarası belirtse de standart genelinde böyle bir garanti verilmemiştir. Yani fonksiyon dizin içerisinde kalınan yeri belirten bir sayı vermektedir fakat bu sayının nasıl elde edileceği derleyicileri yazanların isteğine bırakılmıştır. seekdir fonksiyonu telldir fonksiyonu ile alınan konuma geri dönmek için kullanılmalıdır: 5
6 void seekdir(dir *dir, off_t offset); Fonksiyonun ikinci parametresi telldir fonksiyonundan alınan değeri belirtir. Fonksiyon dizin içerisinde daha önce alınmış pozisyona konumlandırma yapar. Dizin içeriğini listelemek için verdiğimiz bu örneklerde yalnızca dosyaların isimlerini yazdırdık. Peki dosyaların diğer özelliklerini nasıl yazdıracağız? İşte readdir fonksiyonuyla dosyaların düğüm isimlerini elde ettikten sonra stat fonksiyonuyla onların bilgilerini elde edebiliriz. Dizin listesini almakta kullandığımız ls programı da tamamen bu biçimde çalışmaktadır. Aşağıdaki program komut satırı argümanı olarak verilen dizin içerisindeki dosyaları listeliyor, inceleyiniz: /* dirlist3.c */ #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> #define MAX_PATH_LEN 1024 void err_sys(const char *msg) perror(msg); int main(int argc, char *argv[]) DIR *dir; struct dirent *ent; struct stat finfo; char path[max_path_len]; int result; if (argc!= 2) fprintf(stderr, "Wrong number of arguments!..\n"); if ((dir = opendir(argv[1])) == NULL) err_sys("opendir"); while (errno = 0, (ent = readdir(dir))!= NULL) snprintf(path, MAX_PATH_LEN, "%s/%s", argv[1], ent->d_name); if (stat(path, &finfo) < 0) err_sys("stat"); 6
7 printf("%-40s", ent->d_name); if (S_ISDIR(finfo.st_mode)) printf("<dir>\n"); else printf("%lu\n", finfo.st_size); if (errno) err_sys("readdir"); closedir(dir); return 0; Derleme işlemini aşağıdaki gibi yapabilirsiniz: gcc o dirlist3 dirlist3.c Programı çalıştırırken komut satırı argümanı olarak listelemek istediğiniz dizini vermelisiniz. Örneğin:./dirlist3 /usr/include Programda önce komut satırı argümanlarının sayısının kontrol edildiğini görüyorsunuz. Sonra opendir fonksiyonu ile dizin açılmış ve döngü içerisinde readdir fonksiyonu ile dizin girişleri okunarak stat fonksiyonu ile dosya bilgilerine erişilmiştir. Burada önemli bir anımsatma yapmak istiyoruz. stat fonksiyonu bizden dosyanın tüm yol ifadesini istemektedir. Halbuki readdir fonksiyonuyla yalnızca dosyanın ismini elde edebiliyoruz. O halde readdir fonksiyonuyla elde ettiğimiz dosya ismini dizinin yol ifadesiyle birleştirerek tüm yol ifadesini elde etmeliyiz. Bu işlem programda şöyle yapılmıştır snprintf(path, MAX_PATH_LEN, "%s/%s", argv[1], ent->d_name); snprintf fonksiyonu sprintf gibidir fakat bir güvenlik parametresi vardır. Fonksiyon en fazla bu sayıda (null karakter dahil olmak üzere) karakteri hedef diziye yazar. Diziyi neden 1024 byte uzunlukta açtığımızı merak edebilirsiniz. Bu kadar geniş açmamızın nedeni çok uzun dosya isimlerinin probleme yol açmasını engellemektir. Bir dosya isminin ya da yol ifadesinin POSIX sistemlerinde en fazla hangi uzunlukta olabileceği konusunun bazı ayrıntıları olduğu için burada kodu karıştırmak istemedir. Aslında her defasında readdir ile elde ettiğimiz dosya ismini yol ifadesiyle birleştirmek yerine prosesin çalışma dizinini de chdir fonksiyonuyla değiştirebilirdik. Bu durumda program aşağıdaki gibi olurdu: /* dirlist4.c */ #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> 7
8 void err_sys(const char *msg) perror(msg); int main(int argc, char *argv[]) DIR *dir; struct dirent *ent; struct stat finfo; int result; if (argc!= 2) fprintf(stderr, "Wrong number of arguments!..\n"); if ((dir = opendir(argv[1])) == NULL) err_sys("opendir"); if (chdir(argv[1]) < 0) err_sys("chdir"); while (errno = 0, (ent = readdir(dir))!= NULL) if (stat(ent->d_name, &finfo) < 0) err_sys("stat"); printf("%-30s", ent->d_name); if (S_ISDIR(finfo.st_mode)) printf("<dir>\n"); else printf("%lu\n", finfo.st_size); if (errno) err_sys("readdir"); closedir(dir); return 0; Dizin değiştirme işlemi şöyle yapılmıştır: if (chdir(argv[1]) < 0) err_sys("chdir"); Bu işlemden sonra artık prosesin çalışma dizini (current working directory) komut satırında belirtilen dizin olacaktır. Bu nedenle stat fonksiyonuna verilen dosya ismine herhangi bir ekleme yapmaya gerek duyulmamıştır. readdir fonksiyonuyla dosyaların elde edilme sıralarının isme ya da uzunluğa göre olmadığını belirtelim. Dosyalar dizin içerisindeki doğal sıraya göre elde edilmektedir. Doğal sıra, dizin dosyası içerisindeki dizin girişlerinin oluşturulma sırasıdır. Tabi bir 8
9 dosya silindiğinde yeni gelen dosya listenin sonuna değil, silinmiş olan girişin yerine girebilir. Bu durumda elde edilen sıranın dizin girişlerinin yaratılma zamanlarına ilişkin olduğunu bile söyleyemeyiz. Eğer dosyaları isme ya da uzunluğa göre listelemek istiyorsanız önce onları dinamik büyütülen bir dizide toplamanız daha sonra da sıralamanız gerekir. Bu işlemi C++'da aşağıdaki gibi yapabilirsiniz: /* dirlist5.cpp */ #include <iostream> #include <cstdlib> #include <iterator> #include <algorithm> #include <string> #include <vector> #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <errno.h> using namespace std; void err_sys(const char *msg) perror(msg); int main(int argc, char *argv[]) DIR *dir; struct dirent *ent; struct stat finfo; int result; vector<string> dirlist; if (argc!= 2) cerr << "Wrong number of arguments!"; if ((dir = opendir(argv[1])) == NULL) err_sys("opendir"); if (chdir(argv[1]) < 0) err_sys("chdir"); while (errno = 0, (ent = readdir(dir))!= NULL) if (stat(ent->d_name, &finfo) < 0) err_sys("stat"); dirlist.push_back(ent->d_name); 9
10 if (errno) err_sys("readdir"); closedir(dir); sort(dirlist.begin(), dirlist.end()); copy(dirlist.begin(), dirlist.end(), ostream_iterator<string>(cout, "\n")); return 0; Burada vector içerisinde biz yalnızca dosya isimlerini tuttuk. Siz istersenin dosyanın stat bilgilerini de tutabilirsiniz. Derleme işlemini şöyle yapabilirsiniz: g++ -o dirlist5.cpp dirlist5.cpp Windows sistemlerinde dizin içeriğinin elde edilmesi POSIX sistemlerine benzer bir biçimde yapılmaktadır. FindFirstFile isimli API fonksiyonuna içeriği elde edilecek dosyalara ilişkin yol ifadesi verilir ve fonksiyondan bir handle değeri elde edilir. Bu fonksiyon aynı zamanda koşulu sağlayan ilk dosyanın bilgilerini de almaktadır. Daha sonra bir döngü içerisinde FindNextFile fonksiyonuyla diğer dosyalar elde edilir. Nihayet açılmış olan handle alanı FindClose fonksiyonuyla serbest bırakılır. FindFirstFile fonksiyonunun prototipi şöyledir: #include <windows.h> HANDLE FindFirstFile( LPCTSTR lpfilename, LPWIN32_FIND_DATA lpfindfiledata ); Fonksiyonun birinci parametresi bilgisi elde edilecek dosyaya ilişkin yol ifadesini (path name) belirtir. Yol ifadesi * ve? joker karakterlerini içerebilir. Bu durumda fonksiyon koşulu sağlayan ilk dosyanın bilgilerini elde eder. Fonksiyonun ikinci parametresi dosya bilgilerinin yerleştirileceği WIN32_FIND_DATA türünden yapının adresini alır. Fonksiyon dosya bilgilerini bu yapıya yerleştirmektedir. WIN32_FIND_DATA yapısı şöyledir: 10
11 #include <windows.h> typedef struct _WIN32_FIND_DATA DWORD dwfileattributes; FILETIME ftcreationtime; FILETIME ftlastaccesstime; FILETIME ftlastwritetime; DWORD nfilesizehigh; DWORD nfilesizelow; DWORD dwreserved0; DWORD dwreserved1; TCHAR cfilename[max_path]; TCHAR calternatefilename[14]; WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA; Yapının cfilename elemanı dosyanın ismini calternatefilename elemanı ise MSDOS uyumlu 8+3 lük kısa dosya ismini bulundurmaktadır. dwfileattributes elemanı dosyanın özelliklerini tutar. Bu eleman bit bit anlamlıdır ve ilgili özelliğin dosyada olup olmadığını belirlemek için tüm bitleri 0 olan yalnızca ilgili biti 1 olan değerlerle & işlemi uygulamak gerekir. Özelliklere ilişkin maskeleme değerleri <Windows.h> (alt dosya olarak <Winnt.h>) içerisinde bildirilmiştir. Bu değerlerden bazılarını aşağıda görüyorsunuz: #define FILE_ATTRIBUTE_READONLY #define FILE_ATTRIBUTE_HIDDEN #define FILE_ATTRIBUTE_SYSTEM #define FILE_ATTRIBUTE_DIRECTORY #define FILE_ATTRIBUTE_ARCHIVE... 0x x x x x Yapının ftccreationtime, ftlastaccesstime ve ftlastwritetime elemanları dosyanın yaratılış zamanını, son erişim zamanını ve son güncelleme zamanını tutmaktadır. (FAT12 ve FAT16 sistemlerinde yalnızca son güncelleme zamanı tutulmaktadır.) FILETIME iki DWORD ten oluşan aşağıdaki gibi bir yapıdır: #include <windows.h> typedef struct _FILETIME DWORD dwlowdatetime; DWORD dwhighdatetime; FILETIME, *PFILETIME, *LPFILETIME; Yapıdaki 64 bitlilk değer 01/01/1601 tarihinden itibaren geçen 100 nano saniyelerin sayısını UTC (eski ismiyle GMT) olarak verir. FILETIME yapısını tarih ve zaman bilgisine dönüştüren FileTimeToSystemTime fonksiyonunu kullanabilirsiniz. FileTimeToLocalFileTime fonksiyonu ise UTC yi yerel zamana dönüştürmektedir. Yapının nfilesizehigh ve nfilesizelow elemanları dosya uzunluğunu veren 64 bit değeri belirtiyor. Bu iki değeri Microsoft un int64 türüne (ya da C99 ve C++0x in long long türüne) dönüştürmek için LARGE_INTEGER birliği kullanılabilir: 11
12 #include <windows.h> typedef union _LARGE_INTEGER struct DWORD LowPart; LONG HighPart; u; LONGLONG QuadPart; LARGE_INTEGER, *PLARGE_INTEGER; Dönüştürmeyi şöyle yapabilirsiniz: LARGE_INTEGER li; WIN32_FIND_DATA fd; int64 fs;... li.u.lowpart = fd.nfilesizelow; li.u.highpart = fd.nfilesizehigh; fs = li.quadpart; FindFirstFile fonksiyonunun geri dönüş değeri FindNextFile fonksiyonu için kullanılacak handle değeridir. Fonksiyon başarısızlık durumunda INVALID_HANDLE_VALUE değerine geri döner. FindFirstFile fonksiyonunu aşağıdaki gibi kullanabilirsiniz: HANDLE hfind; WIN32_FIND_DATA fd; if ((hfind = FindFirstFile(_T("C:\\Windows\\*.exe"), &fd)) == INVALID_HANDLE_VALUE) _ftprintf(stderr, _T("Cannot find file, GetLastError = %u\n"), GetLastError()); FindFirstFile fonksiyonunu UNIX/Linux istemlerindeki opendir fonksiyonuna benzetebiliriz. Ancak gördüğünüz gibi Windows sistemlerinde bu fonksiyon joker karakterleri de alarak yalnızca belli koşulu sağlayan dosyaları bulabilmektedir. Windows sistemlerinde koşulu sağlayan diğer dosyaların bulunması FindNextFile fonksiyonuyla yapılmaktadır: #include <windows.h> BOOL WINAPI FindNextFile( HANDLE hfindfile, LPWIN32_FIND_DATA lpfindfiledata ); Fonksiyonun birinci parametresi FindFirstFile fonksiyonundan alınan handle değerini ikinci parametresi ise bulunan dosya bilgilerinin yerleştirileceği WIN32_FIND_DATA yapısının adresini alır. Fonksiyon başarı durumunda sıfır dışı bir değere başarısızlık durumunda sıfır değerine geri döner. Başarısızlığın tipik nedeni listenin sonuna gelinmesidir (yani bulunacak dosyanın kalmamasıdır). Bu durumda GetLasrError 12
13 fonksiyonu ERROR_NO_MORE_FILES değerine geri döner. FindClose fonksiyonuyla handle alanı kapatılmalıdır: İşlemler bitince #include <windows.h> BOOL WINAPI FindClose( HANDLE hfindfile ); Şimdi Windows ta dizin listesinin elde edilmesine yönelik bir örnek verelim. Örnekte C:\Windows dizininin içeriği listeleniyor. Fakat siz bu örnekten hareketle kodu istediğiniz gibi düzenleyebilirsiniz #include <stdio.h> #include <stdlib.h> #include <math.h> #include <Windows.h> #include <Tchar.h> void DispFileInfo(const WIN32_FIND_DATA *pfd); int main(void) HANDLE hfind; WIN32_FIND_DATA fd; if ((hfind = FindFirstFile(_T("C:\\Windows\\*.*"), &fd)) == INVALID_HANDLE_VALUE) _ftprintf(stderr, _T("FindFirstFile error: %u\n"), GetLastError()); do DispFileInfo(&fd); while (FindNextFile(hFind, &fd)); if (GetLastError()!= ERROR_NO_MORE_FILES) _ftprintf(stderr, _T("FindFirstFile error: %u\n"), GetLastError()); FindClose(hFind); return 0; void DispFileInfo(const WIN32_FIND_DATA *pfd) LARGE_INTEGER li; int64 fs; SYSTEMTIME st; li.u.lowpart = pfd->nfilesizelow; li.u.highpart = pfd->nfilesizehigh; fs = li.quadpart; 13
14 FileTimeToSystemTime(&pfd->ftLastWriteTime, &st); _tprintf(_t("%02d/%02d/%04d %02d:%02d "), st.wday, st.wmonth, st.wyear, st.whour, st.wminute); if (pfd->dwfileattributes & FILE_ATTRIBUTE_DIRECTORY) _tprintf(_t("%-18s"), _T("<DIR>")); else _tprintf(_t("%18i64u"), fs); _tprintf(_t(" %s\n"), pfd->cfilename); Ayrıca Windows Xp, 2000 ve Vista sistemlerine daha yetenekli yeni bir FindFirstFileEx fonksiyonu da eklenmiştir: #include <windows.h> HANDLE WINAPI FindFirstFileEx( LPCTSTR lpfilename, FINDEX_INFO_LEVELS finfolevelid, LPVOID lpfindfiledata, FINDEX_SEARCH_OPS fsearchop, LPVOID lpsearchfilter, DWORD dwadditionalflags ); Gördüğünüz gibi fonksiyon yetenek olarak oldukça geliştirilmiştir. Fonksiyonun ikinci ve dördüncü parametreleri daha çok geleceğe uyum için düşünülmüştür. Bu fonksiyon büyük harf küçük harf duyarlılığı ile de arama yapabilmektedir. Son olarak ayrı bir FindNextFileEx gibi bir fonksiyonun olmadığını belirtelim. FindFirstFileEx fonksiyonundan alınan handle değeri FindNextFile fonksiyonunda kullanılmaktadır. Java ve C# gibi nesne yönelimli programlama dillerinin kütüphanelerinde dizin içeriğini elde etmek için çeşitli sınıflar ve metotlar bulunmaktadır. Şüphesiz bu metotlar UNIX/Linux ve Windows sistemlerinde yukarıda belirttiğim sistem fonksiyonlarını kullanıyorlar..net kütüphanesinde System.IO isim alanındaki Directory sınıfının GetFiles isimli static metotları bir dizin içerisindeki dosyaları bulmak için kullanılmaktadır: public static string[] GetFiles( string path ) public static string[] GetFiles( string path, string searchpattern ) 14
15 public static string[] GetFiles( string path, string searchpattern, SearchOption searchoption ) Birinci metot dizin içerisindeki dosyaların hepsini, ikinci metot joker karakterleriyle verilen koşulu sağlayan dosyaları bulmaktadır. Üçüncü metot ise alt dizinlerde özyinelemeli arama yapabilmektedir. Benzer biçimde dizin içerisindeki dizinler de yine Directory sınıfının GetDirectories metotlarıyla elde edilebilir: public static string[] GetDirectories( string path ) public static string[] GetDirectories( string path, string searchpattern ) public static string[] GetDirectories( string path, string searchpattern, SearchOption searchoption ) Bu sınıflar ve metotlar Linux ve MacOS X sistemlerinde Mono altında da aynı biçimde kullanılabilir. Aşağıda bir örnek görüyorsunuz: using System; using System.IO; namespace CSD class Application public static void Main() try string[] files = Directory.GetFiles(@"C:\Windows"); foreach (string file in files) Console.WriteLine(file); string [] dirs = Directory.GetDirectories(@"C:\Windows"); foreach (string file in files) Console.WriteLine(file + " <DIR>"); 15
16 catch (Exception e) Console.WriteLine(e.Message); Bu metotların dosya isimlerini yol ifadeleriyle birlikte elde ettiğini belirtelim..net sisteminde dosya bilgileri FileInfo, dizin bilgileri ise DirectoryInfo sınıfı kullanılarak elde edilebilir. Java da dizin listesi System.io paketi içerisinde bulunan File sınıfı ile elde edilebilir. File sınıfının static olmayan list ve listfiles metotlarıyla dizin listesi elde edilebilir. Genel kullanım biçimi.net teki karşılığına benzemektedir. Aşağıda bir örnek görüyorsunuz: import java.io.*; class Main public static void main(string[] args) File dir = new File("c:\\windows"); String[] files; if ((files = dir.list()) == null) System.out.println("Cannot get files!"); System.exit(1); for(string s : files) System.out.println(s); list metotları hem dosyaları hem de dizinleri bulmaktadır. Bu metotlar dosya ismini yol ifadesi olmaksızın elde ederler. listfiles metotları ise dizin içeriğini File dizisi biçiminde vermektedir. [1] Linux sistemlerinde dizin listesini elde etmek için dizin önce open sistem fonksiyonuyla açılır ver getdents (eskiden readdir) sistem fonksiyonuyla okunur. 16
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ıUNIX/Linux ve Windows Sistemlerinde Proseslerin Çalışma Dizinleri
UNIX/Linux ve Windows Sistemlerinde Proseslerin Çalışma Dizinleri Kaan Aslan 12 Nisan 2008 UNIX/Linux ve Windows sistemlerinde her prosesin bir çalışma dizini (current working directory) vardır. Proseslerin
Detaylı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ı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ı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ı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ı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ı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ı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ı/ 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ı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ıUNIX/Linux Sistemlerinde exec İşlemleri
UNIX/Linux Sistemlerinde exec İşlemleri Kaan Aslan 10 Temmuz 2008 UNIX/Linux sistemlerinde fork fonksiyonu prosesin yeni ve özdeş bir kopyasını oluşturmaktadır. Yani fork işlemi sonrasında alt ve üst prosesler
Detaylı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ıVeri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:
Veri Yapıları Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz İçindekiler: Giriş Temel Veri Yapıları Tanımlamalı Veri Yapıları Veri Modeli ve Türleri
DetaylıGörsel Programlama 1
Görsel Programlama 1 1. Ekrana Hello world! yazan c# console application kodları: Console.Write("Hello world!"); 2. Ekranda ilk satıra Hello, ikinci satıra world! yazan kod: Console.WriteLine("Hello");
Detaylı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ıHSancak Nesne Tabanlı Programlama I Ders Notları
DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar
Detaylı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ı// hataları işaret eden referans
System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin
Detaylı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ı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ı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ı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ısayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)
5. İşaretç iler (pointers) C dilinin öyle bir özelliği vardır ki, programlama dilleri arasında kendisini diğerlerinden ayıran bir fark olarak sunulur: işaretçiler. Aslında, bazı diğer dillerde de direkt
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. [10 puan] int param = 30; int result = 300; if (param > 45) result
Detaylı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ı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ı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ıDÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()
(LOOPS) while(), do-while(), for(), foreach() Döngüler (loops) while do-while for foreach while ( koşul ) işlemler; do işlemler; while (koşul ); for (başlangıç ; koşul ; arttırma) işlemler; foreach ( tip
Detaylı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ıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 6: Diziler İçerik Diziler Dizi Elemanlarına İlk Atama Diziler ve Fonksiyonlar İki Boyutlu Diziler İki Boyutlu Dizi Tanımı İki Boyutlu Dizi Elemanlarına Erişim
Detaylı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ıJava 2 Standart Edition SDK Kurulum ve Java ya Giriş
Kurulum için ilk önce Sun Microsystems in sitesinden uygun J2SE sürümünü indirin. Ben J2SE v1. 4. 2_16 Windows Installer paketini kullandım J2SE SDK Kurulumu aşağıdaki gibi başlayacaktır. 1 Kurulum tamamlandıktan
Detaylı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ıBMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI
BİR BOYUTLU DİZİLER Amaçlar: 1. 1 BOYUTLU DİZİLERİ TANIMLAMAK 2. 1 BOYUTLU DİZİ UYGULAMALARI YAPMAK Örnek 5-1 Aşağıdaki program öğrenci notlarını bularak en iyi notu hesaplar. Harf notu şu şekilde hesaplanır:
DetaylıC++ Dersi: Nesne Tabanlı Programlama
C++ Dersi: Nesne Tabanlı Programlama Bölüm 7: Yapılar Diziler İçerik Yapıların Tanımı Yapılara İlk Değer Atama Yapı Elemanlarına Erişim İç içe Yapılar Yapılar ve Fonksiyonlar 2 Yapılar (structures) içinde
Detaylı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ı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ıİşletim Sistemlerinde Proseslerin Çevre Değişkenleri
İşletim Sistemlerinde Proseslerin Çevre Değişkenleri Kaan Aslan 21 Temmuz 2008 Modern işletim sistemlerinde her prosesin bir çevre değişken bloğu vardır. Prosesin çevre değişken bloğu çevre değişkenlerinden
Detaylı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ıBMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
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 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ı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ı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ıÖrnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar Değer Döndüren Fonksiyonlar Çok Parametreli Fonksiyonlar Değişken Kapsamları Çok Fonksiyonlu Programlar Fonksiyon Tanımı Karmaşıkveuzunprogramları,
DetaylıBĠ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ıHafta 13 Fonksiyonlar
BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.
DetaylıÇ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ı11- FONKSİYONLAR (FUNCTIONS)
1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar
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) 1. Kendisine gönderilen iki karakter dizisini birleştirip geriye tek bir dizi döndüren ve
DetaylıAdı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.
Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap
DetaylıSoket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu. İstemci. socket() Bir soket yarat. bind()
Soket IPC (bağlantı doğrultusunda olan istemci and sunucu operasyonları) Sunucu Bir soket yarat Sokete iyi bilinen bir port numarası bağla Bağlantılar için bir dinleme kuyruğu oluştur Bir bağlantıyı kabul
Detaylı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ıKOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ
KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRONİK VE HABERLEŞME MÜHENDİSLİĞİ Nesneye Yönelik Programlama C++ ile Beaglebone Black de Bluetooth Haberleşmesi Danışman: Yrd. Doç. Dr. Mehmet YAKUT Sinan
Detaylı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ı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 LABİRENT HAZIRLAYAN 122132151 Fahri DÖNMEZ DANIŞMAN
DetaylıNESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR Özlem AYDIN Trakya Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu sunumda Prof. Dr. Yılmaz KILIÇASLAN ın Nesneye Yönelik Programlama dersi sunumlarından faydalanılmıştır.
Detaylıwhile(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO
while(), do-while(), for() Döngü (loop) : Bir koşul sağlandığı (true olduğu) sürece bir veya birden çok komutun tekrarlanması işlemidir. Java Döngüler (loops) While() do-while() for ( ) while ( koşul )
Detaylı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ıRegular Expressions Version 0.1
Regular Expressions Version 0.1 Hüseyin Kaya hkaya@be.itu.edu.tr 2001 Özet Bu belge Linux and Unix Shell Programming adlı kitaptan faydalalınarak yazılmıştır. Kitabın yazarı David Tansley. İngilizce bilenler
Detaylı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ı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ıJAVA API v2.0 Belge sürümü: 2.0.2
JAVA API v2.0 Belge sürümü: 2.0.2 1. İçindekiler 1. İÇİNDEKİLER... 2 2. BU BELGENİN AMACI... 3 3. BELGE SÜRÜMLERİ... 3 4. SİSTEM GEREKSİNİMLERİ... 3 5. KULLANIM ŞEKLİ... 4 5.1. GENEL... 4 5.2. UYARILAR...
DetaylıRSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA
RSA ANAHTAR DAĞITIMI VE RSA İLE DİJİTAL İMZA OLUŞTURMA İlk defa 1977 yılında Ron Rivest, Adi Shamir ve Leonard Adleman tarafından oluşturulan RSA algoritması geliştiricilerinin soyisimlerinin ilk harfleriyle
Detaylı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ı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ıLambda İfadeleri (Lambda Expressions)
Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki
DetaylıUnix/Linux Sistem Programlama Ders Notları
Unix/Linux Sistem Programlama Ders Notları CSD 2002 Bu notlar C ve Sistem Programcıları Derneği'nin düzenlediği, Kaan Aslan tarafından açılmış olan Unix/Linux Sistem Programlama kursunda derste tutulan
DetaylıMAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş
MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101
Detaylı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ıJAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ
JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra
Detaylı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ı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ıStruct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI 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Ü Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri 1-14. hafta - Araş. Gör. Nesibe YALÇIN
Detaylı/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/
Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void
DetaylıC Programlama Dilinde Değişkenler
C Programlama Dilinde Değişkenler Değişkenler bir programlama dilinin en önemli bileşenlerindendir. En basit bir aritmetik işlemin bile kullanıcının girdiği değerleri saklamak için çeşitlik bellek alanlarına
DetaylıDizi ( Array ) ve Dizgi ( String )
Java da Dizi ( Array ) ve Dizgi ( String ) Tanımlama BBS-515 Nesneye Yönelik Programlama Ders #6 (25 Kasım 2009) İçerikç Geçen ders: Kalıtım ( inheritance ) -- tekrar ziyaret Java da super kullanımı Java
Detaylı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ıNesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.
Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır. Örneğin; bir öğrenci, sıra, çember, bir buton birer nesnedir. Bir
DetaylıTemel Veri Yapıları. (Veri Yapıları 1. Bölüm)
Temel Veri Yapıları (Veri Yapıları 1. Bölüm) Kaan Aslan 10 Haziran 2013 1. Giriş Programlarımızda tanımladığımız nesneler ya tek parçadan ya da birden fazla parçadan oluşurlar. Tek parçadan oluşan nesnelerin
DetaylıNesne İşaretçileri. Binnur Kurt Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi. Sınıf Yapısı. Kalıtım Çok Şekillilik
Binnur Kurt kurt@ce.itu.edu.tr Bilgisayar Mühendisliği Bölümü İstanbul Teknik Üniversitesi Sınıf Yapısı Kalıtım Çok Şekillilik Nesneye Dayalı Programlama 2 1 İşaretçiler, veri değil, verinin yerleşik bulunduğu
DetaylıDizi türündeki referanslar, dizi nesnelerine bağlanmaktadır. Dizi referansları tanımlamak bu dizinin hemen kullanılacağı anlamına gelmez...
Javada Diziler Java da diziler nesnedir; içerisinde belirli sayıda eleman bulunur. Eğer bu sayı sıfır ise, dizi boş demektir. Dizinin içerisindeki elemanlara eksi olmayan bir tam sayı ile ifade edilen
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 Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Temel Veri Tipleri C dilinde
DetaylıC++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References)
C++0x - Sağ Taraf Değerine Bağlanan Referanslar (Rvalue References) Kaan Aslan 25 Ağustos 2008 C++ a eklenmesine karar verilen yeni bir özellik de sağ taraf değerine bağlanan referanslardır. C++0x standart
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ı, verileri bir kere hazırlayıp, ikincil saklama
DetaylıİNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ
İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ AD SOYAD : TESLİM TARİHİ : OKUL NO : TESLİM SÜRESİ : 1 hafta Ödev No : 2 (İlk 2 soru el yazısı ile çıktı alınarak
DetaylıİNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ
İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 1 hafta Ödev No: 2 1- A)
DetaylıSunum İçeriği. Programlamaya Giriş 22.03.2011
Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon
DetaylıBölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31
Bölüm 6. Karma Olcay Taner Yıldız 2014 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, 2013 1 / 31 O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi
DetaylıDeğişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir
DİZİLER (ARRAYS) Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir değişken tanımlamak gereklidir. string gun1,
Detaylı12- HAZIR FONKSİYONLAR
fonksiyon Hazır Aritmetik String Tarih- Zaman Dosya-Dizin Dizi (Array) M.İLKUCAR MAKU-MYO 2010 1 12.1 Aritmetik Fonksiyonlar Math.Abs( reel sayı) >> reel sayının pozitif değerini verir Math.Ceiling(reel
Detaylı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 Yapılar ve Birlikler enum Deyimi
Detaylıenum bolumler{elektronik, insaat, bilgisayar, makine, gida};
BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı
DetaylıAdı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)
Adı Soyadı Öğrenci No 1 (20p) 2 (10p) +10p 3 (20p) 4 (25p) 5 (25p) +10p Toplam (100p) Açıklamalar: Öğrenciler yanlarında hatırlatma amacıyla sadece bir yüzüne C fonksiyonlarının açıkladıkları, kullanımlarını
DetaylıC de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma
C de Detaylı Üs Alma Programı Bu uygulama yazısında C de pow() fonksiyonunu kullanmadan üs hesabı yapan programı yazmaya çalıştım. Başta tanımladığım float tipinde 2 fonksiyon sayesinde + lı ve li üs değerleriyle
Detaylı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ıAndroid Ders Notları
Android Ders Notları 1. Yeni Bir Proje Başlatma Android Studio programında yeni bir proje başlatıyoruz. İlk olarak karşımıza resim 1 deki gibi bir pencere gelecek. Burada Application name kısmına proje
Detaylış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ı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ıProses. Prosesler 2. İşletim Sistemleri
2 PROSESLER Proses Bir işlevi gerçeklemek üzere ardışıl bir program parçasının yürütülmesiyle ortaya çıkan işlemler dizisi Programın koşmakta olan hali Aynı programa ilişkinbirdenfazlaprosesolabilir. Görev
Detaylı