580 likes | 913 Views
Bölüm 8 - Karakterler ve Dizgiler. İndex 8.1 Giri ş 8.2 Dizgiler ve Karakterler in kuralları 8.3 K arakter İşleme Kütüphane si 8.4 Dizgi Değiştirme Fonksiyonlar ı 8.5 Standar t Input/Output Kütüphane Fonksiyonlar ı 8.6 Dizgi işleme Kütüphane sinin Dizgi işletme Fonksiyonlar ı
E N D
Bölüm 8 - Karakterler ve Dizgiler İndex 8.1 Giriş 8.2 Dizgiler ve Karakterlerin kuralları 8.3 Karakter İşleme Kütüphanesi 8.4 Dizgi Değiştirme Fonksiyonları 8.5 Standart Input/Output Kütüphane Fonksiyonları 8.6 Dizgi işleme Kütüphanesinin Dizgi işletme Fonksiyonları 8.7 Dizgi Karşılaştırma Fonksiyonları 8.8 Dizgi işleme Kütüphanesinin Arama Fonksiyonları 8.9 Dizgi işleme Kütüphanesinin Hafıza Fonksiyonları 8.10 Dizgi işleme KütüphanesininDiğer Fonksiyonları
Amaçlar • Bu Bölümde Öğreneceklerimiz: • Karakter işleme Kütüphanesinin Fonksiyonlarını kullanabilmek (ctype). • Standartgiriş/çıkış Kütüphanesinin (stdio)Dizgi ve karakter input/output Fonksiyonlarını kullanabilmek • Standart Kütüphanesinin (stdlib) Dizgi DeğiştirmeFonksiyonlarınıkullanabilmek • Dizgi işleme Kütüphanesinin (Dizgi/String) Dizgi işlem Fonksiyonlarını kullanabilmek • Fonksiyon kütüphanelerinin gücünü yazılımların tekrar kullanılabilmesi olarak anlayabilme.
8.1 Giriş • BazıStandart Kütüphane Fonksiyonları tanıma • KolayDizgi ve karakter işlemleri • Programlar Karakterleri, Dizgileri, metinleri, ve Hafıza bloklarını işleyebilirler • Bu teknikler • Kelime işlemcileri • Sayfa planı yazılımları • Dizgicilik programları için kullanılırlar
8.2 Dizgiler ve KarakterlerKuralları • Karakterler • Program bloklarını inşa etme • Her program anlamlı Karakter gruplarının birbiri ardına gelmesidir • karakter sabiti • Birintdeğeritek tırnak içerisinde karakter olarak referans edilir • 'z' , z’ nin (int) tamsayı değerini temsil eder • Dizgiler • Karakterlerin serileri tek birim olarak ele alınır • Harfleri, sayıları ve özel Karakterleri(*, /, $) içerebilir • Dizgi gerçeği /literatürü (Dizgi sabiti) – çift tırnak içerisinde yazılır • “Merhaba" • Dizgiler Karakterlerin dizileridir • Dizgi , ilk karakteri gösteren bir göstergeçtir • Dizginin değeri ilk karakterin adresidir
8.2 Kurallar of Dizgiler ve Karakterler • Dizgi Tanımlamaları • Define as bir karakter dizisiveya birchar *tipinin değişkeni olarak tanımlama char color[] = “mavi"; char *colorPtr = “mavi”; • Dizgilerin, sonu '\0' ile iten karakter dizileri olarak temsil edildiğinihatırlayın • color5 elemana sahiptir • Dizgilere Giriş yapma • Scanf kullanımı scanf("%s", word); • Kopyaları word[]içerisine yerleştirir • &ihtiyaç yoktur (çünkübir Dizgi birgöstergeçtir) • '\0‘için dizideki yerini terk etmesini hatırlayın
8.3 karakter işleme Kütüphane • Karakter işleme Kütüphanesi • Faydalı testleri ve karakter verilerinin kullanımlarını uygulamak için Fonksiyonlar içerir • Her Fonksiyon, bir karakter (birint) veyaEOFargüman olarak içerir • Bir sonraki slaytbütün fonksiyonların bir tablosunu içeriyor <ctype.h>
isdigit’e göre: 8 , sayisidir # ,sayisi değildir isalpha ’e göre: A , harfidir b ,harfidir & ,harfi değildir 4 ,harfi değildir isalnum ’e göre: A ,sayi veya harfdir 8 ,sayi veya harfdir # ,sayi veya harfi değildir isxdigit ’e göre: F , hexadecimal sayidir J , hexadecimal sayi değildir 7 , hexadecimal sayidir $ , hexadecimal sayi değildir f , hexadecimal sayidir Program Output
fig08_03.c (Part 2 of 2) Program Output Islower ‘e göre: p küçük harftir P küçük harf değildir 5 küçük harf değildir ! küçük harf değildir isupper ‘e göre: D büyük harftir d büyük harf değildir 8 büyük harf değildir $ büyük harf değildir U, büyük harf U’ya dönüştürüldü 7,büyük harf7’ye dönüştürüldü $,büyük harf$’a dönüştürüldü L,küçük harf l’ye dönüştürüldü
Isspace’e göre: Yeni satirbir beyaz-bosluk karakteridir yatay tab is a beyaz-bosluk karakter % is not a beyaz-bosluk karakter Iscntrl’e göre: yeni satir kontrol karakterdir $ kontrol karakteri değildir Ispunct’e göre: ; noktalı virgül karakteridir Y noktalı virgül karakter değildir # noktalı virgül karakter değildir Isprint’e göre: $ baski karakterdir Alert baski karakteri değildir Isgraph’e göre: Q boşluk karakterinden farklı baski karakteri Space boşluk karakterinden farklı baski karakteri değildir Program Output
8.4 Dizgi DeğiştirmeFonksiyonlar • DeğiştirmeFonksiyonlar • In<stdlib.h> (Standart Kütüphanesi) • Sayıların Dizgilerinitamsayi ve virgüllü sayı değerlerine çevirme
fig 08_06.c Program Output Dizgi "99.0“, 99.000 olarak tutulur Tutulan değerin 2’ye bölümü 49.500
fig08_07.c Program Output 2593 dizgisi (int) tamsayisina 2593’e dönüstürüldü dönüstürülen deger eksi 593 esittir 2000
fig08_08.c Program Output “1000000" dizgisi long’a1000000olarak dönüstürüldü dönüstürülen degerin 2’ye bölümü 500000
fig08_09.c Program Output "51.2% kabul edilir" Dizgisidouble deger 51.20 ve "% kabul edilir“Dizgisine dönüstürülmüstür
fig08_10.c Program Output Orjinal dizgi "-1234567abc" dir Dönüstürülen değer -1234567 dir Orjinal dizginin kalanı "abc“dir Dönüstürülen değer artı 567 -1234000dir
fig08_11.c Program Output Orjinal dizgi "-1234567abc" dir Dönüstürülen değer -1234567 dir Orjinal dizginin kalanı "abc“dir Dönüstürülen değer artı 567 -1234000dir
8.5 Standard Input/Output Kütüphane Fonksiyonları • <stdio.h> Fonksiyonları • karakter ve veri dizgisi kullanma
fig08_13.c (Part 1 of 2) Program Output Bir metin girin: Karakterler ve Dizgiler Metnin tersten yazılımı: religziDevrelretkaraK Bir metin girin: able was I ere I saw elba Metnin tersten yazılımı able was I ere I saw elba
Bir metin girin: Bu bir denemedir. Girilen metin: Bu bir denemedir. Program Output
fig08_15.c Program Output bir (int) ve (double) sayi girin: 298 87.375 s dizisinde tutulan biçimlendirilmiş cıktı:: İnt: 298 double: 87.38
fig08_16.c Program Output s karakter dizisinde tutulan değerler: int: 31298 double: 87.375
8.6 Dizgi işleme Kütüphanesinin Dizgi Elde etme Fonksiyonları • Dizgi işleme Kütüphane şu Fonksiyonlara sahiptir • Veri Dizgisi elde etme • Arama Dizgileri • Dizgiyi mantıklı parçalara bölmek • Dizgi boyu tanımlama
fig08_18.c Program Output x dizisindeki Dizgi: Mutlu yıllar ydizisindeki Dizgi : Mutlu yıllar zdizisindeki Dizgi : Mutlu yıllar
s1 = Mutlu s2 = yeni yıllar strcat( s1, s2 ) = Mutlu yeni yıllar strncat( s3, s1, 6 ) = Mutlu strcat( s3, s1 ) = MutluMutluyeni yıllar Program Output
8.7 Dizgi işleme KütüphanesininKarşılaştırma Fonksiyonlar • Karşılaştırma Dizgileri • Bilgisayar Dizgi içindeki Karakterlerin sayısal ASCII kodlarını karşılaştırır • Bölüm D karakter kodlarının bir listesine sahiptir int strcmp( const char *s1, const char *s2 ); • s1 Dizgisinis2 ile karşılaştırır • Eğers1 < s2ise bir negatif sayıyı, s1 == s2ise sıfır veyas1 > s2ise bir pozitif sayıyı geriye döndürür int strncmp( const char *s1, const char *s2,size_t n ); • s1iles2 Dizgininn Karakterlerine kadar karşılaştırır • Geriye yukarıdaki gibi değer döndürür.
s1 = Mutlu yeni yıllar s2 = Mutlu yeni yıllar s3 = Mutlu tatiller strcmp(s1, s2) = 0 strcmp(s1, s3) = 1 strcmp(s3, s1) = -1 strncmp(s1, s3, 6) = 0 strncmp(s1, s3, 7) = 1 strncmp(s3, s1, 7) = -1 Program Output
fig08_23.c (Part 2 of 2) Program Output “bu bir metindir“ icesinde ‘i’ karakteri bulundu. “bu bir metindir“ icesinde ‘z’ karakteri bulunamadı.
fig08_24.c Program Output string1 = deger 3.14159 dir string2 = 1234567890 string1’in baslangıc uzunlugu string2 den hiçbir karakter icermemektedir = 13
fig08_25.c Program Output “sakımak“icindeki karakterlerdenm “bu bir metindir” ’de görülen ilk karakterdir
fig08_26.c Program Output The remainder of string1 beginning with the last occurrence of karakter 'z' is: "zebras"
fig08_27.c Program Output string1 = The value is 3.14159 string2 = aehi lsTuv string1’in baslangıc uzunlugu string2 den sadece = 13 karakter icermektedir
fig08_28.c Program Output string1 = abcdefabcdef string2 = def string1’in kalanı string2’nin ilk olusumu ile baslıyor: defabcdef
Dizginin belirtgeci: Bu 7 belirtke ile birlesmis bir cumledir belirtkeler: Bu 7 belirtke ile birleşmiş bir cumledir Program Output
8.9 Dizgi- işleme Kütüphanesinin Hafıza Fonksiyonları • Hafıza Fonksiyonları • <stdlib.h> içinde • İşleme, karşılaştırma, ve Hafıza’nın Arama blokları • Herhangi veri bloklarını işleyebilir • Gösterici parametrelerivoid *dir • Any pointer can be assigned to ve vice versa • Herhangi bir gösterici void *ve tam tersiolarak atanabilir • void * cannot be dereferenced • Her Fonksiyon işlemciye bit (Karakterler) sayıları belirtilmiş bir argümanı alır
fig08_31.c Program Output After s2 is copied into s1 with memcpy, s1 contains "Copy this Dizgi"
fig08_32.c Program Output Memmove ‘dan önce x dizisindeki Dizgi: Home Sweet Home Memmove ‘dan sonra x dizisindeki Dizgi: Sweet Home Home