EM205 C PROGRAMLAMA DİLİ

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

Download "EM205 C PROGRAMLAMA DİLİ"

Transkript

1 GAZİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ EM205 C PROGRAMLAMA DİLİ GÜZ YARIYILI

2 İÇİNDEKİLER İÇİNDEKİLER...1 Deney #1 C Programlama Diline Giriş, Değişkenler, Operatörler...2 Deney #2 Program Kontrol Deyimleri...7 Deney #3 Döngüler Deney #5 Diziler Deney #6 Göstericiler Deney #7 Dinamik Bellek Deney #8 Yapılar

3 Deney #1 C Programlama Diline Giriş, Değişkenler, Operatörler 1.1. Amaç: C programlama diline giriş, basit kavramların tanıtılması. printf ve scanf fonksiyonlarının kullanımı. Değişken kavramının anlaşılması, değişken türleri, değişkenlerin kapasiteleri ve bellek üzerinde kapladıkları miktar, değişkenlerin ekrana yazma formatı. Aritmetik, mantıksal ve bit işlem operatörleri, mantıksal operatörlerin sayısal işlemlere katılması. 1.2 İlk C Programı: Aşağıdaki basit C programlarını C derleyici programında yazınız. Yazdığınız dosyaları.c uzantısıyla kaydettikten sonra sırasıyla Compile, Build ve Execute işlemlerini gerçekleştiriniz. Yazdığınız kodda herhangi bir hata varsa compile işlemi sırasında bunları düzeltmeniz gerekmektedir. Aşağıdaki açıklamaları dikkatlice okuyunuz. Programın uzantısını c olarak kaydedilmezse otomatik olarak cpp olarak kaydeder.compile aşamasında system( pause ) tanımaz ve diğer satırlarda da hata verebilir. komutu C dilinde ana programı belirtmek için kullanılır. Ana programın başladığı ve bittiği yerleri gösteren köşeli parantezlere dikkat ediniz. system( pause ) Programın çalışmasını durdurur. // 0.1 printf ( Hello World\n ); Programda kullanılan printf fonksiyonunu içeren başlık dosyasını tanıtmak için include deyimi kullanıldı. printf fonksiyonu ekrana yazı yazmak için kullanılır. scanf fonksiyonu a değişkenine klavyeden değer atamak için kullanıldı. // 0.2 int a, a_kare; printf ("bir sayi giriniz: "); scanf ("%d",&a); a_kare = a*a ; printf("sayinin karesi :%d\n", a_kare); Değişkenlerin tanımlanması. printf fonksiyonu kullanarak değişken değerinin ekrana yazılması Değişkenler: C programında verilerin saklanması ve işlenmesi diğer dillerde olduğu gibi değişkenlerle yapılır. Bir değişken programın çalışması sırasında bir değer saklar. Bu değer programın akışına göre (değişken bir işleme girerse) değişebilir. Bir değişken yalnız bir türde veriyi içerebilir: char (karakter), int (tamsayı), float (kesirli sayı) gibi. Her değişken türüyle birlikte programın başlangıcında tanımlanmak zorundadır. (Anahtar kelimeler veya diğer bir deyişle deyimler, çalışmalarınızda değişkenlerin ve fonksiyonlardan daha kolay ayırt edilmesi için koyu yazılmıştır. ) 2

4 Tip Bit Tanım_aralığı Char ile 127 Unsigned char 8 0 ile 255 Short int ile Short Unsigned char 16 0 ile 255 char bir karakteri (a, b, c, 0, 1, $,? gibi), diğer adıyla alfanumerik değeri saklayan bir değişken türüdür. char türündeki bir değişken esas olarak sakladığı alfanumerik değerin ikili tabandaki ASCII kodunu içermektedir. Bu nedenle bu türdeki değişkene hem sayı, hem de karakter ataması yapılabilir. // 1.1 char c; c='a'; printf("%c\n",c); // 1.2 char c; c='abc'; printf("%c\n",c); char değişken türü sadece bir tane karakter tutabilir. Yandaki programı inceleyiniz. Bilgisayar hafızasında tüm değişkenler 0 ve 1 lerle saklanmaktadır. Örneğin 6 tam sayısı hafızada 2 lik düzende karşılığı olan olarak saklanır. Karakterlerin ise hafızada ne şekilde saklanacağını belirlemek için ASCII (American Standard Code for Information Interchange) tablosu standart kabul edilir. Bu tabloya göre örneğin A harfi hafızada A olarak değil (onluk düzende 65) sayısıyla saklanır. (ÖDEV: İnternette ASCII tablosunun tamamını bulup inceleyiniz.) Aşağıdaki örneklerde bir karakter değişkeni hem karakter olarak hem de tamsayı olarak ekrana yazdırılmaktadır; // 1.3 char x = 65; printf("%c harfinin ASCII kodu: %d\n",x,x); %c formatı değişkeni karakter olarak, %d formatı ise tamsayı olarak ekrana yazar. // 1.4 char x = 65; while(x<70) printf("harf: %c x = x+1; ASCII kodu: %d\n",x,x); while deyimi döngü kurmak amacıyla kullanılmıştır. 3

5 C programlama dilinde tamsayı değişkenleri saklamak için int, kesirli sayıları saklamak içinse float değişken tipleri kullanılabilir. Bir tamsayı float değişkeniyle de tutulabilir ancak bu durumda bellekte daha çok alan kullanılmış olacaktır. Değişken türlerinin seçiminin yanı sıra ekrana yazdırılırken kullanılan formata da çok dikkat edilmelidir. Tamsayıları yazdırmak için %d formatı, kesirli sayıları yazdırmak için %f formatı kullanılabilir. Aşağıdaki örnekleri inceleyiniz. Her iki programda da printf satırlarından hangisinin doğru olduğuna karar veriniz. // 1.5 int a; float b; a=5; b=5; printf("a =%d\t",a); printf("a =%f\n",a); printf("\n"); printf("b =%d\t",b); printf("b =%f\n",b); // 1.6 int a; float b; a=5.5; b=5.5; printf("a= %d\t",a); printf("a= %f\n",a); printf("\n"); printf("b= %d\t",b); printf("b= %f\n",b); sizeof() deyimiyle verinin bellekte kaç bayt yer tuttuğunu bulunabilir. // 1.7 char a; int k; short int i; float b; printf(" Degisken turlerinin bellekte kapladigi alanlar;\n "); printf(" char : %d bayt\n ",sizeof(a)); printf(" short int : %d bayt\n ",sizeof(i)); printf(" int : %d bayt\n ",sizeof(k)); printf(" float : %d bayt\n ",sizeof(b)); printf() Fonksiyonu Hakkında: C dilinde ekrana yazı yazdırmak için kullanılabilecek fonksiyonlardan biri printf() dir. Fonksiyona parametre olarak çift tırnak içinde yazılan her şey (% ve \ karakterlerinden sonra gelenler hariç) ekrana aynen yazılır. (Boşluklar, noktalama işaretleri dahil.) printf() fonksiyonuyla ekrana hiçbir değişken içermeyen mesajlar yazılabilir. Örn: printf( Bir sayı giriniz ); Eğer bir değişkenin değeri yazdırılmak isteniyorsa çift tırnak kapatıldıktan sonra virgülle ayrılarak değişken adları yazılır. Bu durumda değişkenin ekrana yazılma formatını ve yerini belirtmek için % karakteri kullanılır. % den sonra gelen ilk karakter ekrana yazılmaz sadece değişkenin yazım formatını belirtir (tamsayı için %d, karakter için %c gibi.) Aynı şekilde \ karakterinden sonra gelen karakter de ekrana yazılmaz. Bunun görevi ise yeni satıra atlama (\n), bir sekme ilerleme (\t) vb.dir. 4

6 ÖDEV: Yukarıdaki programlardaki printf() satırlarını inceleyerek çalışmasını anlamaya çalışınız. İnternetten % ve \ özel karakterlerini listesini bulup kullanımlarını öğreniniz. scanf() Fonksiyonu Hakkında: C dilinde klavyeden değişkenlere değer girmek için scanf() fonksiyonu kullanılabilir. Kullanımı printf() fonksiyonuna benzemektedir. Sadece değişken adlarının önüne & (address of) operatörü getirilir. Ayrıca çift tırnak içinde sadece % formatlarının bulunması diğer karakterlerin kullanılmasından kaçınılması gerekmektedir. Aşağıdaki basit programı inceleyiniz. // 1.8.a int i; printf(" Bir sayi giriniz : "); scanf("%d",&i); printf(" Girilen sayi : %d\n",i); stdio.h printf ve scanf fonksiyonlarının tanımlamalarını içeren header (başlık) dosyasıdır. Bu nedenle printf veya scanf kullanılan tüm programlara eklenmelidir. (#include deyimi bu amaçla kullanılır) Operatörler: C dilinde değişkenler arasında yapılabilecek aritmetik veya mantıksal işlemleri tanımlamak için operatörler kullanılır. Örneğin + iki değişkenin sayısal değerlerini toplamak için kullanılan operatör, && iki değişkeni mantıksal VE işlemine sokmak için kullanılan operatördür. Yapılabilecek işlemler operatörlerle sınırlıdır, örneğin Fortran dilindeki üs alma operatörü C de bulunmamaktadır. ÖDEV: C dilindeki tüm operatörlerin listesini bulup kullanımlarını inceleyiniz. Aşağıdaki programların çıktılarını önce kendiniz bulunuz, sonra bilgisayarda çalıştırıp karşılaştırınız. //1.9 int i,k,n; i=0,k=4,n=7; i=n+k; printf("i= %d\n",i); k=k*i; printf("k= %d\n",k); i=k/n; printf("i= %d\n",i); n--; printf("n= %d\n",n); //1.10 int i,k,n; i=0,k=4,n=7; i=n%k; printf("i= %d\n",i); k*=i; printf("k= %d\n",k); n+=3; printf("n= %d\n",n); k++; printf("k= %d\n",k); i=k/n; printf("i= %d\n",i); n+=(k*i*i+12);printf("n=%d\n",n); 5

7 C dilinde mantıksal operatörler, işlemin sonucunda doğru veya yanlış sonucunu vermezler, yalnız 0 veya 1 tamsayı değerini verirler (doğru ise 1, yanlış ise 0). Bu bakımdan, aritmetik işlemlere doğrudan katılabilirler: // 1.11 int a=1,b=2,c=-2; a=(b>-1); // b>-1 ise a=1, değilse a=0 olacaktır. printf("b>-1 : %d\n",a); a=(c==-2); // c=-2 ise a=1, değilse a=0. printf("c==-2 : %d\n",a); a=b c; // b veya c, sıfırdan farklı ise a=1, değilse a=0 printf("b c : %d\n",a); a=(b>0)&&(c<-10); // b>0 ve c<-10 ise a=1, değilse a=0 (Bu program için 0) printf("(b>0)&&(c<-10): %d\n",a); Mantıksal bir işlem, aritmetik bir ifade içerisinde yer alabilir. Aritmetik, mantıksal ve bit işlemleri harmanlanarak ve son derce karışık, birbiri içerisine girmiş bir şekilde kullanılabilir. // 1.12 int x=3,y=2; printf("x= %d, y=%d\n\n",x,y); printf("(x y)+4*y = %d\n",(x y)+4*y); printf("(x-3)&&y = %d\n",(x-3)&&y); printf("(x&&y)+(x&&(y-2)) = %d\n",(x&&y)+(x&&(y-2))); Aşağıdaki programların çıktılarını önce kendiniz bulunuz, sonra bilgisayarda çalıştırıp karşılaştırınız. // 1.13 int a,b,c,d; a=1,b=2,c=0; d=a&&b&&c; printf("d= %d\n",d); d=(a&&b) c; printf("d= %d\n",d); // 1.14 int i,j,k,n,m; i=k=0,j=2,n=1; m=((i+j)&&(k+n-1))+2; printf("m=%d\n ",m); m=m&&n; printf("m=%d\n ",m); j=j k; printf("j=%d\n ",j); k=((j+m+2)&&m)+(n i)&&2; printf("k=%d\n ",k); n=((j+m+2)+m&&(n i))&&(1-m); printf("n=%d\n ",n); 6

8 Deney #2 Program Kontrol Deyimleri 2.1. Amaç: Program kontrolü kavramı, kontrolün sayısal işlemler üzerinden yapıldığının anlaşılması, if, if else, if else if else yapıları, switch ifadesi Giriş: Program kontrol deyimleri programın akışının kontrol edilmesini ve hangi kodun çalıştırılacağına karar verilmesini sağlayan ifadelerdir. Bu laboratuvar kapsamında incelenilecek kontrol deyimleri; if, if else, if elseif else ve switch yapılarıdır IF Yapıları IF yapıları içerisinde kullanılan ifadeler mantıksal olarak değerlendirilir ve sonucun DOĞRU ya da YANLIŞ olmasına göre hangi kodun işlenileceğine karar verilir. Bu nedenle bazı mantıksal ifadelerin incelenmesi faydalı olacaktır. Mantıksal veya ilişkisel işlemlerin sonucu daima 0 veya 1 (Yanlış veya Doğru) çıkmaktadır. Bunun dışında SIFIRDAN FARKLI tüm değerler Doğru (1), SIFIR ise Yanlış (0) olarak değerlendirilir. Aşağıda bazı ifadelerin mantıksal değerleri verilmiştir; İfade Mantıksal Karşılığı 3 > 1 1!(2 < 2) !1 0 (3==3) && (5<2) && 0 1 (Operatör önceliğine dikkat ediniz) 4 1 (Sıfırdan farklı değer) 3 & 12 0!(16%4) 1 'E' > 80 0 (E harfinin ASCII kodunu düşününüz) 2.3.a. IF 2.3.b. IF ELSE 2.3.c IF ELSE IF ELSE if( ifade ) kod ifade doğruysa kod işlenir, yanlışsa bir şey yapılmaz. if( ifade ) kod_1 else kod_2 ifade doğruysa kod_1, yanlışsa kod_2 işlenir. if( ifade_1 ) kod_1 else if ( ifade_2 ) kod_2... else kod_3 ifade_1 doğruysa kod_1 işlenir. Yanlışsa ifade_2 incelenir; ifade_2 doğruysa kod_2, yanlışsa kod_3 işlenir. 7

9 2.4. Örnekler (IF yapıları) Girilen sayının Mutlak değerini alan program; // 2.1 int x; printf("negatif bir sayi giriniz :"); scanf ( %d,&x); if (x < 0) x = -x; printf("sayi pozitif yapildi :%d\n",x); Sıfır kontrolü yapan program; // 2.2 int x; printf("bir sayi giriniz :"); scanf ( %d,&x); if (x == 0) printf( Girilen sayi SIFIR\n ); else printf( Girilen sayi SIFIRdan farkli\n ); Pozitif/Negatif/Sıfır kontrolü yapan program; // 2.3 int x; printf("bir sayi giriniz :"); scanf ( %d,&x); if (x > 0) printf( Sayi POZITIF\n ); else if ( x < 0 ) printf( Sayi NEGATIF\n ); else printf( Sayi SIFIR\n ); ÖNEMLİ HATIRLATMA: 2.1, 2.2 ve 2.3 programlarında görüldüğü gibi if, elseif veya else blokları tek satırdan oluşuyorsa küme parantezleri kullanmaya gerek yoktur. Birden fazla satırdan oluşan tüm blokların parantezleri içerisine yazılması gerekir. Program 2.4 ü inceleyiniz. // 2.4 // Girilen küçük harfleri büyüğe dönüştüren program char ch; printf("bir karakter giriniz : "); scanf("%c",&ch); if (!(ch>=65)&&(ch<=90) &&!(ch>=97)&&(ch<=122)) printf ("Girilen %c bir harf degil\n",ch); else if ( (ch>=97)&&(ch<=122) ) ch=ch-32; printf("%c buyuk harfe donusturuldu.\n",ch); else printf("%c\n",ch); 8

10 Aşağıdaki f(x) fonksiyonun alacağı değerleri hesaplamak için ve verilmiştir. İki programın çalışmasını inceleyiniz, aralarındaki farkları değerlendiriniz. x 2 x 1 f ( x) 2 x 4x 3 x ; x 4 ; 4 x 0 ; 0 x 10 ; x 10 // (if yapısı) int int x,f; printf("bir sayi giriniz : "); scanf("%d",&x); if(x<-4) f = x; if((x>=-4)&&(x<=0)) f = x*x-1; if((x >0)&&(x<=10)) f = -x*x+4*x; if( x>10) f = x*x*x; printf("f(x) = %d\n",f); // (if-else yapısı) int int x,f; printf("bir sayi giriniz : "); scanf("%d",&x); if (x < -4) f = x; else if ( (x>= -4) && (x <=0) ) f = x*x - 1; else if ( (x > 0) && (x <= 10) ) f = -x*x + 4*x; else f=x*x*x; printf("f(x) = %d\n",f); 2.5. switch Deyimi switch de if yapıları gibi program kontrolü sağlamak amacıyla kullanılır. Ancak if lerden farklı olarak switch satırında yazılan ifade mantıksal olarak (yani sadece Doğru veya Yanlış olarak) değerlendirilmez. Buradaki ifadenin değerine göre program ilgili duruma (case e) atlar ve buradan devam eder. Örnekleri inceleyiniz. //2.6 int k; printf("0<k<4 arasinda bir sayi giriniz:"); scanf("%d",&k); switch(k) case 1: printf("*\n"); case 2: printf("**\n"); case 3: printf("***\n"); // 2.7 int k; printf("0<k<4 arasinda bir sayi giriniz:"); scanf("%d",&k); switch(k) case 1: printf("*\n"); break; case 2: printf("**\n"); break; case 3: printf("***\n"); break; Program ilgili case e atlar ve o satırdan devam eder. Eğer diğer durumların işlenmesi istenmiyorsa break deyimi kullanılır. 9

11 Aşağıda switch deyimi kullanılarak dört işlem yapan bir hesap makinesi programlanmıştır; // 2.8 char operator; float operand1,operand2; printf("sirasiyla sayi,operator(+,-,*,/)ve sayigiriniz(orn:4+6):"); scanf("%f %c %f",&operand1,&operator, &operand2); switch(operator) case '+': printf("%f\n",operand1+operand2); break; case '-': printf("%f\n",operand1-operand2); break; case '*': printf("%f\n",operand1*operand2); break; case '/': printf("%f\n",operand1/operand2); break; default: printf("tanimsiz operator\n"); break; switch satırındaki ifadenin durumlardan (case lerden) hiç birine uymaması halinde default satırına atlanır Sorular 1. Girilen sayının tek mi çift mi olduğuna karar veren bir program yazınız. 2. if deyimini kullanarak, girilen bir sayının aşağıdaki fonksiyona göre çıktısını veren bir program yazınız. 2 x 2.12 f ( x) x 2x 1 ; ; ; x 0 x 0 x 0 3. math.h başlık dosyasındaki sqrt() fonksiyonu kullanarak klavyeden girilen sayının karekökünü ekrana yazan bir program yazınız. NOT: sqrt() fonksiyonu negatif sayıların karekökünü hesaplayamamaktadır. İf deyimleri kullanarak negatif sayıların kareköklerini kompleks sayı gibi yazdırınız. Örn. Sayı: 9, Karekökü: j 3 4. switch deyimini kullanarak, 1 5 arasında girilen her tamsayı için ekrana, sayının karesini yazan bir program yazınız. 10

12 Deney #3 Döngüler 3.1. Amaç: Döngü kavramı, for, while ve do while kalıpları Giriş: Döngüler, bir kod parçasının belirli bir sayıda tekrar etmesini sağlayan yapılardır. C dilinde kullanılan başlıca döngü yapıları for, while ve do while dir 3.3 FOR Döngüleri döngü değişkenini tanımlama ; for ( değişkene ilk değer verme ; kontrol ; değişkeni güncelleme ) kod ; İşlem sırası; 1. Döngü değişkenine ilk değer verme, 2. Kontrol 3. Eğer Kontrol sonucu doğruysa kod işlenir (Değilse döngü sonlanır) 4. Değişkenin değeri güncellenir ve 2. adıma dönülür. // 3.1.a int sayac; for (sayac=0 ; sayac<10; sayac=sayac+2) //Küme parantezine Dikkat! printf("sayac= %d ",sayac); printf("\n"); // 3.1.b int sayac; for (sayac=0 ; sayac<10; sayac=sayac+2) printf("sayac= %d ",sayac); printf("\n"); // 3.2 int i=0; for (i=4 ; i<3 ; i++) printf("i=%d\n",i); // Program bu satira gelmez. for (i=2 ; i<8 ; i++)/* i'yi sıfıra eşitle i<8 ifadesi doğru olduğu sürece devam et, her adımda i'yi bir arttır.*/ printf("i=%d\t",i*2); // i'nin değeri değişmiyor. printf("\n"); for (i=2 ; i<8 ; i++) i=i*2; printf("i=%d\t",i); printf("\n"); /* i'nin değeri değişiyor.hatalı!.döngünün indis değeri döngü içinde değiştirilmemeli.*/ // ve /* */ ile yazılan yorum satırlarını inceleyiniz. 11

13 // 3.3 int i,k; i=0,k=5; for(;i<3;i++) printf("k=%d i=%d\n",k,i); k=i<3; printf("1.donguden cikis degerleri : "); printf("k=%d i=%d\n",k,i); printf(" \n"); for(i=0;k;i++) //k doğru olduğu sürece (k!=0)döngüyü tekrarlar. printf("k=%d i=%d\n",k,i); k=i<3; printf("2.donguden cikis degerleri : "); printf("k=%d i=%d\n",k,i); printf(" \n"); İç içe For Döngüleri: // 3.4 //İç İçe For Döngüsü int i,j,k; for(i=1;i<=3;i++) for(j=1;j<=2;j++) k=i+j; printf("i=%d j=%d k=%d\n",i,j,k); printf("k=%d\n\n",k); printf(" \n"); printf("k=%d\n\n",k); satırlarının her iki döngüde kaçar kez çalıştırıldığını inceleyiniz. for(i=1;i<=3;i++) for(j=1;j<=2;j++) k=i+j; printf("i=%d j=%d k=%d\n",i,j,k); printf("k=%d\n",k); 12

14 3.4. WHILE ve DO WHILE Döngüleri While döngüleri amaç olarak for döngülerine benzemekle beraber yazım kuralları farklıdır. While satırında sadece kontrol şartı verilir. Şart doğru olduğu sürece while bloğu işlenir. // 3.5 // While döngüsü int k=0; while(k <=8) printf("%3d",k); //%kd formatında k // alan genişliğini belirtir. k++; printf("\n"); // 3.6 // While döngüsü int k=8; while(k) //k, sıfırdan farklı oldugu // sürece döngü tekrarlanır. printf("bir sayi giriniz(ciks=0) : "); scanf("%d",&k); printf("k=%d\n",k); Do while döngüsünün çalışması while ile aynıdır. Tek fark, kontrolün blok bir kez çalıştırıldıktan sonra yapılmasıdır. Başka bir deyişle do while döngülerindeki kod bloğu en az 1 kere mutlaka çalıştırılacaktır. // 3.7 /*Do-While Döngüsü*/ int k=0; do printf("%4d",k); k++; while (k <=8); printf("\n"); Do while kalıbında while() den sonra ; kullanıldığına dikkat ediniz. 3.5 ve 3.7 programlarındaki k<10 şartını k>10 olarak değiştirip tekrar çalıştırınız. Sonuçları yorumlayınız Sorular 1. Kullanıcının girdiği 5 sayının ortalamasını döngü kullanarak hesaplayan bir program yazınız. 2. Kullanıcının girdiği 5 sayıdan en büyüğünü ekrana yazdıran bir program yazınız. (Döngü kullanarak, dizi kullanmadan.) 3. Klavyeden girilen bir sayının faktöriyelini hesaplayınız. 13

15 4. Aşağıdaki matematiksel formüllerin değerlerini hesaplayan programlar yazınız a)? Cevap: n n b)? Cevap: i k1 i1 k c)? Cevap: m k m3 l0 k1 l 5. Doğal logaritmanın tabanı olan e sayısının değerini seri yardımıyla hesaplayınız. NOT: Programınızı yazarken N sayısını formüldeki gibi belirsiz bırakamazsınız. N sayısının değeri için yeterince büyük bir sayı seçmeniz gerekmekte. Ancak faktöriyel fonksiyonunun değerinin çok hızlı yükseldiğini unutmayınız. e= x sayısı biliniyorsa, e x değeri aşağıdaki Mc Lauren serisi açılımından bulunabilir: e x 1 x 2 x 2! 3 x 3! 4 x 4!... N x N! 7. x sayısı biliniyorsa, sin (x) değeri aşağıdaki Mc Lauren serisi açılımından bulunabilir: sin( x) x 3 x 3! 5 x 5! 7 x 7!... N x... N! 14

16 Deney #4 Fonksiyonlar 4.1. Amaç: Fonksiyon kavramı, fonksiyonun yazılma amacı, fonksiyonun çalışma biçimi, fonksiyon prototipleri, fonksiyonun başka bir fonksiyonu çağırması, nesnelerin faaliyet alanları Giriş: Programlama sırasında sürekli tekrar eden ve belirli bir işlevi olan kodları fonksiyon olarak yazmak ve gerekli yerlerde bu fonksiyonu çağırarak çalışmasını sağlamak hem program yazımını hızlandırır hem de programın daha anlaşılır olmasını sağlar. İlk haftalarda C dilinde tüm kodların fonksiyon formatında yazıldığı, yani in de aslında bir fonksiyon olduğu konuşulmuştu. Aşağıdaki örnekte klavyeden girilen bir sayının mutlak değerini mutlak() adlı bir fonksiyonda hesaplayan bir program verilmiştir. Örnekteki fonksiyon prototipini, fonksiyonun içinden çağırılışını ve fonksiyonun tanımlandığı yeri dikkatle inceleyiniz. # include <stdio.h> int mutlak(int); int int k, m_k; scanf("%d",&k); m_k = mutlak(k); printf("%d\n",m_k); return 1; int mutlak(int i) int t=i; if (i<0) t = -i; return t; mutlak adlı fonksiyonun prototipi. (fonksiyon tanımı main den sonra geldiği için prototip gerekli) mutlak fonksiyonu k giriş parametresiyle çağırılıyor. Fonksiyonun dönüş değeri m_k değişkeninde saklanacak mutlak fonksiyonunun tanımlandığı yer. Tam sayı türünde bir giriş parametresi var. (i değişkeni) Fonksiyonun dönüş değişkeninin türü: integer. Fonksiyonda hesaplanan t değişkeninin değeri ana programa (fonksiyonun çağırıldığı yere) gönderiliyor. NOT: fonksiyonu ile mutlak() fonksiyonu arasındaki benzerlikleri ve farklılıkları inceleyiniz Örnek Programlar // 4.1 void universite() printf("gazi Universitesi\n"); void bolum() printf("elektrik-elektronik Muhendisligi\n\n"); float topla(float a) a=a+2; printf("fonksiyon a= %4.1f\n",a); return a; float a=16.5; universite(); bolum(); printf("ana program a= %4.1f\n",a); printf("fonk.donus a= %4.1f\n",topla(a)); Yandaki örnekte giriş argümanı ve dönüş değeri olmayan 2 fonksiyon ve giriş argümanı ve dönüş değeri olan 1 fonksiyon verilmiştir.dönüş değeri olmaması durumunda fonksiyon adının önünde void kullanıldığına dikkat ediniz. 15

17 Geri dönüş değeri olan fonksiyonlar, daha çok amaçlanan bir hesaplamanın sonucunu bildirmek için kullanılırlar. Aşağıdaki örnekte float daire_alani(float); fonksiyonu, yarıçapı verilen dairenin alanının bulunması için yazılmıştır. Fonksiyon ana programdan sonra yazıldığından, ana programdan önce prototip tanımlaması yapıldığına dikkat ediniz. // 4.2 float daire_alani(float); //Fonk.ana programdan sonra yazıldığından PROTOTİP tanımlandı. float alan; alan = daire_alani(1.0); printf("yaricap=1, Dairenin alani : %4.2f\n",alan); alan = daire_alani(2.0); printf("yaricap=2, Dairenin alani : %4.2f\n",alan); printf("yaricap=5, Dairenin alani : %4.2f\n", daire_alani(5.0)); float daire_alani(float yaricap) //Ana programdan sonra fonksiyon tanımı return 3.14*yaricap*yaricap; Bir değişken fonksiyona argüman olarak aktarılırsa, fonksiyondan geri döndükten sonra aktarılan argüman değişmemiş olarak kalır. (Değer değiştirmek istenirse gösterici (pointer) kullanmak gerekir.) // 4.3 int fonksiyon(int a) a=-a*5; printf("fonksiyon icinde return a; int a=1,b; printf("fonksiyon cagirilmadan once b=fonksiyon(a); printf("fonksiyon cagrildiktan sonra printf("fonksiyonun dondurdugu a=%d\n",a); a= %d\n",a); a= %d\n\n",a); b=%d\n",b); 16

18 // 4.4 float islem(float a, float b) a = a + 2; b = b * 3; printf(" \t\tfonk. icinde a=%4.1f return a/b; b=%4.1f\n",a,b); float a=1.0, b=2.0; printf("a=%4.1f b=%4.1f\n",a,b); a=islem(a,b); printf("a=%4.1f b=islem(a,b); printf("a=%4.2f b=%4.1f\n",a,b); b=%4.2f\n",a,b); Nesnelerin (Değişkenlerin) Faaliyet Alanları Bu haftaya kadar yazdığımız programlarda sadece fonksiyonu olduğundan değişkenlerin yerel/global olmalarına ve faaliyet alanlarına dikkat etmemiştik. Ancak programımızda birden çok fonksiyon bloğu olduğunda değişkenlerin faaliyet alanları söz konu olmaktadır. Yerel değişkenlerin tanım satırları herhangi bir bloğun içinde (main, herhangi bir fonksiyon veya if,for vb. bloklar) olur ve bu değişkenler sadece ilgili blok içinde geçerlidirler. Global değişkenler ise herhangi bir blok içinde tanımlanmazlar ve programın her satırında kullanılabilirler. Başka bir değişle herhangi bir den sonra tanımlanan değişkenler işaretinden sonra hafızadan silinirler. Faaliyet alanlarını gösteren bir program taslağı Şekil 4.1 de gösterilmektedir. Programın başında tanımlanmış olan s ve p değişkenleri global değişkenlerdir. Bu değişkenlere programın herhangi bir kısmından erişilebilir. Bir başka deyişle, fonksiyon ve ana program içinde bu değişkenlere erişilebilir. Ana programın başlangıcında tanımlanmış olan a,c ve w ye ise yerel değişkenler olduklarından iç bölge dahil ana programın herhangi bir yerinden erişilebilir, ancak fonksiyon içinden erişilemez. Fonksiyon içinde tanımlanmış olan k ve m değişkenleri ise fonksiyona ait yerel değişkenlerdir ve sadece fonksiyon içerisinden erişilebilirken, ana programdan erişilemezler. Bölge/Değişken s,p a,c,w b,c 1. Anaprogram Erişilebilir Erişilebilir Erişilemez 2. Anaprog. İç Bölge Erişilebilir Erişilebilir Erişilebilir 3. Fonksiyon Erişilebilir Erişilemez Erişilemez Tablo 4.1 Şekil 4.1 Bu örnekte verilen değişkenlerin ömürleri, program o değişkenin faaliyet alanının bittiği yere ulaşıncaya kadardır. Faaliyet alanındaki işlemler tanımlandıktan sonra değişkenlerin bellekteki yerleri artık korunmaz. Bir değişkenin program boyunca değerlerinin korunması isteniyorsa, o değişken static tanımı ile ilan edilir. 17

19 // 4.5 // HATALI SATIRI SİLİNİZ.. int i=2, k; k=i*3; int j; j=k*i; printf("j=%d\n",j); // j=12 k+=i; j=k; printf("i=%d k=%d\n",i,k); //i=2 k=8 // 4.6 int a=0,b=5; a++; if(a>0) int b; b=a+7; printf("b=%d\n",b); b=b-2; printf("b=%d Dikkat!\n",b); Fonksiyonların içinde tanımlanan tüm değişkenler ve fonksiyonun giriş argümanları o fonksiyona ait yerel değişkenlerdir. Bu nedenle sadece fonksiyon içerisinde tanımlıdırlar. Ancak, global değişkenlerin faaliyet alanı tüm program satırları olduğu için, bir global değişkenin değeri fonksiyon içerisinde değişebilir. Aşağıdaki iki programın(4.7.a ve 4.7.b) yapmış olduğu işlem aynı, fakat değişkenlerin tanımlanmış olduğu yerlere göre programların yazımı farklıdır. İnceleyiniz. // 4.7.a //int a; a değişkeni tüm programda tanımlı(global) olur. fonk(int a) int b; b=5; a*=b; return a; int a;//a değişkeni sadece ana prog.içinde tanımlıolur. printf("sayi giriniz : "); scanf("%d",&a); printf("fonksiyondan once a : %d\n",a); fonk(a); printf("fonksiyondan sonra a : %d\n",fonk(a)); // 4.7.b int a; // global değişken tanımı fonk() int b; b=5; a*=b; printf("sayi giriniz : "); scanf("%d",&a); printf("fonksiyondan once a : %d\n",a); fonk(); printf("fonksiyondan sonra a : %d\n",a); Aşağıdaki örnekte add fonksiyonu her çağırılışında add'in içinde tanımlanan a'ya add'e aktarılan k kadar ekleniyor. Dolayısıyla program, girilen on adet sayının toplamını ekrana yazmaktadır. // int add(int k) static int a=0; a+=k; "static int a;" satırı program fonksiyondan döndükten sonra, a değişkeninin değerini korumasını sağlar (derleyici bunu a'nın adresini belleğinde tutarak yapar). static belirteci olmayan

20 4.5. Sorular: 1. Faktöriyel hesaplayan bir fonksiyon yazınız. Ana programdan gireceğiniz farklı değerler için fonksiyonu çağırtınız ve sonuçları yine ana programda yazdırınız. 2. Ana programda girilen 3 sayının bir üçgen oluşturup oluşturmayacağını kontrol eden bir fonksiyon yazınız. (Program ana programa 0 veya 1 değeri dönebilir.) 3. Ana programda girilen bir sayının basamak sayısını bulan bir fonksiyon yazınız. 4. Aşağıdaki formüle göre klavyeden girilen sayının sinüsünü bulan bir program yazınız. Programınızda aşağıda prototipleri verilen 3 fonksiyonu geliştiriniz ve kullanınız. float dereceden_radyana (int derece); float us_alma(float taban, int us); int faktoriyel (int sayi); (formül x değerini radyan cinsinde istemektedir) sin( x) x 3 x 3! 5 x 5! 7 x 7!... N x... N! (Not: N değeri için en fazla 10 alınız.) 5. Aşağıda prototipi verilen fonksiyonu yazınız, ana programdan çağırarak kullanınız. void birim_matris_yaz(int boyut); Örn. boyut=3 için ekran çıktısı; Kullanıcının girdiği pozitif sayıların ortalamasını bulan bir program yazınız. Kaç sayı girileceği başlangıçta belli değildir, kullanıcı negatif bir sayı girene kadar okumaya devam edilecektir. Toplama işlemi ve sayaç işlemleri bir fonksiyon içinde yapılacaktır. Toplam ve Sayaç GLOBAL değişken olmalıdır. 19

21 Deney #5 Diziler 5.1. Amaç: Dizi kavramı, dizilerin değişkenlerden farkları, çok boyutlu diziler Giriş: Diziler, aynı türden verilerin tek isim altında gruplandırılması olarak düşünülebilir. Dizi elemanları, bellek üzerinde ardışık olarak yerleşirler. Bu nedenle dizinin ilk değişkeninin bellek üzerindeki yeri biliniyorsa, diğer elemanlarının yerleri de biliniyor demektir. Gerçekte, dizinin ismi dizinin ilk elemanının bulunduğu adresi vermektedir. Değişkenler bir fonksiyona aktarıldıktan sonra etkilenmezlerken dizi elemanları etkilenirler. Bunun nedeni göstericiler konusundan sonra anlaşılabilecektir Örnek Programlar // 5_1 #define N 5 int int i; int a[5]=4,6,9,2,5; int b[n], c[5]; for(i=0; i<5; i++) b[i]=i*i; for(i=0; i<5; i++) printf("c dizisi icin %d. eleman giriniz: ", i); scanf("%d",&c[i]); for(i=0; i<5; i++) printf(" a=%2d b=%2d c=%2d\n", a[i], b[i], c[i]); // 5_2 int a[12]; int i; for (i= 0;i < 3;i++) a[i] = 4 * i; for (i= 0;i< 5;i++) printf("a[%d]=%2d \n",i,a[i]); 20

22 5.4. Dizilerin fonksiyona aktarılması: Aşağıdaki programda bulacağınız sonuçları inceleyiniz. //5_3 float kare(float b[],int t) int i; t=t*t; for(i=0;i<5;i++) b[i]=b[i]*b[i]; int i,k=4; float a[5]; for(i=0;i<5;i++) printf("bir sayi giriniz: "); scanf("%f",&a[i]); kare(a,k); printf("k=%d\n",k); for(i=0;i<5;i++) printf("a[%d]=%5.1f\n",i,a[i]); Dizinin her elemanının, fonksiyon içerisindeki değişimi ana programda da görüldü. Değişkenler bir fonksiyona aktarıldıktan sonra etkilenmezlerken dizi elemanları etkilenirler. Bunun nedeni göstericiler konusundan sonra daha iyi anlaşılacaktır. İki Boyutlu Diziler: //5_4 iki_boyutlu_dizi #define SATIR 2 #define SUTUN 3 Basla(int a[satir][sutun]) int i,j; for(i=0;i<satir;i++) for(j=0;j<sutun;j++) a[i][j]=i+j; int i,j; int a[satir][sutun]; Basla(a); for(i=0;i<satir;i++) for(j=0;j<sutun;j++) printf("a[%d][%d]=%d\n",i,j,a[i][j]); 21

23 5.6. SORULAR 1. a)n elemanlı iki vektörü toplayan bir fonksiyon yazınız. Vektörleri tek boyutlu dizi olarak ifade edebilirsiniz. b) N elemanlı bir vektörün uzunluğunu (mutlak değerini) bulan bir fonksiyon yazınız. a = a a a Verilen a ve b vektörleri arsındaki açısını bulan bir fonksiyon yazınız. (math.h daki acos() fonksiyonunu kullanabilirsiniz.). b cos = a a b =? 1 4. A nxn matrisinin asal (diyagonal) elemanların ortalamasını bulunuz A nxn matrisinin diyagonalinin altında kalan elemanlarından tek boyutlu bir dizi oluşturunuz Tek boyutlu N elemanlı bir dizinin EN BÜYÜK ve EN KÜÇÜK elamanlarını bulan 2 ayrı fonksiyon ve bu fonksiyonları kullanabileceğiniz bir ana program yazınız. 7. Tek boyutlu N elemanlı bir diziyi küçükten büyüğe doğru sıralayan bir program yazınız. (Sıralama algoritmaları için internet araştırması yapabilirsiniz.) 22

24 Deney #6 Göstericiler 6.1. Amaç: Gösterici kavramı, göstericilerin fonksiyonlarda argüman olarak kullanılması, diziler ile göstericilerin karşılaştırılması Giriş: Göstericiler (pointers) bellekte bulunan bir yerin adresini saklayan bir değişkendir (adres türünde bir değişkendir). Gösterici de int, float veya diğer türdeki değişkenler gibi belleğin belli bir yerine yerleştirilir ve içerik olarak sayısal bir değer içerir. Bu değer bellekteki bir yeri gösteren adrestir. Göstericiler bu özelliği ile kullanıcının belleğe doğrudan erişim olanağını sağlar. Bu kısımda göstericilerin C dilindeki genel kullanım biçimlerinden bazılarının verilmesi amaçlanmaktadır. Ancak göstericilerin en temel kullanım amacı Dinamik Bellek Kullanımı konusunda yer almaktadır Örnek Programlar 1. Temel Gösterici Kullanımı: Aşağıdaki örneklerde, göstericilerin değişkenle olan ilişkisi incelenmektedir. Bir gösterici, bir değişkenin bellek üzerindeki adresini aldığı zaman, * operatörü ile içeriğinin değiştirilmesini sağlar. // 6_1 int int i=24; int *p; p = &i; // int değişkenin adresini saklayan gösterici //p'ye i'nin adresi aktarıldı. printf(" i : %d\n", i); printf("*p : %d\n\n", *p); printf("i'nin adresi &i : %d\n",&i); printf("p'nin adresi p : %d\n",p); DİKKAT: * karakteri, int * p; şeklinde yazıldığında integer pointer, *p ; şeklinde yazıldığında p nin gösterdiği adresin içeriği // 6_2 int i = 150; int *p; //değişkenin adresini saklayan gösterici; p = &i; // p'ye i'nin adresi aktarıldı. printf("i =%d ", i); printf("p =%d ", p); printf("*p=%d \n", *p); i = 500; printf("i =%d ", i); printf("p =%d ", p); printf("*p=%d \n", *p); *p = 700; printf("i =%d ", i); printf("p =%d ", p); printf("*p=%d \n", *p); 23

25 2. Gösterici Dizi İlişkisi: // 6_3 #define N 3 int d[n] = 10,20,30; int i; printf("d'nin adresi:%d,bu adresdeki degeri(*d):%d\n\n",d,*d); printf("&d[0]'nin adresi: %d,bu adresdeki degeri(d[0]):%d\n\n", &d[0], d[0]); printf("dizinin 1. elemani: %d\n\n", *(d+1)); printf("dizi elemanlari :"); for (i=0;i<n;i++) printf("%d\t ", d[i]); printf("\n\ngosterici olarak dizinin eleman. :"); for (i=0;i<n;i++) printf("%d\t ", *(d+i)); printf("\n\ndizi elemanlarinin adresleri :"); for (i=0;i<n;i++) printf("%d ", (d+i)); printf("\n\n"); *d, dizinin adı ilk elemanı gösteren bir pointer dır. *(d+1),pointer a 1 eklemek sayısal olarak 1 artırmak anlamına gelmez. 1 adres ilerisini göstermesi anlamına gelir. Aşağıdaki ifadeler eşdeğerdir: a[i] ve *(a+i) 3. Göstericilerin Fonksiyonlarda Giriş Argümanı Olarak Kullanılması Herhangi bir değişken bir fonksiyona giriş argümanı olarak gönderildiğinde fonksiyonda yeni bir yerel değişken oluşturulduğunu ve giriş argümanının değerinin bu yeni değişkene yazıldığını daha önce öğrenmiştik. (Bu nedenle ana programdaki değişkenler fonksiyondaki işlemlerden etkilenmiyordu.) Fonksiyona bir pointer gönderildiğinde ise (yani ana programdaki bir değişkenin değeri değil adresi gönderildiğinde) fonksiyonda yeni bir yerel değişken oluşturulmaz. Tüm işlemler gönderilen adresin içerisinde yapılır. Bu nedenle ana programdaki değişkenin değeri fonksiyondaki işlemlerden etkilenmiş olur. //6_4 fonk_1 (int a, int b) a=a*2+3; b=b*b+2*b+1; fonk_2 (int *a, int *b) *a=(*a)*2+3; *b=(*b)*(*b)+2*(*b)+1; int a,b; a=2,b=3; printf("fonk_1'den once a=%d b=%d\n",a,b); fonk_1 (a,b); printf("fonk_1'den sonra a=%d b=%d\n\n",a,b); printf("fonk_2'den once a=%d b=%d\n",a,b); fonk_2 (&a,&b); printf("fonk_2'den sonra a=%d b=%d\n",a,b); 4. Pointer Dönüşü Olan Fonksiyonlar Bir fonksiyon tanımlanırken, parametreleri pointer olabileceği gibi, dönüş tipi de pointer olabilir. 24

26 // 6_5 // Geri dönüş değeri, pointer olan bir fonksiyon int *topla(int,int); int *p, a=12,b=40; p =topla(a,b); printf("toplam : %d \nadresi : %p \n",*p,p); int *topla(int x,int y) int *ptr, toplam; toplam = x+y; ptr = &toplam; return ptr; 6.4. Sorular 1. Aşağıdaki programı çalıştırmadan önce sonuçlarını tahmin ediniz. void fonksiyon(float x,float *y,float *z) x*=(*y); (*y)=(*y)*(*y)*x+(*z); (*z)=(*y)+x (*z); x++; void float a,b,c; a=1,b=2,c=3; fonksiyon(a,&b,&c); printf("a=%f,b=%f,c=%f\n",a,b,c); 2. Girilen üç sayının kareleri ve karelerinin toplamlarını bulan bir fonksiyon yazınız. a.) Aritmetik işlemlerin tamamı bir fonksiyon içerisinde yapılsın b.) Değerler ana programda üç ayrı değişkene uygun bir şekilde okutulacak ve fonksiyona uygun bir şekilde aktarılacaktır. c.) Fonksiyondan dönüldüğünde değişkenlerin yeni değerleri ekrana yazılacaktır: Her yeni değer, kendisinin önceki değerinin karesi olmalıdır. 3. ax 2 +bx+c=0 denkleminin her iki kökünü bulan bir fonksiyon yazınız. Ana programda a,b,c ve x e değer vererek fonksiyonu çağırınız. Program yalnız bir fonksiyondan ve ana programdan oluşacaktır. Problem birkaç şekilde çözülebilir, ancak çözümlerden yalnız biri konumuza uymaktadır. Sadece ana programdan veya birden fazla fonksiyondan oluşan çözümler bu konuya ait olmadığı için bu soruda sınırlandırılmıştır. 4. f(x)=sin(x) 0.467sin(2x)+0.235sin(3x) 0.104sin(4x) fonksiyonunun 2.0 ile 2.0 arasında alacağı en büyük ve en küçük değerleri (maximum ve minimum değerleri) bir fonksiyon içerisinde bulunuz. 5. Sorudaki sınırlamalar bu soru için de geçerlidir. İpucu: x i her adımda arttırarak ( 2.0,2.0) arasında tarayınız. 25

27 Deney #7 Dinamik Bellek 7.1. Amaç: Program çalışması sırasında bellek denetimi, göstericiler ve bellek yönetimi, bellek yönetimi fonksiyonları Giriş: Bundan önce yapılan uygulamalarda bellek kullanımına yönelik olarak dizi kullanılmıştı. Ancak, dizi kullanımında dizi için ayrılan bellek bölgesi derleme sırasında belirlendiği için, diziyi oluşturacak eleman sayısı sabit bir değerle tanımlamak zorundaydı: void int a[20]; float b[10];... vs gibi. Dinamik bellek kullanımında ise, istenilen miktarda bellek kullanıma ayrılabileceğinden, hem bellek daha verimli kullanılır, hem de program yazılırken ayrılacak bölge miktarı için düşünmek zorunda kalınmaz (Örnek program 1 e bakınız) Örnek Programlar // 7_1 #include<malloc.h> //dinamik bellek yönetimi komutları için. #include<stdlib.h> // exit() komutu için. //*Sayıların ort. bulan bir program*/ int i,n; float *a,b=0; printf("kac sayinin ort. almak istiyorsunuz:"); scanf("%d",&n); a=malloc(n*sizeof(float)); if(!a) printf("yetersiz bellek\n"); exit(1); for(i=0;i<n;i++) printf("%d.sayiyi giriniz : ",i+1); scanf("%f",&a[i]); for(i=0;i<n;i++) b+=a[i]; printf("\nortalama=%5.2f\n",b/n); Kbyte'tı geçen dinamik bellek kullanımı DOS uygulamalarında, standart dinamik bellek fonksiyonları çalışmaz. UNIX, WINDOWS gibi işletim sistemlerinde bu sınır yoktur. Aşağıdaki örneği inceleyiniz. //7_2 #include<malloc.h> #define BELLEK // Sırasıyla, 5x106, 100x106, 200x106 ve 1x109 // degerleri için deneyiniz. int *a; a=malloc(bellek); if(!a) printf("yetersiz bellek\n"); exit(1); printf("bellek degerini sirasiyla\n"); printf("5x106, 100x106, 200x106 ve 1x109 olarak degistirerek \n"); printf("windows Task Manager'den hafiza kullanimini kontrol ediniz.\n"); 26

28 3. Bellekte birden fazla bölge beraber açılırken, kontrol işlemini bir kerede yapabilir: //7_3 #include<malloc.h> unsigned char i,*a,*b,*c; a=malloc(5); b=malloc(5); c=malloc(10); // 1x109 için de deneyiniz. if(!(a&&b&&c)) printf("yetersiz bellek\n"); exit(1); for(i=0;i<5;i++) *(a+i)=i*3; // pointer gösterimi, b[i]=i*i; // dizi gösterimi. for(i=0;i<5;i++) printf("a[%d]=%2d b[%d]=%2d\n",i,a[i],i,b[i]); 4. free komutu, açılan bölgenin serbest kalmasını sağlar. Örneğin aşağıdaki uygulamada, açılan iki bellek bloğunun toplam alanı 64 Kbyte'dan büyük olmasına karşın free komutu birinci açılan bölgeyi serbest bırakarak ikinci bölgenin açılabilmesini sağlar. free komutunu kaldırarak programı tekrar çalıştırınız!! //7_4 #include<malloc.h> #define BELLEK char *a,*b; long int i; a=malloc(bellek); if(!a) printf("yetersiz bellek\n"); exit(1); for(i=0;i<bellek;i++) if (!(i% )) *(a+i ) = 12; printf("a[%d]=%d\n",i,a[i]); free(a);//free() olmadan programı çalıştırınız,. //Sistem hafızasını inceleyiniz. b=malloc(bellek); if(!b) printf("yetersiz bellek\n"); exit(1); for(i=0;i<bellek;i++) if (!(i% )) *(b+i ) = 34; printf("b[%d]=%d\n",i,b[i]); 27

29 5. realloc fonksiyonu ise, önceden açılmış olan bölgeyi yeniden düzenler. Aşağıdaki programda döngü her tekrar edilişinde, girilecek olan sayı adedi değiştiğinden, bellekte ayrılacak olan bölge (bölgenin büyüklüğü) de değişmek zorunda kalacaktır. Bu nedenle realloc kullanılmıştır. //7_5 #include<malloc.h> #include<stdlib.h> int *a; int i,k=-10,t=1; a=malloc(1); while(1) printf("dizinin eleman sayisini giriniz : "); scanf("%d",&k); a=realloc(a, k*sizeof(float) ); if(a==null) printf("yetersiz Bellek\n"); exit(1); for(i=0;i<k;i++) printf("%d.eleman : ",i+1); scanf("%d",&a[i]); for(i=0;i<k;i++) printf("a[%d]=%d\n",i,a[i]); printf("devam=1,cikis=0 giriniz: "); scanf("%d",&k); printf("\n"); if(!k) break; free(a); 7.4. SORULAR: 1. N adet sayıyı büyükten küçüğe göre sıraya dizen bir program yazınız. Dizeceğiniz sayı adedi kullanma sırasında bilinebileceği için, sabit sayıda elemanlı dizi tanımı yapmayınız, bunun yerine dinamik bellek fonksiyonları kullanınız. 2. N*N boyutlu, gerçel sayılardan oluşan bir matrisin elemanlarını okutunuz, ekranda matris şeklinde yazdırınız (Dizi tanımlanmayacak! Matris elemanları dinamik bellek fonksiyonları ile açılan bölgeye yerleştirilecektir). 3. Verilen n elemanlı a ve b vektörleri için aşağıdaki ifadelerin her birinin hesaplanmasında kullanılacak fonksiyonlar yazınız. Programlarınızda dizi kullanmayınız! a) 2 a +3b b) a a + b c) a b = a 1 a2 a3... d) cos = a, =? a b 28

30 Deney #8 Yapılar 8.1. Giriş: Diziler, aynı türden verilerin bir isim altında saklaması için kullanılır. Böylece çok sayıda veriye bir döngü içinde erişilmektedir. Farklı türden verileri bir isim altında kümeleyerek işlemek için C'de yapılar kullanılmaktadır. Yapılar kullanıcının verileri program içerisinde daha kolay tanımlayabilmesi, sınıflandırarak daha rahat kullanabilmesini için kullanılırlar. Kuşkusuz yapılar olmadan da her program yazılabilir, ancak programlayıcının veriler arasında soyut olarak yaptığı ilişkilendirmeleri programa yansıtabilmesi için yapıları kullanması gerekir. Yapı belli başlı bir konu olmasına karşın, diğer konulardan bağımsız olarak ele alınması yeterli değildir. Bu kısımda incelenen örneklerde yapılarda gösterici ve dinamik bellek kullanımı anlatılmaktadır. Örnek programlar basitten karmaşığa doğru verilmiştir Örnek Programlar 1. Aşağıda öğrenci.no'su ve iki dersten aldıkları notları okuyan ve ekrana yazan programı önce eski bilinen yöntemle, sonra da yapı oluşturarak yapalım: //8_1_a int no; int fizik,mat; printf("ogr_no,fiz_notu ve mat_notu giriniz:"); scanf("%d%d%d",&no,&fizik,&mat); printf("\nogr_no: %d\tfizik: %d\tmatematik: %d\n", no,fizik,mat); //8_1_b struct yap int no; int fizik; int mat; ; struct yap ogr; printf("ogr_no fiz_notu mat_notu giriniz:"); scanf("%d%d%d",&ogr.no,&ogr.fizik,&ogr.mat); printf("\nogr_no: %d\tfizik: %d\tmatematik: %d\n", ogr.no, ogr.fizik, ogr.mat); 29

31 Böylece tüm veriler "ogr" adı altında toplanmış oldu. Birden fazla öğrenci girişi için, yapı dizisi tanımlayalım: // 8_1_c #define SAY 3 struct yap int no; int fizik; int mat; ; int i; struct yap ogr[say]; printf("%d ogrenci icin \n",say); for(i=0;i<say;i++) printf("%d.ogrencinin ogr_no fiz_notu mat_notu giriniz:",(i+1)); scanf("%d%d%d",&ogr[i].no,&ogr[i].fizik,&ogr[i].mat); for(i=0;i<say;i++) printf("\nogr_no:%d \tfizik:%d \tmatematik:%d", ogr[i].no,ogr[i].fizik,ogr[i].mat); printf("\n"); 2. Yapılar verileri kümelendirdiği için, bu verileri fonksiyona argüman olarak aktarmak programcı için daha kolay olur ve program kodu kısalır. Fizik dersinden 80 üzerinde alan öğrencilerin sayısını bulan bir program için yazılmış fonksiyon, ve bu fonksiyonun ana programdan çağırılışını inceleyelim. // 8_2 #define SAY 3 struct yap int no; int fizik; int mat; ; int bul(struct yap ogrenci[say]) int i,t=0; for(i=0;i<say;i++) if(ogrenci[i].fizik>80) t++; return t; // Ana Program. int i; struct yap ogr[say]; printf("%d ogrenci icin \n",say); for(i=0;i<say;i++) printf("%d.ogrencinin ogr_no fiz_notu mat_notu giriniz:",(i+1)); scanf("%d%d%d",&ogr[i].no, &ogr[i].fizik, &ogr[i].mat); printf("\nfizik notu 80'den fazla "); printf("olan ogr. sayisi:%d\n", bul(ogr)); 30

32 Bu programda kullanılan "bul" adlı fonksiyon, argüman olarak bir yapı alıyor. Bu şekilde yapılan bir aktarımda, 1. Fonksiyon içerisinde yapı elemanı için yeni bir bellek alanı ayırılır (faaliyet alanlarının değişikliği nedeniyle. Bu örnekte org ile ogrenci yapılarının etki alanları farklıdır). 2. Ana programdaki yapı, fonksiyon içerisindeki yapıya bayt bayt aktarılır (Şu işlemler yapılır: ogrenci.no=ogr.no, ogrenci.fizik = ogr.fizik, ogrenci.mat=ogr.mat). Bu işlemler programın çalışması sırasında zaman tüketirler (10000 öğrenci için yapılan programı düşününüz!). 3. bul fonksiyonunu tekrar yazalım: // 8_3 #define SAY 3 struct yap int no,i,fizik,mat; ; fonk (struct yap *ogrenci) printf("\nogrenci'nin bellekte kapladigi alan : %d byte\n", sizeof(ogrenci)); int i; struct yap ogr[say]; printf("%d ogrenci icin \n",say); for(i=0;i<say;i++) printf("%d.ogrencinin ogr_no fiz_notu mat_notu giriniz: ",(i+1)); scanf("%d%d%d",&ogr[i].no,&ogr[i].fizik, &ogr[i].mat); fonk(&ogr); printf("ogr'nin bellekte kapladigi alan : "); printf("%d byte\n",sizeof(ogr)); Bu fonksiyonda, "struct yap" türünde bir GÖSTERİCİ tanımlanmıştır. fonksiyona ana program tarafından bir gösterici adresi aktarıldığı için, bu işlemler yalnızca gösterici için yapılacaktır. "struct yap *ogrenci" nin bellekte kapladığı alan, "struct yap ogrenci" nin bellekte kapladığı alana göre çok daha az olduğundan zaman tüketimi çok daha az olacaktır (4 byte/18 byte Turbo C derleyicisi ile). Bu programı öğrenci için yapsaydık, bu oran (4 byte/60000 byte) olacaktı!! 31

33 4. Yapı göstericisinin tanımlanması, bize dinamik bellek fonksiyonlarını kullanmamızı sağlar. Programa dinamik. bellek yönetimiyle ilgili başlık dosyaları eklendi. // 8_4 #include<malloc.h> //dinamik bellek yönetimi komutları için. #include<stdlib.h> // exit() komutu için. #define SAY 3 struct yap int no,fizik,mat; ; int bul(struct yap ogrenci[say]) int i,t=0; for(i=0;i<say;i++) if(ogrenci[i].fizik>80) t++; return t; // Ana Program. int i; struct yap *ogr; ogr=malloc(say*sizeof(struct yap)); if(ogr==0) printf("yetersiz bellek\n"); exit(1); printf("%d ogrenci icin \n",say); for(i=0;i<say;i++) printf("%d.ogrencinin ogr_no fiz_notu mat_notu giriniz: ",(i+1)); scanf("%d%d%d",&ogr[i].no,&ogr[i].fizik,&ogr[i].mat); printf("\nfizik notu 80'den fazla olan ogr. sayisi: %d\n",bul(ogr)); printf("ogr'nin bellekte kapladigi alan : %d byte\n",sizeof(ogr)); free(ogr); 32

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ı

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ı

Diziler (Arrays) Çok Boyutlu Diziler

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

Detaylı

Temel Giriş/Çıkış Fonksiyonları

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

Detaylı

C PROGRAMLAMA D İ L İ

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

Detaylı

C Programlama Dilininin Basit Yapıları

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

Detaylı

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

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ı

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

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ı

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

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

Detaylı

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Programlamaya Giriş Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Programın Yazımında İzleyeceğimiz Adımlar Problemi anla. İhtiyaçları belirle. Problemin

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ı

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ı

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ı

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ı

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya MAK 1005 Bilgisayar Programlamaya Giriş Fonksiyonlar Prof. Dr. Necmettin Kaya 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

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ı

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları Döngüler Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut for Komutu do-while Komutu İçiçe Döngüler break ve continue Komutları while Komutu Döngü komutları komutların bir çok kez yeniden yürülmesini

Detaylı

Döngü ve Koşul Deyimleri

Döngü ve Koşul Deyimleri Döngü ve Koşul Deyimleri Programlar üç temel blok kullanılarak gerçekleştirilebilirler. art arda, bir koşula bağlı olarak ve sonlu sayıda yineleme (döngü) dir Koşul Deyimleri Birkaç seçenekten birini seçmek

Detaylı

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

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

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

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

Detaylı

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ı

BÖLÜM 7: DÖNGÜ KONTROL YAPILARI

BÖLÜM 7: DÖNGÜ KONTROL YAPILARI I. for DÖNGÜSÜ BÖLÜM 7: DÖNGÜ KONTROL YAPILARI for döngüsü, diğer programlama dillerinde olduğu gibi C programlama dilinde de yaygın bir şekilde kullanılır. Bir veya bir grup işlemin belirli bir sayıda

Detaylı

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

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

Detaylı

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar Bölüm 5 Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar İçindekiler 5.1 Formatlı Yazdırma............................ 34 5.2 Döngü Deyimleri............................. 34 5.2.1

Detaylı

Göstericiler (Pointers)

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

Detaylı

Programlama Dilleri 1. Ders 4: Diziler

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

Detaylı

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ı

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

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

Detaylı

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

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

Detaylı

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

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

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

Detaylı

Genel Programlama II

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

Detaylı

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler

Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler Diziler Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler Dizi Tanımı Değişkenler aynı anda tek bir değer tutabilen temel değişkenler ve birden fazla değer saklayabilen

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 İşaretçiler ve Diziler Fonksiyon

Detaylı

2. Dereceden Denklemin Köklerini Bulan Program

2. Dereceden Denklemin Köklerini Bulan Program 2. Dereceden Denklemin Köklerini Bulan Program [crayon-5bb74e5b18b15225541464/] C++ 2.dereceden denklemin köklerini bulan program [crayon-5bb74e5b18b25989362529/] ÇIKTI; C++ 2. dereceden denklemin köklerini

Detaylı

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

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri

Detaylı

BÖLÜM 9: POINTERLER (İŞARETÇİLER)

BÖLÜM 9: POINTERLER (İŞARETÇİLER) BÖLÜM 9: POINTERLER (İŞARETÇİLER) Bilgisayarın ana belleği (RAM) her biri 1 byte olmak üzere sıralı kaydetme hücrelerinden oluşmaktadır. Her hücreye kullanılan işletim sistemi tarafından bir adres atanmıştır.

Detaylı

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları Hazırlayan: Yrd. Doç. Dr. Ahmet DUMLU 1 M-Dosya Yapısı Bir senaryo dosyası (script file) özel bir görevi yerine getirmek

Detaylı

Ders 6: Karşılaştırma Deyimleri

Ders 6: Karşılaştırma Deyimleri Ders 6: Karşılaştırma Deyimleri Giriş Program içerisinde bazen iki veya daha fazla değerin karşılaştırılması gerekebilir Bunun için, bütün programlama dillerinde karşılaştırma deyimleri mevcuttur C dili,

Detaylı

BİL1001 Bilgisayar Bilimlerine Giriş 1

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

Detaylı

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR PROGRAMLAMA DERSİ BİLGİSAYAR PROGRAMLAMA DERSİ Yrd. Doç. Dr. Fatih TOSUNOĞLU Erzurum Teknik Üniversitesi Mühendislik Fakültesi İnşaat Mühendisliği Bölümü DERS NOTU 3 KONU: M-dosya yapısı ve Kontrol Yapıları M-Dosya Yapısı

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ı

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

C Konsol Giriş Çıkış Fonksiyonları

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

Detaylı

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER

Bölüm 8, Yrd. Doç. Dr. A. Kadir YALDIR PAÜ Bilgisayar Mühendisliği Bölümü BÖLÜM 8: DİZİLER BÖLÜM 8: DİZİLER Dizi bir kümedir. Aynı tipte verilere tek bir isimle erişmek için kullanılır. Bir dizinin bütün elemanları bellekte peş peşe saklanır. Dizi Tipi Tek boyutlu İki boyutlu Çok boyutlu Genel

Detaylı

Programlama Dilleri Laboratuvarı

Programlama Dilleri Laboratuvarı 2014 2015 Programlama Dilleri Laboratuvarı Ders Sorumlusu: Yrd. Doç. Dr. İsmail KURNAZ Laboratuvar Sorumluları: İÇİNDEKİLER Deney 1: Bilgisayar Kavramları, Algoritma Geliştirme ve Çözümü, Programlamaya

Detaylı

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI C PROGRAMLAMA DİLİ YRD.DOÇ.DR. BUKET DOĞAN 1 PROGRAM - ALGORİTMA AKIŞ ŞEMASI Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Algoritma bir sorunun

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ı

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar.

8. Bölüm DİZİLER. tip dizi_ismi[eleman_sayısı]; Bütün diziler 0 ile baţlar. DİZİLER 8. Bölüm Dizi aynı ad altında toplanmış ve aynı tipte olan değişkenlerin sıralı bir listesidir. C de bir dizi için bildirim yapılırken kullanılan genel kural şudur. tip dizi_ismi[eleman_sayısı];

Detaylı

Ders 7: Döngüler. Giriş. 7.1 while Döngüsü

Ders 7: Döngüler. Giriş. 7.1 while Döngüsü Ders 7: Döngüler Giriş Döngü (loop) deyimleri, bir kümenin belli bir koşul altında tekrar edilmesi için kullanılır. C programlama dilinde, while, dowhile ve for olmak üzere üç tip döngü deyimi vardır.

Detaylı

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

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

Detaylı

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ı

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir.

Döngü komutları komutların bir çok kez yeniden yürülmesini. sağlayan, programlamada kullandığımız önemli yapılardan biridir. Bölüm 5 Döngü Komutları while Komutu Diğer Operatörler Bileşik Komut for Komutu do-while Komutu İçiçe Döngüler break ve continue Komutları while Komutu Döngü komutları komutların bir çok kez yeniden yürülmesini

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Kontrol Yapıları if Seçme Deyimi if... else Seçme Deyimi while Tekrar

Detaylı

Pointer Kavramı. Veri Yapıları

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

Detaylı

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/

2) /* Kullanıcıdan alınan iki sayının obebini alt fonksiyon yardımı ile hesaplayan C programı*/ GENEL TEKRAR 1) /*Kullanıcının belirlediği sayı kadar dikdörtgenin kenar bilgilerini kullanıcıdan alan, dikdörtgenlerin alan ve çevresini alt fonksiyon yardımı ile hesaplayan ve sonuçları ekrana yazan

Detaylı

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu

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ı

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder. 1. Genel Bilgiler Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, if veya ile devam eder. if ve tek bir karşılaştırma deyimi olup kullanımı isteğe bağlıdır. Eğer bu koşul olumlu

Detaylı

C PROGRAMLAMA D İ L İ

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

Detaylı

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

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 4 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan İyilik insanları birbirine bağlayan altın zincirdir. ~Goethe Hafıza Yapısı 2 Bir değişken tanımlandığında arka

Detaylı

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

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

Detaylı

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

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

Detaylı

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ı

Akış Kontrol Mekanizmaları

Akış Kontrol Mekanizmaları Akış Kontrol Mekanizmaları 1 Akış Kontrol Mekanizmaları if else switch for döngüsü for döngüsünün çalışma prensibi for döngüsüyle ilgili örnekler for döngüsüyle ilgili kurallar while döngüsü while döngüsünün

Detaylı

Programlama Dilleri 1. Ders 5: Göstericiler

Programlama Dilleri 1. Ders 5: Göstericiler Programlama Dilleri 1 Ders 5: Göstericiler Değişkenlerin adresleri Bellekteki her değişkenin bir adresi ve bir de taşıdığı değeri vardır. int x=3; DEĞİŞKEN BELLEK ADRES 0 (0000) 1 2 3 4...... 65533 (FFFD)

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

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ı

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

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

Detaylı

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır. Örnek bir Algoritma Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır. Çözüm 1: 1. Evden dışarıya çık 2. Otobüs durağına yürü 3. Durakta

Detaylı

Algoritma ve Akış Diyagramları

Algoritma ve Akış Diyagramları Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I KONTROL YAPILARI TEKRARLAMA DEYİMLERİ = DÖNGÜLER (while, for, do-while) Şimdiye kadar, sıralı deyimleri ve seçim deyimlerini gördük. Ama, geldiğimiz aşamada, aşağıdaki

Detaylı

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

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

Detaylı

C PROGRAMLAMA D İ L İ

C PROGRAMLAMA D İ L İ C PROGRAMLAMA DİLİ Fonksiyonlar (Alt programlar) Fonksiyon Kavramı Fonksiyon, belirli sayıda verileri kullanarak bunları işleyen ve bir sonuç üreten komut grubudur. Her fonksiyonun bir adı ve fonksiyona

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ı

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 Program Akış Kontrol Yapıları Kontrol Komutları Normal şartlarda C dilinde bir programın çalışması, komutların

Detaylı

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

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel

Detaylı

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

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

Detaylı

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ı

Giriş. ENF102 Jeoloji

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

Detaylı

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri 7.0. Amaç Ve Kapsam Deneyde C dilinde kullanılan fonksiyon tanımlama ve parametre aktarım yöntemleri hakkında bilgi verilecektir. 7.1. Deneyden

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ı

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Detaylı

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ı

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

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

Detaylı

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER

ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER ÇOK BOYUTLU DİZİLER VE DİNAMİK BELLEK YÖNETİMİ İLE İLGİLİ ÖRNEKLER // 5 adet ogrenci icin 8 adet sinavi // temsil etmesi icin bir ogrenci tablosu // olusturuyoruz. Bunun icin 5x8 bir matris // yaratilmasi

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 2 C# Programlama Dili Örnekler 2 Örnek1:

Detaylı

ALGORİTMA VE PROGRAMLAMA I

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

Detaylı

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ı

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ı

Döngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler.

Döngüler - Loops 4/9/2010. ENF-102 Jeoloji Giriş. Sayaç kontrollü bir döngüdeki temel öğeler. Sayaç (counter) Kontrollü Döngüler. Giriş Döngüler - Loops Bir ifade kümesinin tekrarlanması, yani birden fazla çalıştırılması işlemine döngü (loop) dendiğiğ programlamaya giriş ş kısmında belirtilmişti. Bu derste döngülerin C programlama

Detaylı

C ile Uygulamalar 3 - Cevaplar

C ile Uygulamalar 3 - Cevaplar C ile Uygulamalar 3 - Cevaplar Cevap-1: //Soru 1 int recursivefaktoriyel(int); //Fonksiyonun prototipi tanımlanmaktadır. int sayi; printf("faktoriyeli Hesaplanacak Sayiyi Giriniz:"); scanf("%d",&sayi);

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Hafıza Yapısı Bir değişken tanımlandığında arka planda bilgisayarın hafızasında bir konuma yerleştirilir. Hafıza küçük hücrelerden oluşmuş bir blok olarak düşünülebilir. Bir değişken

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

Detaylı

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ı

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu. Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html

Detaylı

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir. BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir. TC programı çalıştırıldığında C++ çalışma ortamı açılır. C++ çalışma ortamında istenirse yeni bir

Detaylı

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ DÖNEM SONU SINAVI GÜZ 2009-2010 13 Ocak 2010, Sınav Süresi: 120 dakika. İsim

Detaylı