Sunuyu indir
Sunum yükleniyor. Lütfen bekleyiniz
YayınlayanBora Umut Gökay Değiştirilmiş 9 yıl önce
1
1 7. HAFTA
2
2 Referanslar Referanslar adres temsilcisidir İşaretçilerin görevlerini kısmi olarak yapabilirler Değişken değildirler. Bellekte yer tutmaları mümkün değildir & karakteri ile tanımlanabilirler Tanımlama anında atamaları da yapılmalıdır Referanslar C’de mevcut değildir Kullanılmaları çok pratiktir
3
3 Referans Tanımı-Ataması int a=3; int &refA=a;//Başlangıç ataması şart!! cout<<a<<endl;cout<<refA<<endl; refA=5;//refA, a değişkenin adresidir cout<<a<<endl;cout<<refA<<endl;cout<<&refA<<end;
4
4 İşaretçi-Referans Farkı #include<iostream.h> void change(int *ptr1,int *ptr2){ (*ptr1)++;(*ptr2)--;} main( ) { int a=10,b=20; cout<<"a="<<a<<"\n";cout<<"b="<<b<<"\n";change(&a,&b);cout<<"a="<<a<<"\n";cout<<"b="<<b<<"\n"; return 0; return 0;} #include<iostream.h> void change(int &ref1,int &ref2){ ref1++;ref2--;} main( ) { int a=10,b=20; cout<<"a="<<a<<"\n";cout<<"b="<<b<<"\n";change(a,b);cout<<"a="<<a<<"\n";cout<<"b="<<b<<"\n"; return 0; return 0;}
5
5 Karakter Dizgileri (Strings) String, NULL karakteri ile biten karakter dizisinden meydana gelir. Her karakter bir tamsayı ile temsil edilir K.Dizgileri çift tırnak arasında gösterilir K.Dizgeleri aslında bir işaretçi veya dizidir char sehir[]=“Van”; //dizi char sehir[]={‘V’,‘a’,’n’}; char *sehir=“İstanbul”; //işaretçi scanf(“%s”,sehir);
6
6 Karakter Fonksiyonları Fonksiyon Görevi isdigit c rakamsa TRUE, değilse FALSE döndürür isalpha c harfse TRUE, değilse FALSE döndürür isalnum c harf veya rakamsa TRUE, değilse FALSE döndürür isxdigit c hexadecimal ise TRUE, değilse FALSE döndürür islower c küçük harf ise TRUE, değilse FALSE döndürür isupper c büyük harf ise TRUE, değilse FALSE döndürür tolower Küçük harfe çevir toupper Büyük harfe çevir isspace c boşluk karakteri ise TRUE, değilse FALSE döndürür iscntrl c kontrol karakteri ise TRUE, değilse FALSE döndürür strupr diziyi büyük harfe çevirir strlwr diziyi küçük harfe çevirir int isdigit(int) //rakamsa 1, değilse 0 int isdigit(int c) { if( (c>=‘0’)&&(c =‘0’)&&(c<=‘9’) ) return 1; return 0; } int tolower(int c) {if(isupper(c))c+=32; return c; }
7
7 K.Dizgisi Dönüştürme Fonksiyonları Fonksiyon Görev atof Dizgiyi double’a dönüştürür atoi Dizgiyi int’e dönüştürür atol Dizgiyi long int’e dönüştürür strtod Dizgiyi double’a dönüştürür strtol Dizgiyi long int’e dönüştürür strtoul Dizgiyi unsigned int’e dönüştürür int atoi(const char *nptr) { int x=0,j=0; while (nptr[j]) { x=x*10+(nptr[j]-'0'); j++; } return x; } #include #include int main (){ int intSayi; int intSayi; char charSayi [50]; char charSayi [50]; printf ("Bir sayi girin: "); printf ("Bir sayi girin: "); scanf ("%s", &charSayi); scanf ("%s", &charSayi); intSayi = atoi (charSayi); intSayi = atoi (charSayi); printf ("Girilen deger:%d, 2 kati %d.\n",intSayi,intSayi*2); printf ("Girilen deger:%d, 2 kati %d.\n",intSayi,intSayi*2); getch(); getch(); return 0; return 0;}
8
8 K.Dizgisi İşleme Fonksiyonları Fonksiyon Görevi strcpyBir dizgiyi başka bir dizgiye kopyalar strncpy Bir dizginin belirli sayıdaki karakterini başka bir dizgiye kopyalar strcat Başka bir dizgiye ekler strncat Bir dizginin belirli sayıdaki karakterini başka bir dizgiye ekler void strcpy(char *s1,const char *s2) { int i=0; while (s2[i]) {s1[i]=s2[i];i++;}s1[i]='\0';} char *strcat(char *s1,const char *s2) { int i=0,j=0; while (s1[i]) i++; while (s2[j]) {s1[i+j]=s2[j];j++;}s1[i+j]='\0';}
9
9 K.Dizgisi Karşılaştırma Fonksiyonları FonksiyonGörev strcmpİki karakter dizgisini karşılaştırır. Birincisi büyükse pozitif, ikincisi büyükse negatif, eşitse 0 döndürür strncmpİki karakter dizgisini belirli sayıdaki karakterlerini karşılaştırır. Birincisi büyükse pozitif, ikincisi büyükse negatif, eşitse 0 döndürür int strcmp(const char* s1,const char* s2) { int i; for (i=0;s1[i]==s2[i];i++) if (!s1[i]) return 0; return s1[i]-s2[i]; }
10
10 K.Dizgisi Arama Fonksiyonları strchr: Bir dizgi içerisinde aranan karakterin ilk rastlanıldığı adresi döndürür strrchar: Bir dizgi içerisinde aranan karakterin son rastlanıldığı adresi döndürür strstr: Bir dizgi içerisinde aranan başka bir dizginin ilk rastlanıldığı adresi döndürür strok: Her çağrılmada dizgiyi bir parçaya (token) böler
11
11 Çalışma Soruları Soru 7.1 Bir fonksiyon karakterlerden oluşan bir dizgenin adresini tutan bir char işaretçisini parametre olarak alır ve aynalanmış kelimelerin sayısını ana fonksiyona döndürür. Örnek aynalanmış kelimeler: ata, kbk, akoka, vb.Aynalanmış kelimedeki karakter sayısı tek olur ve en az üç karakterden oluşur. Soru 7.2 Bir fonksiyonun prototipi: int fonk(char* dizge,char aranan,int mesafe) dir.Yazacağınız fonksiyon dizge içerisindeki aranan karakterin, verilen karakter mesafesi ile tekrar sayısını döndürmelidir. Örneğin: Aranan karakter ‘b’ olsun. Mesafe de 4 olsun. Dizgemiz “ababccccbaabvvvvvbeeeb” olursa, fonksiyon 2 değerini döndürür. Soru 7.3 Bir fonksiyon bir karakter dizisini parametre olarak almakta ve içerisinde geçen her bir karakterin sayısını başka bir diziye (28 elamanlı, her biri bir harfe gelecek şekilde) azalan sayıda (dizi[0] en fazla olan harfi, dizi[27] en az harfi tutmaktadır) kaydetmektedir. Parametre olan dizinin sonu, harften farklı bir karakter (rakam, noktalama işaretleri gibi) ile belirlenir. Soru 7.4 char * fonki (car *str1,char *str2, int konum) olarak verilen prototip için: str1 karakter dizgesi içerisine str2 dizgesi eklenmektedir. Eklemenin başlangıç yeri konum değişkeni ile belirlenmektedir. Eğer konum, str1 in eleman sayısından fazla ise ekleme doğrudan sondan başlar. Yeni oluşturulan dizinin adresi ana fonksiyona döndürülür. Örnek, str1: aaabbb, str2: ded ve konum 4 ise yeni dizi: aaadedbbb Soru 7.5 Fonksiyona parametre olarak alınan str1 ve str2 karakter işaretçisidir. Fonksiyon str1’içinde str2’ye karşılık gelen karakter dizgesini aramakta ve str1’in içerisinden silmektedir. Soru 7.6 Klavyeden 80 adete karakteri kadar getch fonksiyonu ile alan (alım nokta karakteri ile sonlandırılacak)ve alınan verilerin tutulduğu alanın başlangıç adresini ana fonksiyona döndüren fonksiyonu yazınız. Diziye ana fonksiyondan da erişilmelidir. NULL karakterini dizinin sonuna eklemeyi unutmayınız.
Benzer bir sunumlar
© 2024 SlidePlayer.biz.tr Inc.
All rights reserved.