Değişken Bildirimleri

Slides:



Advertisements
Benzer bir sunumlar
Dizi Kullanan Örnekler
Advertisements

STRİNG FONKSİYONLARI.
Diziler.
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Makine Müh. & Jeoloji Müh.
Nesnelerin Özellikleri. - Üye nesneler - friend belirtesi - Nesnelerin operatörlere yüklenmesi - this yerel (lokal) değişkeni - inline tanımlı üye fonksiyonlar.
Nöbetçi Kontrollü Döngü
Göstericiler (Pointers)
void medyan(int cevap[]) { int j; siralama(cevap);
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
Bölüm 2 C Dilinin Temelleri
Bölüm 4 İşlevlerve Modüler Programlama. 1 / 8 İşlev Tanımı /* İşlev açıklama satırı */ ( ) { }
Diziler.
Atama ve Girdi/Çıktı Komutları
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
BPR152 ALGORİTMA VE PROGRAMLAMA - II
String Kütüphanesindeki Arama Fonksiyonları
Diziler(Arrays).
Bölüm 10 Yapılar ve Birleşimler
KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR, NESNE DİZİLERİ Yılmaz Kılıçaslan.
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
NESNEYE YÖNELİK PROGRAMLAMA
Nesneye Dayalı Programlama
Erişim Denetimi, Fonksiyon
Fonksiyonlar.
C ile Programlamaya Giriş
FONKSİYONLAR.
© Copyright 1992–2004 by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. Fonksiyonlar –Programı modüler hale getirir –Yerel değişkenler,
Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Bilgisayar Programlama
Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Diziler (Arrays).
Bölüm 5 - Fonksiyonlar index 5.1 Giriş 5.2 C de Program Modülleri
C PROGRAMLAMA FONKSİYONLAR Hazır fonksiyonlar (math, rand) Kullanıcı Tanımlı Fonksiyonlar Değer ile Çağırma.
Diziler. Dizi Tanımı Dizi Elemanlarına Değer Atama Diziler ve Göstergeler 2-Boyutlu Diziler.
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
4. Hafta1 4. HAFTA. 4. Hafta2 Fonksiyonlar  Büyük problemler, küçük parçalara bölünerek kolay çözülür  Yazılımlar benzer modüller içerirler  Hata ayıklama.
1 7. HAFTA. 2 Referanslar  Referanslar adres temsilcisidir  İşaretçilerin görevlerini kısmi olarak yapabilirler  Değişken değildirler.  Bellekte yer.
Fonksiyonlar.
BİLGİSAYAR programlama II
1 Değişken alanları Geçici değişkenler Birleşik ifadeler(bloklar) ve değişkenler Değişken Depolama Süresi ve Alanı –Local ve global değişkenler –Static.
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Fonksiyonlar ve Diziler
YAPISAL PROGRAMLAMA Hafta-5
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
C Programlama Dili Bilgisayar Mühendisliği.
Bölüm 7 Fonksiyonlar GÖSTERGELER Gösterge Tanımı
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Bölüm 2 C Dilinin Temelleri
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
C++ Programming:. Program Design Including
YAPISAL PROGRAMLAMA Hafta-7
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
Bölüm 2 C Dilinin Temelleri
Bilgisayar Bilimi Fonksiyonlar-2.
C ile Programlamaya Giriş
Sunum transkripti:

Değişken Bildirimleri Yerel (Local) Bildirim Programdaki her bloğun ve fonksiyonun içinde kendi yerel değişkenleri tanımlanabilir. Bloğun içindeki tüm işlemler sonlandığında yerel değişkenler bellekten silinir. Genel (Global) Bildirim Genel değişkenler tüm fonksiyonların dışında bildirilirler. Program içindeki blok ve fonksiyonların hepsine aittir ve program çalıştığı sürece bellekte saklanır.

Depolama Sınıfları Bir tanıtıcı( değişken ve fonksiyon isimleri) depolama sınıfı Depolama süreci: tanıtıcının hafızada tutulduğu süre Faaliyet alanı: tanıtıcın program içinde kullanılabileceği yer. Bağlama: çok kaynaklı bir program içinde tanıtıcının yalnızca o andaki kaynak dosyada mı yoksa uygun bildirimlerle herhangi bir kaynak dosya da geçerli olacağı. Otomatik depolama süreci Bildirildikleri blok için yaratılır ve bloktan çıkıldığında yok edilir. auto: yerel değişkenler için varsayılandır. auto double x, y; register: çok hızlı erişilmesi gereken değişkenleri yerleştirir. Yalnızca otomatik değişkenler için kullanılabilir. register int counter = 1;

Depolama Sınıfları Statik depolama süreçi Program çalışmaya başladığı andan itibaren var olurlar. Varsayılan değerleri sıfırdır. static: yerel değişkenler fonksiyonlarda tanımlanır. Fonksiyon sonlandıktan sonrada değeri tutmaya devam eder. Sadece kendi fonksiyonu içinde bilinirler. extern: C' de uzun programların derlenmesi için programlar, dosyalar halinde bölünür. Dosyalar sonradan birleştirileceğinden ,bir dosya için geçerli değişkenlerin diğer dosyalar içinde geçerli hale gelmesi için, dosyaların başına diğer dosyaların global değişkenleri yazılır ve başına " . extern" getirilir. Herhangi bir fonksiyonda bilinirler.

Faaliyet Alanı Kuralları Dosya faaliyet alanı Herhangi bir fonksiyon dışında bildirilmiş tanıtıcılar bu faaliyet alanına sahiptir. Global değişkenler, fonksiyon tanımları ve fonksiyon prototipleri bu faaliyet alanına sahiptir. Fonksiyon faaliyet alanı Etiketler bu faaliyet alanına sahip tek tanıtıcılardır.(Örneğin basla:) Bulundukları fonksiyon içinde her yerde kullanılabilirler ancak fonksiyon gövdesi dışında kullanılamazlar.

Faaliyet Alanı Kuralları Blok faaliyet alanı Bir blok içinde bildirilmiş tanıtıcılar sahiptir. Bloğun sonlandığı küme parantezine ulaştığında sona erer. Değişkenler ve fonksiyon parametreleri(fonksiyon için yerel değişkenler) bu faaliyet alanına sahiptir. Bloklar yuvalandığında ve dıştaki bloktaki tanıtıcı içteki bloktaki tanıtıcıyla aynı isme sahip olduğunda, dış bloktaki tanıtıcı iç blok sona erene kadar saklanır. Fonksiyon prototipi faaliyet alanı Fonksiyon prototipinin parametre listesinde kullanılan tanıtıcılar bu faaliyet alanına sahip tek tanıtıcılardır.

#include <stdio.h> #include <conio.h> void a( void ); /* fonksiyon prototipi*/ void b( void ); /* fonksiyon prototipi */ void c( void ); /* fonksiyon prototipi */ int x = 1; // global degisken int main( ) { int x = 5; /* main'e yerel degisken */ printf ("main'in faaliyet alani disindaki yerel x degiskeni %d olur.\n", x ); { // yeni faaliyet alanina basla int x = 7; printf( "main'in faaliyet alani icindeki yerel x degiskeni %d olur.\n", x ); } // yeni faaliyet alanini bitir printf( "main'in faaliyet alani disindaki yerel x degiskeni %d olur.\n", x ); a( ); // a automatic yerel x' e sahiptir. b( ); // b static yerel x' e sahiptir. c( ); // c global x kullanır. a( ); // a automatic yerel x' e tekrar ilk değer atar. b( ); // static yerel x onceki değerini korur c( ); // global x'de değerinin korur. printf( "main icindeki yerel x %d olur.\n", x ); getch(); return 0; }

void a( void ) { int x = 25; /* a her çağırıldığında ilk değeri atanır */ printf( "\na'ya girildikten sonra yerel x %d olur.\n", x ); ++x; printf( "a'dan cikmadan once yerel x %d olur.\n", x ); } void b( void ){ static int x = 50; // sadece static ilk değer atama // b'nin ilk cağırılması printf( "\nb'ye girerken static x %d olur.\n", x ); printf( "b'den cikarken once static x %d olur.\n", x ); void c( void ) printf( "\nc' ye girerken global x %d olur.\n", x ); x *= 10; printf( "c' den cikarken global x %d olur.\n", x );

Yineleme Yineleme fonksiyonu(recursive fonc.) Kendi kendini çağırır. Yalnızca en basit durumu ya da temel durumu nasıl çözeceğini bilir. Problemi iki kavramsal parçaya ayırır Nasıl yapacağını bildiği Nasıl yapacağını bilmediği Orijinal probleme benzemeli(daha basit ya da daha küçük) Fonksiyon yeni bir kopyasını çağırarak nasıl yapacağını bilmediği problemi çözer .(Yineleme çağrısı) Sonunda temel durum çözülmüş olur. Bir önceki kopyasına bir sonuç aktarır ve sonuçların döndürüldüğü bir dizi, fonksiyonun orijinal çağrısının en son sonucu döndürmesine kadar yukarıya devam eder.

Yineleme Örneğin: faktöriyel 5! = 5 * 4 * 3 * 2 * 1 Göz önünde bulundur 5! = 5 * 4! 4! = 4 * 3! ... Yineleme şekilde hesaplanabilir. Teme durum(1! = 0! = 1) çöz ardında döndür. 2! = 2 * 1! = 2 * 1 = 2; 3! = 3 * 2! = 3 * 2 = 6;

Yineleme

#include <stdio.h> #include <conio.h> long faktoriyel(long); int main() { int i; for(i=1;i<=10;i++) printf("%3d!=%7ld\n",i,faktoriyel(i)); getch(); return 0; } long faktoriyel(long sayi) if(sayi<=1) return 1; else return(sayi*faktoriyel(sayi-1));

Yinelemeleri Kullanan Örnek: Fibonacci Serileri Fibonacci serisi: 0, 1, 1, 2, 3, 5, 8... Her şayi kendinden önceki iki tanenin toplamıdır. Yinelemeli olarak çözümü: fib(0)=0 fib(1)=1 fib( n ) = fib( n - 1 ) + fib( n – 2 )

#include <stdio.h> #include <conio.h> long fibonacci(long); int main() { long sonuc,sayi; printf("Bir tamsayi giriniz:"); scanf("%d",&sayi); sonuc=fibonacci(sayi); printf("Fibonnaci(%d)=%d",sayi,sonuc); getch(); return 0; } long fibonacci(long n) if(n==0 || n==1) return n; else return(fibonacci(n-1)+fibonacci(n-2));

Diziler Dizi Aynı isme ve aynı tipe sahip olmaları sebebiyle birbiriyle ilişkili olan hafıza konumlarının bir grubudur. Bir dizi içindeki bir elemanı yada konumu belirtmek için Dizi ismi Pozisyon Format: diziismi[pozisyon] İlk elemanın pozisyonu 0’dır. c isimli n elemanlı bir dizi c[ 0 ], c[ 1 ]...c[ n – 1 ]

Genel Programlama Hatası “Dizinin yedinci elemanı” ile “yedinci dizi elemanı” arasındaki farkı anlamak önemlidir. Dizi belirteçleri sıfırdan başladığı için “dizinin yedinci elemanı” 6 belirtecine sahiptir. ”yedinci dizi elemanı” ise 7 belirtecine sahiptir ve aslında dizinin sekizinci elemanıdır. Bu “bir eksik”(off-by-one) hatalarının kaynağıdır. NOT: Dizi belirteçlerini içine alan köşeli parantezler, C’de bir operatör olarak kullanılır ve parantezlerle aynı seviyede önceliğe sahiptirler

Dizilerin Bildirimleri Bir dizi tanımlarken belirtilmesi gerekenler İsmi Tipi Eleman sayısı arrayTip arrayİsim[ elemanSayısı ]; Örnek: int c[ 10 ]; float myArray[ 3284 ]; Bir anda birden fazla dizi tanımlamak Sıradan değişkenlerle aynı formatta Örneğin: int b[ 100 ], x[ 27 ];

Dizi Kullanan Örnekler Atama değerleri int n[ 5 ] = { 1, 2, 3, 4, 5 }; Yeterince atma yoksa kalan elemanlara 0 atanır. int n[ 5 ] = { 0 } All elements 0 Fazla atamada yazım hatası verir. Eğer boyut belirtilmemişse atama değerleri bunu belirler int n[ ] = { 1, 2, 3, 4, 5 }; 5 atama değeri ver, dizi 5 boyutlu olacak

#include <stdio.h> #include <conio.h> int main() { int n[ 10 ], i; for ( i = 0; i <= 9; i++ ) n[ i ] = 0; printf( "%s%13s\n", "Eleman", "Deger" ); printf( "%7d%13d\n", i, n[ i ] ); getch(); return 0; } #include <stdio.h> #include <conio.h> int main() { int n[ 10 ] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 }; int i; printf( "%s%13s\n", "Eleman", "Deger" ); for ( i = 0; i <= 9; i++ ) printf( "%7d%13d\n", i, n[ i ] ); getch(); return 0; }

#include <stdio.h> #include <conio.h> #define BOYUT 10 int main() { int s[ BOYUT ], j; for ( j = 0; j <= BOYUT - 1; j++ ) s[ j ] = 2 + 2 * j; printf( "%s%13s\n", "Eleman", "Deger" ); for ( j = 0; j < BOYUT; j++ ) printf( "%7d%13d\n", j, s[ j ] ); getch(); return 0; } #define BOYUT 10 10 değerine sahip, BOYUT isminde bir sembolik bir sabit yaratır. Sembolik sabitler, C önişlemcisi tarafından derleme esnasında yer değiştirme metniyle (replacement text) değiştirilecek olan tanıtıcılardır. Program önişlemeye sokulduğunda, BOYUT sembolik sabitiyle karşılaşılan her yerde BOYUT, değiştirme metni olan 10 ile değiştirilecektir.

#include <stdio.h> #include <conio.h> #define RESPONSE_SIZE 40 #define FREQUENCY_SIZE 11 int main() { int answer, rating, frequency[ FREQUENCY_SIZE ] = { 0 }; int responses[ RESPONSE_SIZE ] = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1, 6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7, 5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10 }; for ( answer = 0; answer <= RESPONSE_SIZE - 1; answer++ ) ++frequency[ responses [ answer ] ]; printf( "%s%17s\n", "Oylama", "Frekans" ); for ( rating = 1; rating <= FREQUENCY_SIZE - 1; rating++ ) printf( "%6d%17d\n", rating, frequency[ rating ] ); getch(); return 0; }

#include <stdio.h> #include <conio.h> #define BOYUT 10 int main() { int n[BOYUT] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 }; int i, j; printf( "%s%13s%17s\n", "Eleman", "Deger", "Histogram" ); for ( i = 0; i <= BOYUT-1; i++ ) { printf( "%7d%13d ", i, n[ i ]) ; for ( j = 1; j <= n[ i ]; j++ ) printf( "%c", '*' ); printf( "\n" ); } getch(); return 0;

#include <stdio.h> #include <stdlib.h> #include <time.h> #include <conio.h> #define BOYUT 7 int main() { int face, roll, frequency[BOYUT] = { 0 }; srand( time( NULL ) ); for ( roll = 1; roll <= 6000; roll++ ) { face = rand() % 6 + 1; ++frequency[ face ]; //swithc yapısı ilede yapılabilir. } printf( "%s%17s\n", "Yuz", "Frekans" ); for ( face = 1; face <= BOYUT - 1; face++ ) printf( "%3d%17d\n", face, frequency[ face ] ); getch(); return 0;