UNIX/Linux ve Windows Sistemlerinde Proseslerin Çalışma Dizinleri

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

Download "UNIX/Linux ve Windows Sistemlerinde Proseslerin Çalışma Dizinleri"

Transkript

1 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 çalışma dizinleri bu iki grup işletim sisteminde farklı biçimlerde belirlenmektedir. UNIX/Linux sistemlerinde bir prosesin çalışma dizini proses fork fonksiyonuyla yaratılırken üst prosesten alınır. exec işlemleri sırasında da yaratılmış olan prosesin çalışma dizini değişmez.yani bu sistemlerde bir proses bir alt proses yarattığında yaratılan alt prosesin çalışma dizini üst prosesin çalışma dizini ile aynı olacaktır. Windows sistemlerinde de alt prosesin çalışma dizini onu yaratan proses tarafından CreateProcess API fonksiyonu çağrılırken belirlenir. Her iki grup işletim sisteminde de prosesin çalışma dizini daha sonra belirli sistem fonksiyonlarıyla değiştirilebilmektedir. Yol ifadeleri (pathnames) bir dizin ya da dosyayı belirtmekte kullanılan karakter kümeleridir. Örneğin /a/b/c/d.dat bir yol ifadesidir. Dizin geçişlerinin UNIX türevi sistemlerde / karakterleriyle Windows sistemlerinde \ karakterleriyle ifade edildiğini biliyorsunuz. Yol ifadelerindeki / (Windows sistemlerinde \ ) karakterleriyle ayrılan her bir öğeye yol bileşeni (pathname component) deniyor. Örneğin "a/b/c/d.dat yol ifadesindeki "a", "b", "c" ve "d.dat" birer yol bileşenidir. Ayrıca UNIX/Linux sistemlerinde dizin ve dosyaların büyük harf - küçük harf duyarlılığına (case sensitivity) sahip olduğunu anımsatalım. Windows sistemleri dizin girişlerini büyük harf - küçük harf duyarlılığı ile oluşturuyor olsa da işleme sokarken büyük harflerle küçük harfleri aynı karakterlermiş gibi ele alıyor. Yol ifadeleri mutlak (absolute) ve göreli (relative) olmak üzere ikiye ayrılmaktadır. Prosesin çalışma dizini göreli yol ifadelerinin çözümlenmesinde kullanılan bir bilgidir. Eğer yol ifadesinin ilk karakteri / (Windows sistemlerinde \ ) ise söz konusu yol ifadesi kök dizinden başlayarak çözümlenir. Bu tür yol ifadelerine mutlak yol ifadeleri (absolute pathnames) denilmektedir. Mutlak yol ifadelerinin prosesin çalışma dizini ile bir ilgisi yoktur. Eğer yol ifadesinin ilk karakteri / (Windows sistemlerinde \ ) değilse böyle yol ifadelerine de göreli yol ifadeleri (relative pathnames) denir. Göreli yol ifadeleri prosesin çalışma dizininden itibaren yol belirtir. Örneğin, UNIX/Linux sistemlerinde unlink fonksiyonu ile bir dizin girişini silmek isteyelim: if (unlink("project/test") < 0) perror("unlink"); exit(exit_failure); Bu örnekte silinmek istenen dizin girişi project/test yol ifadesiyle belirtilmiştir. Yol ifadesinin ilk karakteri / olmadığı için bu yol ifadesi görelidir ve prosesin çalışma dizinine göre çözümlenecektir. Örneğin, prosesin çalışma dizininin o anda /home/kaan biçiminde olduğunu varsayalım. Bu durumda silinmek istenen giriş /home/kaan/project/test girişidir. Şimdi fonksiyonun şöyle çağrıldığını düşünelim: 1

2 if (unlink("/project/test") < 0) perror("unlink"); exit(exit_failure); Burada belirtilen yol ifadesi mutlaktır. Mutlak yol ifadeleri için prosesin çalışma dizinine başvurulmaz. Örneğimizde kökün altındaki /project dizininin altındaki "test" girişi silinmek istenmektedir. UNIX/Linux ve Window un tüm sistem fonksiyonlarındaki yol ifadeleri bu biçimde çözümlenmektedir. UNIX/Linux sistemleri için başka bir örnek daha verelim: int fd;... if ((fd = open("a.dat", O_RDONLY)) < 0) perror("open"); exit(exit_failure); open fonksiyonunda belirtilen a.dat yol ifadesi de görelidir. Dolayısıyla açılmak istenen dosya prosesin çalışma dizininde aranacaktır. POSIX standartlarına göre yol ifadelerindeki dizin geçişlerinde birden fazla / karakteri kullanılabilir. Örneğin, /a/b/c yol ifadesi ile /a//b////c yol ifadesi arasında bir fark yoktur. Fakat yol ifadesinin // biçiminde iki bölü karakteri ile başlatılması özel bir durum kabul edilmiş ve bu özel durumun yorumu işletim sistemini yazanlara bırakılmıştır (implementation dependent). Yol ifadesi ikiden fazla bölü karakteri ile başlarsa bu özel bir durum değildir ve bu durum yol ifadesinin tek bir bölü karakteri ile başlatılması ile aynıdır. Hiçbir karakter içermeyen (örneğin C'deki "" gibi) yol ifadeleri geçerli kabul edilmemektedir. Windows sistemlerinde de durum benzerdir. Dizin geçişlerinde birden fazla \ karakteri kullanılabilir. Örneğin C:\Windows\\\\\System yol ifadesi geçerlidir. Yol ifadelerinde katı ya da sembolik dizin bağlarından dolayı döngüsel bir durum oluşmamalıdır. Böylesi döngüsel durumlarda yol çözümlemesini yapan fonksiyonlar errno değişkenine ELOOP değerini yerleştirerek başarısızlıkla geri dönerler. Hem UNIX/Linux sistemlerinde hem de Windows sistemlerinde yol ifadelerindeki nokta bir önceki yol bileşeni ile belirtilen dizini temsil eder. Örneğin, UNIX/Linux sistemlerinde /home/./kaan/./test biçimindeki bir yol ifadesi geçerlidir. Bu yol ifadesindeki birinci nokta ondan bir önceki dizin olan /home dizinini temsil eder. Bu durumda yol ifadesindeki ikinci nokta da /home/kaan dizinini temsil edecektir. Yani bu yol ifadesi /home/kaan/test ile eşdeğerdir. Pekiyi, yol ifadesi olarak. ne anlama gelir? Bu göreli bir yol ifadesidir. Yol ifadelerindeki nokta önceki dizini belirttiğine göre ve önceki dizin de prosesin çalışma dizini olduğuna göre o halde. yol ifadesi de prosesin çalışma dizinini belirtecektir. Örneğin, prosesin çalışma dizini /home/kaan olsun. Bu durumda "." yol ifadesi de /home/kaan/. anlamına gelir. Nokta da bir önceki bileşeni temsil ettiğine göre belirtilmek istenen yol ifadesi prosesin çalışma dizini yani /home/kaan olacaktır. Ya da örneğin,./test ile test aynı yol ifadesini belirtmektedir. 2

3 UNIX/Linux ve Windows sistemlerinde yol ifadelerindeki.. önceki yol bileşeninden önceki yol bileşenini temsil eder. Örneğin, UNIX/Linux sistemlerinde /home/kaan/.. yol ifadesi /home anlamına gelmektedir. Ya da örneğin,../a.dat gibi bir yol ifadesi prosesin çalışma dizininin üst dizinindeki a.dat dosyasını belirtir. Özel bir durum olarak /.. gibi bir yol ifadesi de geçerlidir. Bu yol ifadesi -kök dizinin yukarısında bir dizin olmadığı gerekçesiyle- kök dizin anlamına gelir. Son olarak sonunda bir ya da birden fazla / karakteri bulunan yol ifadelerinin geçerli olduğunu belirtelim. (Örneğin /home/kaan/ gibi.) Böyle yol ifadeleri bir dizin belirtmelidir. Kabuk üzerinde çalışan kullanıcılar kabuğun imleci yüzünden sanki bir dizin üzerinde oturuyormuş hissine kapılabiliyorlar. Fakat aslında kabuk da sıradan bir prosestir ve kabuk üzerinde uygulanan cd komutu da aslında kabuk prosesinin çalışma dizinini değiştirmektedir. Makalenin giriş kısmında bir prosesin çalışma dizininin onu çalıştıran prosesten alındığını belirtmiştik. Eğer kabuk üzerinden dosyanın ismini yazarak bir programı çalıştırırsak aslında bu durumda o programı kabuk prosesi çalıştırmış olacaktır değil mi? Yani artık çalıştırılan proses kabuk prosesinin bir alt prosesidir. O halde çalıştırılan programın çalışma dizini de kabuk prosesinin o andaki çalışma dizini olacaktır. Örneğin kabuk üzerinde /home/kaan dizininde olalım. Burada test isimli bir program dosyası bulunuyor olsun. test isimli programı çalıştırdığımızda yaratılan prosesin çalışma dizini de /home/kaan olacaktır. Prosesin çalışma dizini alt prosese fork işlemi ile yaratım sırasında aktarıldığından yaratımdan sonra üst prosesin çalışma dizini değiştirildiğinde bunun alt prosese, alt prosesin çalışma dizini değiştirildiğinde de bunun üst prosese bir etkisi olmaz. UNIX/Linux sistemlerinde bir prosesin çalışma dizini chdir isimli POSIX fonksiyonuyla değiştirilebilir: #include <unistd.h> int chdir(const char *path); Fonksiyonun parametresi prosesin yeni çalışma dizinini belirten yol ifadesidir. Bu yol ifadesinin bir dizin belirtmesi gerekir. Fonksiyon başarı durumunda sıfır değerine, başarısızlık durumunda -1 değerine geri döner. Başarısızlık durumunda errno değişkenine yerleştirilebilecek bazı değerler şunlardır: EACCESS ENOENT ENOTDIR ELOOP : Yol bileşenlerine ilişkin dizinlerden en az birine x hakkı yoktur. : Yol ifadesine ilişkin dizin girişlerinden herhangi birisi yoktur ya da boş stringten oluşmaktadır. : Yol bileşenlerinden biri dizin olması gerekirken dizin değildir. : Sembolik bağlantılar yüzünden döngüsel bir durum oluşmuştur. : 3

4 Windows sistemlerinde dizin değiştirmek için SetCurrentDirectory isimli API fonksiyonu kullanılıyor. Fonksiyonun parametrik yapısını inceleyiniz: #include <windows.h> BOOL WINAPI SetCurrentDirectory(LPCTSTR lppathname); Fonksiyonun parametresi değiştirilecek dizinin yol ifadesini belirtiyor. Bu yol ifadesi mutlak ya da göreli olabilir. Fonksiyon başarılıysa sıfır dışı bir değere, başarısızsa sıfır değerine geri dönmektedir. Windows sistemlerinde yol ifadeleri sürücü (drive) de içerebilmektedir (full pathname). Bu sistemlerde prosesin çalışma dizini başka bir sürücünün bir dizini olacak biçimde değiştirilebilir. Örneğin: if (!SetCurrentDirectory("d:\\Study\\c")) fprintf(stderr, "Cannot change working directory!..\n"); exit(exit_failure); Windows sistemleri çevre değişkenleri yoluyla her bir sürücü için prosese özgü bir varsayılan dizin tutmaktadır. Prosesin çevre değişken listesinde =C:, =D:, =E:, biçiminde isimlendirilmiş çevre değişkenleri prosesin ilgili sürücülere ilişkin varsayılan dizinlerini belirtir. Örneğin: =C:=C:\study =D:=D:\test Burada C sürücüsü için varsayılan dizin C:\study, D sürücüsü için ise D:\test dizinidir. Eğer bir sürücü için bu biçimde bir çevre değişkeni tanımlanmamışsa, prosesin bu sürücü için varsayılan dizini, ilgili sürücünün kök dizini olur. Sürücüler için varsayılan dizinler SetCurrentDirectory fonksiyonu tarafından dikkate alınmaktadır. SetCurrentDirectory fonksiyonunun argümanı 4 biçimde girilebilir: 1. Yol ifadesi sürücü ismi içeren göreli bir yol ifadesidir ve yol ifadesindeki sürücü ismi prosesin çalışma dizininin ilişkin olduğu sürücüden farklıdır. Bu biçimdeki yol ifadesi ilgili çevre değişkeninde belirtilen dizin temel alınarak çözülür. Örneğin: DeleteFile("D:x.dat"); çağırmasıyla "D:\test\x.dat" dosyası silinmeye çalışılmaktadır. Çağırmanın şöyle yapıldığını düşünelim: SetCurrentDirectory("E:x.dat"); bu durumda "E:\x.dat" dosyası silinmeye çalışılır. (E sürücüsü için varsayılan dizin belirten bir çevre değişkeninin bulunmadığına dikkat ediniz. ) 4

5 2. Yol ifadesi sürücü ismi içeren mutlak bir yol ifadesidir. Bu durumda prosesin çevre değişkenlerine bakılmaz. Örneğin: DeleteFile("D:\x.dat"); burada "D:\x.dat" dosyası silinmek istenmektedir. 3. Yol ifadesi prosesin çalışma dizininin ilişkin olduğu sürücü ile aynı sürücüye ilişkin göreli bir yol ifadesidir. Bu durumda yol ifadesi prosesin çalışma dizininden itibaren çözülür. Örneğin: SetCurrentDirectory("C:\\windows"); DeleteFile("C:x.dat); bu çağırmalarla "C:\windows\x.dat" dosyası silinmek istenmektedir. 4. Yol ifadesinde sürücü ismi belirtilmemiştir. Bu durumda prosesin çalışma dizini hangi sürücüye ilişkinse yol ifadesi de o sürücüde mutlak ya da göreli bir yol belirtir. Örneğin: SetCurrentDirectory("C:\\windows"); DeleteFile("\\study"); bu çağırmalar sonucunda C:\x.dat" dosyası silinmek istenmektedir. Prosesin çalışma dizinini değiştirmek için Microsoft derleyicilerinde _chdir isimli bir kütüphane fonksiyonu da (POSIX sistemlerindeki chdir fonksiyonuna benzetilmiştir) bulunmaktadır. Şüphesiz bu fonksiyon arka planda arka planda SetCurrentDirectory API fonksiyonunu çağıracak biçimde yazılmıştır. Şimdi de proseslerin çalışma dizinlerinin nasıl elde edileceği üzerinde duralım. UNIX/Linux sistemlerinde proseslerin çalışma dizinleri getcwd isimli POSIX fonksiyonuyla elde edilebilir: #include <unistd.h> char *getcwd(char *buf, size_t size); Fonksiyonun birinci parametresi çalışma dizin inin yerleştirileceği char türden dizi nin adresini, ikinci parametresi ise birinci parametresiyle belirtilen dizi nin uzunluğunu belirtmektedir. Birinci parametreye NULL adres geçilmesi durumunda POSIX standartlarına göre fonksiyonun davranışı belirsizdir. [1] getcwd fonksiyonu başarı durumunda birinci parametreyle belirtilen adresin kendisiyle, başarısızlık durumunda NULL adres değeriyle geri döner. İkinci parametreyle belirtilen uzunluk eğer prosesin çalışma dizininin karakter uzunluğunun bir fazlasından (null karakterden dolayı) büyük ya da ona eşit değilse fonksiyon başarısız olmaktadır. Başarısızlığın önemli nedenleri şu errno değerleriyle temsil edilmektedir: 5

6 EINVAL : Fonksiyonun ikinci parametresi sıfırdır. ERANGE : Fonksiyonun ikinci parametresi sıfırdan büyüktüt fakat çalışma dizin ine ilişkin mutlak yol ifadesinin karakter uzunluğunun bir fazlasından küçüktür. EACCESS : Yol bileşenlerine ilişkin bir dizin e x hakkı ya da r hakkı yoktur. : getcwd fonksiyonu her zaman prosesin çalışma dizinini mutlak yol ifadesi olarak vermektedir. Bu mutlak yol ifadesi sembolik bağlantı içermez. Windows sistemlerinde prosesin çalışma dizini GetCurrentDirectory isimli API fonksiyonuyla elde edilmektedir: #include <windows.h> DWORD WINAPI GetCurrentDirectory( DWORD nbufferlength, LPTSTR lpbuffer ); Fonksiyonun ikinci parametresi çalışma dizin inin yerleştirileceği TCHAR türünden dizi nin adresini alır. Birinci parametre ise ikinci parametreyle belirtilen dizi nin null karakter dahil olmak üzere karakter uzunluğunu belirtmektedir. Birkaç olası durum söz konusudur: 1. Fonksiyon başarısız olursa sıfır değerine geri döner. Şüphesiz bu durum normal değildir. 2. Eğer argüman olarak verilen dizi, prosesin çalışma dizinine ilişkin yol ifadesinin null karakter dahil olmak üzere karakter uzunluğundan küçükse fonksiyon çalışma dizinini ikinci parametreyle belirtilen diziye yerleştirmez. Bu durumda fonksiyon null karakter dahil olmak üzere yol ifadesinin yerleştirileceği dizi nin uzunluğuyla geri döner. 3. Eğer argüman olarak verilen dizi, prosesin çalışma dizinine ilişkin yol ifadesinin null karakter dahil olmak üzere karakter uzunluğundan büyük ya da ona eşitse fonksiyon prosesin çalışma dizinini ikinci parametreyle belirtilen diziye yerleştirir ve yerleştirdiği karakter sayısı ile (null karakter dahil değil) geri döner. Programcı gereksinim duyulan dizi uzunluğunu elde etmek için birinci argümana sıfır ve ikinci argümana NULL değeri girebilir. Null karakterin dahil olup olmamasının kafa karşıklığına neden olabileceğini biliyoruz. O halde biraz daha açık örnek verelim. Prosesin çalışma dizini C:\study olsun (null karakter dahil 9 karakter). Fonksiyonu aşağıdaki gibi çağırmış olalım: 6

7 TCHAR buf[size]; DWORD dw; dw = GetCurrentDirectory(SIZE, buf); 1. Eğer SIZE değeri 9 dan küçükse fonksiyon yerleştirme yapmaz ve 9 değerine geri döner. 2. Eğer SIZE değeri 9 a eşit ya da 9 dan büyükse fonksiyon yerleştirme yapar ve 8 değerine geri döner. GetCurrentDirectory fonksiyonunun ASCII ve UNICODE versiyonlarının bulunduğuna dikkat ediniz. Fonksiyonun birinci parametresiyle ve geri dönüş değeriyle belirtilen uzunluk byte uzunluğu değil karakter uzunluğudur. Microsoft derleyicilerinde _getcwd isimli bir kütüphane fonksiyonu da vardır. Fonksiyonun parametrik yapısı POSIX karşılığına benzemektedir. Programlarınızda doğrudan bu fonksiyonu kullanabilirsiniz. Şüphesiz bu fonksiyon da arka planda GetCurrentDirectory fonksiyonunu çağırmaktadır. _getcwd fonksiyonu hakkında daha ayrıntılı açıklamaları MSDN yardım sisteminden elde edebilirsiniz. Aşağıda UNIX/Linux sistemleri için bir kabuk programını temsil eden örnek bir kod veriyoruz. Bu program, kabuk programlarının kendi çalışma dizinlerini imleç üzerinde nasıl görüntüledikleri hakkında bilgi verebilir: /* cmdline.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/stat.h> #include <dirent.h> #include <errno.h> /* Symbolic Constants */ #define PROMPT "CSD" #define MAX_CMD_LEN 256 #define MAX_CMD_PARAM 20 #define MAX_PATH 4096 /* Type Declarations */ typedef struct tagcmd char *pcmdtext; void (*proc) (void); CMD; 7

8 /* Function Prototypes */ void err_sys(const char *msg); void put_prompt(void); void parse_cmd_line(void); void change_dir(void); void list_dir(void); /* Global Data Definitions */ char g_cmdtext[max_cmd_len]; CMD g_cmd[] = "cd", change_dir, "dir", list_dir, NULL, NULL ; char *g_params[max_cmd_param]; int g_nparams; char g_cwd[max_path]; /* Function Definitions */ int main(void) char *pstr; int i; for (;;) put_prompt(); fgets(g_cmdtext, MAX_CMD_PARAM, stdin); if ((pstr = strchr(g_cmdtext, '\n'))!= NULL) *pstr = '\0'; parse_cmd_line(); if (!g_nparams) continue; if (!strcmp(g_params[0], "exit")) break; for (i = 0; g_cmd[i].pcmdtext!= NULL; ++i) if (!strcmp(g_params[0], g_cmd[i].pcmdtext)) g_cmd[i].proc(); break; if (g_cmd[i].pcmdtext == NULL) fprintf(stderr, "invalid command: %s\n", g_params[0]); return 0; void err_sys(const char *msg) perror(msg); exit(exit_failure); 8

9 void put_prompt(void) if (!getcwd(g_cwd, MAX_PATH)) err_sys("getcwd"); printf("%s:%s>", PROMPT, g_cwd); void parse_cmd_line(void) char *pstr; int i = 0; for (pstr = strtok(g_cmdtext, " \t"); pstr!= NULL; pstr = strtok(null, " \t")) g_params[i++] = pstr; g_nparams = i; void change_dir(void) if (g_nparams!= 2) fprintf(stderr, "wrong number of arguments!..\n"); return; if (chdir(g_params[1]) < 0) perror("chdir"); void list_dir(void) DIR *dir; struct dirent *ent; struct stat finfo; char pathfile[max_path], *pathdir; unsigned long tsize = 0; int nfiles = 0; if (g_nparams > 2) fprintf(stderr, "wrong number of arguments!..\n"); return; pathdir = g_nparams == 1? g_cwd : g_params[1]; if ((dir = opendir(pathdir)) == NULL) perror("opendir"); return; 9

10 printf("\n"); while (errno = 0, (ent = readdir(dir))!= NULL) sprintf(pathfile, "%s/%s", pathdir, ent->d_name); if (lstat(pathfile, &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); ++nfiles; tsize += finfo.st_size; if (errno) err_sys("readdir"); printf("\t%d file(s)\t\t%lu\n\n", nfiles, tsize); closedir(dir); Derleme işelmini şöyle yapabilirsiniz: gcc o cmdline cmdline.c Örneğimizde bir kabuk programının iskeletinin nasıl olabileceğini görüyorsunuz. Örnek kabuğumuza yalnızca cd ve dir komutlarını yerleştirdik. Fakat isterseniz bu komutlara yenisini ekleyebilirsiniz. main fonksiyonunun oldukça basit olduğunu görüyorsunuz. Bütün komutlar ve bu komutlar girildiğinde çağrılacak fonksiyonlar CMD türünden g_cmd isimli bir yapı dizisine yerleştirilmiştir. Kullanıcının girdiği komutlar parse_cmd_line isimli fonksiyonla argümanlarına ayrıştırılmış ve komut ile argümanların adresleri bir gösterici dizisinde toplanmıştır. Böylece her komut için çağrılan fonksiyonda argüman kontrolü kolayca yapılabilmektedir. Aynı programın Windows uyarlaması da şöyle yazılabilir: /* cmdline.c */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <windows.h> #include <tchar.h> /* Symbolic Constants */ #define MAX_CMD_LEN 256 #define MAX_CMD_PARAM 20 #define EXIT 1 #define NOEXIT 0 10

11 /* Type Declarations */ typedef struct tagcmd TCHAR *pcmdtext; void (*proc) (void); CMD; /* Function Prototypes */ void PutErrMsg(LPCTSTR pmessage, BOOL bexit); void PutPrompt(void); void ParseCmdLine(void); void ChangeDir(void); void DispFileInfo(const WIN32_FIND_DATA *pfd); void ListDir(void); /* Global Data Definitions */ TCHAR g_cmdtext[max_cmd_len]; CMD g_cmd[] = _T("cd"), ChangeDir, _T("dir"), ListDir, NULL, NULL ; TCHAR *g_params[max_cmd_param]; int g_nparams; TCHAR g_cwd[max_path]; /* Function Definitions */ int _tmain(void) TCHAR *pstr; int i; for (;;) PutPrompt(); _fgetts(g_cmdtext, MAX_CMD_PARAM, stdin); if ((pstr = _tcschr(g_cmdtext, '\n'))!= NULL) *pstr = '\0'; ParseCmdLine(); if (!g_nparams) continue; if (!_tcscmp(g_params[0], _T("exit"))) break; for (i = 0; g_cmd[i].pcmdtext!= NULL; ++i) if (!_tcscmp(g_params[0], g_cmd[i].pcmdtext)) g_cmd[i].proc(); break; if (g_cmd[i].pcmdtext == NULL) _ftprintf(stderr, _T("invalid command: %s\n"), g_params[0]); return 0; 11

12 void PutErrMsg(LPCTSTR pmsg, BOOL bexit) LPTSTR psysmsg; FormatMessage( FORMAT_MESSAGE_FROM_SYSTEM FORMAT_MESSAGE_ALLOCATE_BUFFER, NULL, GetLastError(), 0, (LPTSTR) &psysmsg, 0, NULL); if (pmsg) _ftprintf(stderr, _T("%s:%s\n"), pmsg, psysmsg); else _ftprintf(stderr, _T("%s\n"), psysmsg); LocalFree(pSysMsg); if (bexit) exit(exit_failure); void PutPrompt(void) if (!GetCurrentDirectory(MAX_PATH, g_cwd)) PutErrMsg(_T("GetCurrentDirectory"), EXIT); _tprintf(_t("%s>"), g_cwd); void ParseCmdLine(void) TCHAR *pstr; int i = 0; for (pstr = _tcstok(g_cmdtext, _T(" \t")); pstr!= NULL; pstr = _tcstok(null, _T(" \t"))) g_params[i++] = pstr; g_nparams = i; void ChangeDir(void) if (g_nparams!= 2) _ftprintf(stderr, _T("wrong number of arguments!..\n")); return; if (!SetCurrentDirectory(g_params[1])) PutErrMsg(NULL, NOEXIT); 12

13 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; 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); void ListDir(void) TCHAR *ppathdir; HANDLE hfind; WIN32_FIND_DATA fd; LARGE_INTEGER li; int64 tsize = 0; int nfiles = 0; TCHAR listpath[max_path]; if (g_nparams > 2) _ftprintf(stderr, _T("wrong number of arguments!..\n")); return; _tprintf(_t("\n")), ppathdir = g_nparams == 1? g_cwd : g_params[1]; _stprintf(listpath, _T("%s\\%s"), ppathdir, _T("*.*")); if ((hfind = FindFirstFile(listPath, &fd)) == INVALID_HANDLE_VALUE) PutErrMsg(_T("FindFirstFile"), EXIT); do DispFileInfo(&fd); if (!(fd.dwfileattributes & FILE_ATTRIBUTE_DIRECTORY)) li.u.lowpart = fd.nfilesizelow; li.u.highpart = fd.nfilesizehigh; tsize += li.quadpart; ++nfiles; while (FindNextFile(hFind, &fd)); 13

14 if (GetLastError()!= ERROR_NO_MORE_FILES) PutErrMsg(_T("FindFirstFile"), NOEXIT); _tprintf(_t("\t%d file(s)\t\t%lu\n\n"), nfiles, tsize); FindClose(hFind); Derleme işlemini şöyle yapabilirsiniz: cl cmdline.c UNICODE derleme yaparken UNICODE ve _UNICODE makrolarını tanımlamayı unutmayınız: cl -D UNICODE -D _UNICODE cmdline.c CLI ortamında prosesin çalışma dizini doğrudan System.Environment sınıfının CurrentDirectory isimli read/write property elemanı ile elde edilebilir ve değiştirilebilir. Aynı işlem eşdeğer olarak System.IO isim alanındaki Directory sınıfının GetCurrentDirectory ve SetCurrentDirectory isimli statik metotlarıyla da yapılabilmektedir. Şüphesiz bu property ler ve metotlar.net ortamında GetCurrentDirectory ve SetCurrentDirectory API fonksiyonlarını, Mono ortamında da getcwd ve chdir POSIX fonksiyonlarını kullanırlar. Benzer biçimde Java ortamında da prosesin çalışma dizini java.lang paketindeki System sınıfının getproperty isimli statik fonksiyonuyla alınıp setproperty isimli statik metoduyla değiştirilebilmektedir. Şimdi de proseslerin çalışma dizinlerinin çekirdek tarafından nasıl ele alındığı üzerinde duralım. İşletim sistemlerinde proseslerin çalışma dizinleri doğrudan ya da dolaylı olarak proses kontrol bloğunda tutulmaktadır. Örneğin Linux 2.6 çekirdeğinde prosesin çalışma dizininin proses kontrol bloğunda tutulması aşağıdaki veri yapısıyla sağlanır: struct task_struct struct fs_struct *fs; ; struct fs_struct struct path root, pwd; ; struct path struct vfsmount *mnt; struct dentry *dentry; ; 14

15 Gördüğünüz gibi Linux sistemlerinde her prosesin kök dizini ve çalışma dizini proses kontrol bloğunda ayrı ayrı tutuluyor. vfsmount ilgili dizinin içinde bulunduğu dosya sisteminin mount bilgilerini içermektedir. dentry ise Linux dosya sistemlerinde dizin girişleri için bellekte oluşturulan veri yapısıdır. Bu sistemlerde prosesin kök dizini de değiştirilebilmektedir. Windows sistemlerinde de prosesin çalışma dizini proses kontrol bloğunda (process database) yine benzer biçimde tutulur. Windows sistemlerinin kaynak kodları açık olmadığı için burada kesin bir açıklama yapmamız mümkün değil. [2] Fakat açık kaynak kodlu bir Windows sistemi olarak ReactOS tan örnek verebiliriz. ReactOS sistemlerinde proses kontrol bloğu EPROCESS (Executive Process) yapısıyla temsil edilmektedir. EPROCESS yapısının içerisinde bir gösterici PEB isimli yapıyı gösterir. Bu yapıya prosesin çevre bloğu (environment block) denilmektedir. Çevre bloğunun içerisinde RTL_USER_PROCESS_PARAMETERS türünden bir yapının adresi tutulur. Bu yapıda da prosese ilişkin çeşitli parametrik bilgiler vardır: typedef struct _EPROCESS struct _PEB* Peb; EPROCESS; typedef struct _PEB RTL_USER_PROCESS_PARAMETERS *ProcessParameters; PEB; typedef struct _RTL_USER_PROCESS_PARAMETERS CURDIR CurrentDirectory; RTL_USER_PROCESS_PARAMETERS; 15

16 Prosesin kök dizini ve çalışma dizini yol ifadelerinin çözülmesinde kullanılmaktadır. Bir sistem fonksiyonu bir yol ifadesini aldığında öncelikle o yol ifadesi ile belirtilen dizin girişine ilişkin bilgilere erişmeye çalışır. Yol ifadesinden hareketle ilgili dizin girişinin bilgilerine erişilmesi sürecine yol ifadesinin çözümlenmesi (pathname resolution) denilmektedir. Yol ifadelerinin çözümlenmesi pek çok işletim sisteminde benzer tekniklerle yapılmaktadır. İşletim sistemi bir dizinden başlar. Dizinlerden dizinlere geçerek hedeflenen girişe ilişkin bilgileri bulmaya çalışır. Örneğin Linux sistemlerinde bir dosya ya da dizine ilişkin bütün bilgiler bellekte inode denilen bir yapı içerisinde tutulmaktadır. Yol ifadelelerinin çözümlenmesi süreci de aslında hedeflenen dizin girişine ilişkin inode yapısının elde edilmesi sürecidir. Şüphesiz işletim sistemi disk üzerindeki tüm dosyaların bilgilerini inode yapısı olarak belleğe çekemez. Bu işlem ilgili dizin girişine gereksinim duyulduğunda yapılmaktadır. Linux sistemlerinde dizin girişlerine ilişkin inode yapıları ismine inode cache denilen bir cache sisteminde biriktirilmektedir. [1] Bazı UNIX türevi sistemlerde getcwd fonksiyonunun birinci parametresi NULL geçildiğinde fonksiyon kendi içerisinde malloc ile tahsisat yapıp prosesin çalışma dizinini buraya yerleştirerek tahsis edilen adrese geri dönmektedir. Fakat bu davranış POSIX sistemlerinde garanti altına alınmamıştır. [2] Windows 95'in proses kontrol bloğu "Matt Pietrek'in Windows 95 Programming SECRETS" isimli kitabında kısmen açıklanmaktadır. Kaynaklar Aslan, K. (2001). Win32 Sistem Programlama Kurs Notları. Istanbul: C ve Sistem Programcıları Derneği. Aslan, K. (2002). UNIX/Linux Sistem Programlama Kurs Notları. Istanbul: C ve Sistem Programcıları Derneği. Bovet, D. and Cesati, M. (2005). Understanding the Linux Kernel. Oreilly & Associates Inc. ISO/IEC :2003(E), Information techonolgy Portable Operating System Interface (POSIX) Part 2: System Interfaces. ISO/IEC :2003(E), Information techonolgy Portable Operating System Interface (POSIX) Part 1: Base Definitions. 16

17 Pietrek, M. (1995). Windows 95 System Programming SECRETS. California: IDG Books Worldwide, Inc. MSDN Library Reference ( Richter, J. M. (1999). Programming Applications for Microsoft Windows with Cdrom. 4th. Edition. Redmond, Washinton: Microsoft Press. Stevens, R., Rago, S. A. (2005). Advanced Programming in the UNIX(R) Environment (2nd Edition). Addison-Wesley Professional. 17

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ı

UNIX/Linux ve Windows Sistemlerinde Dizin İçeriğinin Elde Edilmesi

UNIX/Linux ve Windows Sistemlerinde Dizin İçeriğinin Elde Edilmesi 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

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ı

İşletim Sistemlerinde Proseslerin Çevre Değişkenleri

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

UNIX/Linux Sistemlerinde exec İşlemleri

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ı

HEAP SİSTEMİ. Oğuz Karan

HEAP SİSTEMİ. Oğuz Karan HEAP SİSTEMİ Oğuz Karan Özet: Bu makalede heap sistemi hakkında bilgiler verilmiş ve çeşitli sistemlerde heap sisteminin aşağı seviyeli çalışması anlatılmıştır. Ayrıca son bölümde CSD işletim sisteminin

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ı

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ı

CSD İŞLETİM SİSTEMİNİN SANAL DOSYA SİSTEMİNE İLİŞKİN TEMEL VERİ YAPILARI

CSD İŞLETİM SİSTEMİNİN SANAL DOSYA SİSTEMİNE İLİŞKİN TEMEL VERİ YAPILARI CSD İŞLETİM SİSTEMİNİN SANAL DOSYA SİSTEMİNE İLİŞKİN TEMEL VERİ YAPILARI Kaan Aslan 06/01/2004 Özet: Bu makale CSD İşletim Sisteminin sanal dosya sistemi üzerinde çalışacak yeni grup üyelerini desteklemek

Detaylı

LİNUX. Dosyalar ve dizinler

LİNUX. Dosyalar ve dizinler LİNUX Dosyalar ve dizinler Dosya sistemi Linux işletim sisteminde de dosya ve dizinler diğer Unix türevi işletim sistemlerinde olduğu gibi hiyerarşik yapıya sahiptir. En üst düzeyde olan kök dizini olarak

Detaylı

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

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

Detaylı

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ı

Proses. Prosesler 2. İşletim Sistemleri

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ı

PROSESLER. Proses. Proses

PROSESLER. Proses. Proses Proses 2 PROSESLER 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şkin birden fazla proses olabilir.

Detaylı

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

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ı

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ı

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ı

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ı

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ı

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

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

Detaylı

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ı

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ı

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ı

Unix/Linux Sistem Programlama Ders Notları

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ı

Hafta 13 Fonksiyonlar

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

Detaylı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı Ders 7 LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ 1 LINUX Yapısı LINUX işletim sisteminin diğer işletim sistemleri gibi kendine özgü bir yapısı vardır. LINUX yapısı ve bileşenleri aşağıdaki

Detaylı

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

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

Detaylı

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, kabuk ve diğer temel kavramlar) Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; 1. Performans: İşletim sistemi, makine

Detaylı

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur.

Linux işletim sistemlerinde dosya hiyerarşisinde en üstte bulunan dizindir. Diğer bütün dizinler kök dizinin altında bulunur. Dosya Sistemi ve Çalışma Mantığı Dosya Sistemi Disk üzerindeki dosyaların düzenlenmesini ve bir işletim sisteminde dosyaların izlerinin bulunmasını sağlayan yapıya Dosya Sistemi (File System) denir. Linux

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ı

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

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

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

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ı

Temel Linux Eğitimi 1., 2. ve 3. Bölümler

Temel Linux Eğitimi 1., 2. ve 3. Bölümler Süha TUNA Bilişim Enstitüsü UHeM Yaz Çalıştayı - 11.06.2012 İçerik 1. Linux, Kavramlar ve Dizin Yapısı 2. Temel Linux Komutları 3. Sunucuya Uzaktan Bağlanma 1. Linux, Kavramlar ve Dizin Yapısı Linux Linux,

Detaylı

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ

İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ İŞLETİM SİSTEMİ KATMANLARI (Çekirdek, Kabuk ve diğer temel kavramlar) Öğr.Gör. Dr. Dr. Şirin KARADENİZ Bir işletim sisteminin yazılım tasarımında ele alınması gereken iki önemli konu bulunmaktadır; Performans:

Detaylı

API(Application Programming Interface) Fonksiyonları:

API(Application Programming Interface) Fonksiyonları: API(Application Programming Interface) Fonksiyonları: Bir işletim sisteminin çalışırken kendisinin kullandığı, programcının da dışarıdan çağırabileceği fonksiyonları vardır. Bunlara sistem fonksiyonları

Detaylı

CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI

CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI CSD İŞLETİM SİSTEMİNDE SİSTEM FONKSİYONLARININ ÇAĞIRILMASI 07.07.2003 Burak DEMİRKOL Atılım BOY [v 1.0] Özet : Bu makalede CSD İşletim sisteminin sistem fonksiyonlarının user mod dan (ring 3) kernel mod

Detaylı

C Konsol ve Komut Satırı

C Konsol ve Komut Satırı C Konsol ve Komut Satırı Öğr. Gör. M. Ozan AKI Rev 1.0 C:\> Konsol ekranı, işletim sistemi ve dosya yönetiminin metin tabanlı yönetilebilmesini sağlayan arabirimdir. Windows işletim sistemi ortaya çıkmadan

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ı

Unix/Linux Sistem Programlama Ders Notları

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ı

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar

BLM 112- Programlama Dilleri II. Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar 1 BLM 112- Programlama Dilleri II Hafta 2 C Programlarının Bellek Düzeni ve Rekürsif (Özyinelemeli) Fonksiyonlar Dr. Öğr. Üyesi Caner Özcan Kendi yolculuğumuzu yapmak için buradayız; bu yolculukta kendimiz

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ı

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos

Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos Yardım Komutları Linux ta komutlar hakkında yardım almak için aşağıdaki komutlar kullanılır : - man - info - whatis - apropos Yardım Komutları man komut Parametre olarak aldığı komut hakkında bilgiyi ekranda

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ı

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ı

Linux Dosya ve Dizin Yapısı

Linux Dosya ve Dizin Yapısı Linux Dosya ve Dizin Yapısı Dosya ve Dizin Sistemi Linux te kök dizin (/) sembolü ile ifade edilir. Windowsta kök dizin C: ise Linux ta / sembolüdür. 1 Kök dizini (/) İşletim Sisteminin çalışabilmesi için

Detaylı

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

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ı

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

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

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ı

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ı

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ Kaynak: C ve Sistem Programcıları Derneği Kurs notu Öğr.Gör.Dr. Mahmut YALÇIN Bilinirlik Alanı Bilinirlik alanı (scope), bir ismin tanınabildiği program aralığıdır.

Detaylı

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

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

Detaylı

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ı

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 LABİRENT HAZIRLAYAN 122132151 Fahri DÖNMEZ DANIŞMAN

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

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

Detaylı

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

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

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ı

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

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

Detaylı

BİLG Dr. Mustafa T. Babagil 1

BİLG Dr. Mustafa T. Babagil 1 BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1 Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array)

Detaylı

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ BİLGİ İŞLEM MSGSU FİZİK BÖLÜMÜ DERS 1 Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ İŞLETİM SİSTEMİ OS(Operating System) İşletim sistemi temel olarak, belli girdileri alıp derleyen ve sonuçları üreten program

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ı

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ı

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ı

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ı

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ı

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

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

Detaylı

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ı

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

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

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

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

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ı

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE));

int main(void) { int num = 0; int input = 1; int retval = 0; struct NODE *nodepointer; nodepointer = (struct NODE *)malloc(sizeof(struct NODE)); #include #include struct NODE { int number; struct NODE *nextpointer; ; void append_node(struct NODE *nodepointer, int num); void display_list(struct NODE *nodepointer); int search_value(struct

Detaylı

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

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

Detaylı

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

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

Detaylı

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ı

Teknikleri. Önsöz. iskender atasoy

Teknikleri. Önsöz. iskender atasoy Linux Altı nda Grafik Programlama Teknikleri Önsöz Linux atında yazılım geliştirmeyi düşünüyorsunuz veya geliştiriyorsunuz.artık programlarınızı görsel bileşenler ile süslemek istiyorsanız bu doküman sizlere

Detaylı

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

C nin Stantart Dosya Fonksiyonlarının Uyguladığı Tamponlama Mekanizması 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.

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ı

YAPILAR (STRUCTURES)

YAPILAR (STRUCTURES) YAPILAR (STRUCTURES) Yapılar, dizilere benzeyen ancak farklı tipten verileri bir arada tutan bütün olarak tanımlanabilir. Yapıların kullanılmasının esas sebebi de budur. Yapı tipi aslında yeni bir tip

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

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ı

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ı

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

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ı

Genel Programlama II

Genel Programlama II Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

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ı

man komut man ls (ls komutu hakkında bilgi verir.) man pwd (pwd komutu hakkında bilgi verir.)

man komut man ls (ls komutu hakkında bilgi verir.) man pwd (pwd komutu hakkında bilgi verir.) Yardım Komutları man komut Parametre olarak aldığı komut hakkında bilgiyi ekranda gösterir. man ls (ls komutu hakkında bilgi verir.) man pwd (pwd komutu hakkında bilgi verir.) Komut çalıştırıldığında uzun

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I ÇOK BOYUTLU DİZİLER, YAPILAR [MULTIDIMENSIONAL ARRAYS, STRUCTURES] ÇOK BOYUTLU DİZİLER Çok boyutlu diziler tanımlayabiliriz. İki boyutta, çok boyutlu diziler bellek

Detaylı

10/17/2007 Nesneye Yonelik Programlama 3.1

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

Detaylı

Adı Soyadı Öğrenci No. Toplam (100p) 2 (10p) +10p. 5 (25p) +10p. 3 (20p) 4 (25p) 1 (20p)

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ı

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ı

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ı

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ı

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ı

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Yazılım Kodlama ve İ simlendirme Standartları v1.0 Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.

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ı

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

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

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

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ı

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

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

Detaylı