Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
1
YAPISAL PROGRAMLAMA Hafta-7
AR. GÖR. ESRA SÖĞÜT
2
İçindekiler Recursive fonksiyonlar Enum Diziler
Dizi Elemanlarına İlk Atama Dizi ve Fonksiyon Kullanımı İki Boyutlu Diziler İki Boyutlu Dizi ve Fonksiyonlar Örnekler Kaynaklar
3
Kendi Kendini Çağıran Fonksiyonlar (Recursive)
Tekrarlama fonksiyonları Kendi kendini çağıran fonksiyonlardır Yalnızca temel problemi çözebilirler Problemi böl Yapamadığı kısım için fonksiyon kendi yeni kopyasını çağırır (tekrarlama basamağı) Sonunda temel problem çözülmüş olur
4
Kendi Kendini Çağıran Fonksiyonlar
Örnek olarak faktöryel: 5!=5*4*3*2*1 Faktöriyel tekrarlama ile çözülebilir Temel kısmı çöz(1! = 0! = 1) sonra 2! = 2 * 1! = 2 * 1 = 2; 3! = 3 * 2! = 3 * 2 = 6;
5
Örnek: Bir tamsayının faktörünün hesaplanması
#include<stdio.h> long faktor (int); İnt main() { İnt sayi; Long sonuc; Printf ( “bir tam sayi giriniz: " ); Scanf ( "%d", &sayi); result = faktor ( sayi); printf( “%d faktoriyeli = %ld\n", sayi, sonuc); Return 0; } /* tekrarlama faktor fonksiyonu tanimi*/ Long faktor ( int n ) { İf ( n <=1 ) return1; Else return ( n * faktor( n -1 ); }
6
Enum = Enumeration (Numaralandırmalar)
Bu kavramın türkçeleştirilmesi anlam karışıklığına yol açtığı için genellikle "enum sabiti" şekilde kullanılmaktadır. Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. Bu tipte, değerleri çeşitli sembollerle belirtebiliriz: Örneğin haftanın günlerini sembolize etmek için aşağıdaki gibi bir yapı kullanılabilir. Enum gunler {pzt, sl, crs, prs, cm, cts, pzr} hafta; Enum gunler hafta1, haft2; Başka bir örnek: Enum ornek { bir = a, iki= b, uc = t, dort = n };
7
Enum-Örnek #include<stdio.h> using namespace std;
//isim uzayı tanımladık. Her satırın başına(string olanların) başına std //koymamak için bu kısa tanımlamayı kullandık int main() { enum Dizi { seyfettin, kahveci, bau}; //dizi adında enum tanımlamasını yaptık . //DİKKAT Enum tanımlaması yaparken string ifadeler "tırnak" içinde yazılmaz. Dizi d; //enumun adı olan dizinin artık yeni adı d d=bau; //dnin bau olan degerinin indezks numarası cout<<d; //dnin değerini ekrana yazalım //enumlar da 0 dan başlar, o sebeple ekrana 2 yazar. return 0; //programı bitirelim. }
8
Diziler (Arrays) Belirli bir boyutta tanımlanmış, içinde aynı tipte veriler barındıran, ardı ardına sıralı bellek hücrelerinden oluşan bir veri yapısıdır. veriTipi diziİsmi[elemanSayisi]; Bir dizi, aynı isme ve aynı tipe sahip olmaları sebebiyle birbirleriyle ilişkili olan hafıza konumlarının bir grubudur. Bir dizinin içindeki bir elemanı ya da konumu belirtmek için o dizinin adını ve elemanın dizi içindeki pozisyonunu belirtmeliyiz.
9
Diziler int c[12]; int c[4]=1543; X=5; C[x+3]=-3; c[2]=c[2]+5; veya
Sonuçta: c[2]=5 oldu.
10
Diziler-Soru
11
Diziler-Cevap
12
Dizi Elemanlarına İlk Atama
13
Dizi ve Fonksiyon Kullanımı-Örnek
14
Dizi ve Fonksiyon Kullanımı-Örnek
Dizi elemanlarını yazan program:
15
Soru
16
Cevap
17
İki Boyutlu Diziler
18
İki Boyutlu Dizi Tanımı
19
İki Boyutlu Dizi
20
İki Boyutlu Dizi Elemanlarına Erişim
21
İki Boyutlu Dizi Elemanlarına Erişim
22
İki Boyutlu Dizi-Soru
23
İki Boyutlu Dizi-Cevap
24
İki Boyutlu Dizi ve Fonksiyonlar
25
Diziler-Örnek /*Diziye bildirim sırasına ilk değerler verme*/ #include <stdio.h> int main( ) { int n[10]={32, 27, 64, 18, 95, 14, 90, 70, 60, 37}; int i; printf (“%s %13s\n”,”Eleman”,”Değer”); for (i = 0; i <= 9 ;i++1) printf (“%6d%14d\n”,i,n[i]); return 0; }
26
Diziler-Örnek /*Dizi elemanlarının toplamlarını hesaplamak*/ #include <stdio.h> #define BOYUT 12 int main( ) { int a[ BOYUT ]={1, 3, 5, 4, 7, 2, 99, 16, 45, 67, 89, 45}; int i, toplam=0; for (i = 0;i <= BOYUT - 1; i++) toplam += a[i]; printf (“Dizideki elemanların toplamı %d dir.\n”,toplam); return 0; }
27
Diziler-Örnek /*Karakter dizilerini string gibi ele almak */ #include <stdio.h> int main( ) { char string1[ 20 ], string2[] = "string literal"; int i; printf("Bir string girin: "); scanf( "%s", string1 ); printf( "string1: %s\nstring2: %s\n" "karakterler arasında boşlukla string1:\n", string1, string2 ); for ( i = 0; string1[ i ] != '\0'; i++ ) printf( "%c ", string1[ i ] ); printf( "\n" ); return 0; }
28
Diziler-Örnek /*Dizide lineer arama yapmak */ #include <stdio.h> #define BOYUT 100 int lineerArama( const int [], int, int ); int main( ) { int a[ BOYUT ], x, aramaDegeri, eleman; for ( x = 0; x <= BOYUT - 1; x++ ) /* veri oluştur */ a[ x ] = 2 * x; printf( "Arama değeri tamsayısını gir:\n" ); scanf( "%d", & aramaDegeri); eleman = lineerArama( a, aramaDegeri, BOYUT); if ( eleman != -1 ) printf( "Bu değer, eleman %d de bulundu\n", eleman ); else printf( "Bu değer bulunamadı\n" ); return 0; } int lineerArama( const int dizi[], int anahtar, int boyut ) { int n; for ( n = 0; n <= boyut - 1; ++n ) if ( dizi[ n ] == anahtar ) return n; return -1; }
29
Diziler-Örnek /*Çok boyutlu dizilere ilk değer atanması */ #include <stdio.h> void diziyiYazdir( const int [ ][ 3 ] ); int main( ) { int dizi1[ 2 ][ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } }, dizi2[ 2 ][ 3 ] = { 1, 2, 3, 4, 5 }, dizi3[ 2 ][ 3 ] = { { 1, 2 }, { 4 } }; printf( "Satır satır dizi1’in elemanları:\n" ); diziyiYazdir ( dizi1 ); printf( " Satır satır dizi2’in elemanları:\n" ); 234 diziyiYazdir ( dizi2 ); 18 printf( " Satır satır dizi3’in elemanları:\n" ); diziyiYazdir ( dizi3 ); return 0; } void diziyiYazdir ( const int a[ ][ 3 ] ) { int i, j; for ( i = 0; i <= 1; i++ ) { for ( j = 0; j <= 2; j++ ) printf( "%d ", a[ i ][ j ] ); printf( "\n" ); } }
30
Soru
31
Cevap
32
Soru
33
Cevap
34
Kaynaklar Atılım Üniversitesi-Yrd. Doç. Dr. Çiğdem Turhan - Yrd. Doç. Dr. Fatma Cemile Serçe-C++ Dersi Sunumları Anadolu Üniversitesi- Öğr. Gör. Levent Terlemez-Bilgisayar Programlama Ders Notları C ve C++ Deitel&Deitel Programlama Kitabı İTÜ-Dr. Feza Buzluca-Nesneye Dayalı Programlama Dersi Notları Gazi Üniversitesi-Doç. Dr. Ercan Nurcan YILMAZ C++ Dersi Sunumları İnönü Üniversitesi-Doç. Dr. Müslüm Arkan C Programlama Ders Notları
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.