C++ Ders Notları 3.Ders (String İşlemleri)

Slides:



Advertisements
Benzer bir sunumlar
Nesneye Yönelik Programlama
Advertisements

Dizi Kullanan Örnekler
STRİNG FONKSİYONLARI.
Java Uygulamaları Konsol Uygulaması.
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
Nesneye Dayalı Programlama
Bölüm 2 C Dilinin Temelleri
String Diziler(Katarlar)
C Programlama Diline Giriş
Nesneye Dayalı Programlama
BİLGİSAYAR MÜHENDİSLİĞİNE GİRİŞ
BPR151 ALGORİTMA VE PROGRAMLAMA - I
C++’A GİRİŞ Yılmaz Kılıçaslan.
C++ STACK SINIFI.
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
String Kütüphanesindeki Arama Fonksiyonları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 3: Döngüler
KOPYA YAPICI FONKSİYON, STATİK ELEMANLAR, ARKADAŞ SINIF VE FONKSİYONLAR, NESNE DİZİLERİ Yılmaz Kılıçaslan.
INPUT/OUTPUT FORMATİNG
Bölüm 2 C Dilinin Temelleri Genel Kavramlar
Nesneye Dayalı Programlama
Derleyici Araçları FLEX & BISON
DİZİLER.
Bilgisayar Programlama (Yrd. Doç. Dr. İbrahim ASRİ)
C++ Yapısı Giriş-Çıkış Komutları Döngü Komutları
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
Paralel Programlamaya Giriş
SABİT NESNE VE ELEMAN FONKSİYONLAR VE ELEMAN NESNELER
JAVA İLE PROGRAMLAMAYA GİRİŞ
İSİM UZAYI Bir programın organizasyonu ve erişebilirliği üzerinde size daha fazla kontrol sağlayan C# özelliğidir.”Namescapes” olarak da bilinir.
Derleyici Teorisine Giriş
Nesneye Dayalı Programlama
C++’a Giriş Yılmaz Kılıçaslan.
Temel Giriş/Çıkış Fonksiyonları
C++ Ders Notları 2.Ders (Dilin Yapısı)
Bölüm 5 Nesneler ve Metotlar
C++.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Paralel Programlamaya Giriş 2
Paralel Programlamaya Giriş
C++ Ders Notları 4.Ders (Kontrol ve Döngüler)
 2006 Pearson Education, Inc. All rights reserved. Görsel C# ile Windows Programlama Güz 2009 (2. Hafta)
VERİ YAPILARI İşaretçi Nedir? Nesne Tabanlı Programlama.
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
2. HAFTA 2. Hafta.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
3. HAFTA 3. Hafta.
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.
PROGRAMLAMA Dosyalama İşlemleri
BİLGİSAYAR programlama II
C Programlamada, benzer tipte tanımlaman değişkenleri kontrol etmede bize en çok yardım eden dostlarımız dizilerdir. Örneğin: 100 Öğrencinin bilgilerini.
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
BİLGİSAYAR programlama II
Bilgisayar Programlama III C
Hafta2 Rekürsif Algoritmalar
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
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.
C’de Fonsiyonlar Aslı Ergün.
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
FONKSİYONLAR Programlamada fonksiyon kullanmanın en önemli sebebi kodların tekrar edilmesini engellemektir. Örneğin; karekök yada üsalma işlemi yapan bir.
Veri Türleri, Atamalar ve Tip Dönüşümleri …
Bölüm 2 C Dilinin Temelleri
YAPISAL PROGRAMLAMA Hafta-6
Bilgisayar Programlama
BİLGİSAYAR programlama II
YAPISAL PROGRAMLAMA Hafta-7
Bölüm 2 C Dilinin Temelleri
MTM216 GÖRSEL PROGRAMLAMA
Sunum transkripti:

C++ Ders Notları 3.Ders (String İşlemleri) Yrd. Doç. Dr. Musa Ataş

String sınıfı ve ilgili metodları C++ da karakterlerden oluşan dizeleri string türünden deklare edebiliriz. Bu türdeki değişkenlere iki tırnak içerisinde her türlü karakter girişi yapabiliriz. string sınıfını (türünü) kullanabilmemiz için en başa #include<iostrem> yazıp using namespace std; satırını eklememiz gerekmektedir. Aksi takdirde derleyicimiz hata mesajı üretecektir. using namespace std; satırı yazılmadığı zaman, komutların başına std:: öneki yazma zorunluluğu bulunmaktadır. #include <iostream> using namespace std; int main() { string message=“Merhaba Dunya!”; cout << “your message:" << message << endl; return 0; } Not: C++ dili C dilinde stringleri tanımlamak için kullanılan char* (char pointer) türünde yapıyı da desteklemektedir. Ancak pointerlarda yapılabilecek olası hatalar ve pointerları öğrenme zorluğu yüzünden bu konu işlenmemektedir.

String sınıfı ve ilgili metodları string bir değişken tanımlandığında constructor (yapıcı) metoduna ilk değer parametre girilerek te yapılabilir. Örn: using namespace std; string str(“Merhaba”); string sınıfından tanımlanmış bir değişkene cin ile kullanıcıdan değer alınabilir. Bunun için iki yol vardır. Birincisi eğer alınacak değer tek kelime ise doğrudan cin>>str_degisken denilebilir. Bu durumda aralarında boşluk olan kelimelerden sadece ilki alınacaktır. İkincisi: aralarında boşluk olan kelimelerin tümü alınacaksa o zaman getline metodu kullanılır. Örn: getline(cin, str_degisken);

Stringlerin eklenmesi stringler birbirlerine “+” operatörü ile eklenebilirler. Mesela: using namespace std; string str1(“Merhaba”); string str2=“ Dunya”); string str3=str1+str2; += opearatörü de stringleri ekleme için kullanılabilir. + veya += operatörü string ile char* türündeki stringi de ekleyebilecek şekilde tasarlanmışlardır.

Stringlerin karşılaştırılması stringler birbirleri ile “==” operatörü ile kıyaslanabilmektedirler. Mesela: using namespace std; string str1(“Merhaba”); string str2=“ Dunya”); bool b=(str1==str2); cout << “comparing two string:” << b << endl; “==“ operatörü genellikle if koşul yapılarında veya koşul içeren diğer yapılarda (for, while gibi) kullanılmaktadır. Örn: const string sifre=“hmyo”; string str=“”; cout << “enter your password:” ; cin >> str; if (str==sifre){ cout << “basarili” << endl; }else{ cout << “ sifre hatali” << endl; }

String uzunluğu ve karakterlere erişim string bir değişkenin uzunluğu length() veya size() metodu ile alınabilir. Mesela: using namespace std; string str=“Merhaba Dunya”; cout << “length of the specified string:” << str.length() << endl; cout << “length of the specified string:” << str.size() << endl; Yukarıdaki örnekte “Merhaba Dunya” cümlesi aslında C++ da bir karakter dizisi olarak algılanmaktadır. C/C++/Java/C# ve diğer birçok dilde diziler 0. indis ten başlarlar. Bu mantığa göre M harfi str stringinin aslında 0. elemanıdır. Örn: #include <iostream> int main() { string sifre="hmyo"; cout << "0.index:" << sifre[0] << endl; cout << "1.index:" << sifre[1] << endl; cout << "2.index:" << sifre[2] << endl; cout << "3.index:" << sifre[3] << endl; }

Stringlerde arama (find metodu) string bir değişkenin içinde bir başka stringin veya karakterin geçip geçmediğini yine string sınıfında tanımlanmış find metodu ile buluyoruz. find metodu parametre olarak aranacak kelime ile aramanın hangi indisten itibaren yapılacağı bilgisini alıp aranan kelimenin ilk geçtiği yerin indis yani pozisyon bilgisini geri dönderir. Mesela aşağıdaki örnekte bir stringin içerisine serpiştirilmiş 4 ayrı and kelimesinin string içerisindeki yerleri find metodu ile bulunmaya çalışılmıştır. Dikkat edilirse find metodu her and kelimesinin yerini bulduğunda bir sonraki arama bu noktanın bir ilerisinden başlatılmaktadır. string sifre="hmyoanddlfklsdfksandsşdlfkşlsdfksandşsldfkldfkand"; cout << "orjinal string:" << sifre << endl; int p1=sifre.find("and",0); cout << "1.yer:" << p1 << endl; int p2=sifre.find("and",p1+1); cout << "2.yer:" << p2 << endl; int p3=sifre.find("and",p2+1); cout << "3.yer:" << p3 << endl; int p4=sifre.find("and",p3+1); cout << "4.yer:" << p4 << endl;

Stringlerde alt küme (substring) string bir değişkenin içinde istediğimiz pozisyondan itibaren istenilen uzunlukta karakter alma işlemini substring işlemi denilir. Bunun için C++ dilinde string sınıfında tanımlanmış substr metodu kullanılmaktadır. Örn: string sifre="hmyoanddl fklsdfksand sşdlfkş lsdfksandşsld fkldfkand"; string alt_string=sifre.substr(12,7); cout << "alt string:" << alt_string << endl;

Stringten silme string bir değişkenin içinde istediğimiz pozisyondaki bir stringi silebilmek için erase metodunu kullanıyoruz. erase metodu parametre olarak silmeye başlanacak başlangıç pozisyon numarası ile kaç adet karakterin silineceği (uzunluk) bilgisini alır. Mesela; “Siirt Meslek Yüksek Okulu” stringindeki Meslek kelimesini silebilmek için aşağıdaki kodu yazabiliriz. #include <iostream> using namespace std; int main() { string str="Siirt Meslek Yuksek Okulu"; cout << "orjinal string:" << str << endl; string geriye_kalan=str.erase(6,6); cout << "geriye kalan:" << geriye_kalan << endl; }

Stringleri artarda ekleme Birden fazla string değişken artarda eklenebilir. Bunun için sstream kütüphanesinin include ile programınıza dahil edilmesi gerekmektedir. String dışındaki diğer türler de stream değişkenine eklenebilir bu durumda tüm değişkenler stringe dönderilir. (type casting) #include <iostream> #include <sstream> using namespace std; int main() { string s1="siirt"; string s2="meslek"; int a=21; stringstream ss; ss<<s1<<" "<<s2<<":"<<a<<" yuksek okulu"; string s3=ss.str(); cout<<s3<<endl; return 0; }

Stringte istenilen bir indexten sonra ekleme işlemi string bir değişkenin içinde istediğimiz pozisyondan itibaren istenilen bir string eklenti yapılabilir. Bunun için insert() metodu kullanılır. insert() metodu parametre olarak eklemeye başlanacak başlangıç pozisyon numarası ile eklenecek string ekini alır. Mesela; “Siirt Meslek Yüksek Okulu” stringinde ki Meslek kelimesinin arkasına Bilgisayar kelimesini ekleyebilmek için aşağıdaki kodu yazabiliriz. #include <iostream> using namespace std; int main() { string str="Siirt Meslek Yuksek Okulu"; cout << "orjinal string:" << str << endl; string eklenen=str.insert(12," Bilgisayar"); cout << "eklenmis str:" << eklenen << endl; }

String sınıfının diğer metodları string sınıfında bunların dışında daha birçok kullanılabilecek metod bulunmaktadır. Bunları öğrenemek için google dan detaylı araştırma yapabilirsiniz. C kütüphaneleri ve geriye uyumluluk açısından string sınıfında tanımlanmış c_str() fonksiyonu, const char* tipinde string üretmeye çalışır. Örn: #include <iostream> using namespace std; int main() { string my_string("Merhaba Dunya"); const char* p=my_string.c_str(); cout<< p <<endl; }