%% Metin işlemleri
% MATLAB da Ekrana Bilgi Yazma
% Yazdığımız MATLAB programlarının ürettikleri sonuçları kullanıcıya monitör üzerinden aktarabilmek için kullanabileceğimiz iki MATLAB komutu vardır. Bunlar disp ve fprintf komutlarıdır. Şimdi bu komutları sırasıyla inceleyelim.
% disp Komutu ile Ekrana Bilgi Yazdırma
% disp komutu ile
% Metinler,
% Sayısal değerler veya
% Metinler ile sayısal değerlerin karışımları ekrana yazdırılabilir.
% disp Komutu ile Ekrana Metin Yazdırma:
% Yazdığımız programlarda kullanıcıya yönelik uyarı mesajlarını ya da sırf metin çıktılarını genellikle disp’in bir kullanımı ile ekrana yansıtırız. disp komutunun ekrana metin yazdırma amacıyla kullanımına komut penceresi üzerinden birkaç örnek aşağıda verilmiştir.

disp('Üzgünüm! Sıfıra Bölüm Hatası Var.');
disp('Üzgünüm! Hatalı Giriş Yaptınız.');

%
% Disp komutunun ekrana sadece metin yazdırma amacıyla kullanımı görüldüğü gibi oldukça basittir. Ekrana yazdırılmak istenen metin açılıp kapanan yek tırnak içerisine alınır ve disp komutuna parametre olarak aktarılır. Disp komutu ise kendisine parametre olarak verilen metni ekrana yazdırır ve imleci bir alt satırın başına götürür.
% disp Komutu ile Ekrana Sayısal Değer Yazdırma
% disp komutunun ekrana sayısal değer yazdırma amacıyla kullanımına komut penceresi üzerinden verilen birkaç örneği aşağıda inceleyelim.

skaler=16;
satirVektoru=[12 -4 36 25 47];
matris=[1 2;3 4];
skaler
disp(skaler);
disp(satirVektoru);
disp(matris);  

% Bu örneğimizde komut penceresi üzerinde özellikle bir skaleri bir satır vektörü ve bir matris ataması gerçekleştirilmiştir. Bu atama deyimlerinin sonuna ise noktalı virgüller koyularak yapılan işlemlerin ekrana çıktı olarak yansıması engellenmiştir. Daha sonra skaler adlı değişkenin değerinin ekrana yansıtılması için iki farklı yöntem izlenmiştir. İlk yöntem, değişken adının sonuna noktalı virgül koymadan komut penceresinde doğrudan çalıştırırken, ikinci yöntem değeri ekrana yazdırılacak skaler değişkeninidisp komutuna parametre olarak aktarma yolunu seçmiştir. Örneğimiz son olarak içerisinde bir satır vektörü ve bir matris saklayan değişkenlerin de disp ile ekrana kolaylıkla yazdırılabildiğini göstermiştir.
% İPUCU: Bu aşamadan itibaren yazdığımız bütün MATLAB deyimlerinin sonuna noktalı virgül koymayı ve ekrana bilgi yazdırmak amacıyla sadece disp ve fprintf komutlarını kullanmayı alışkanlık haline getirmeliyiz. Satır sonuna eklenmeyen noktalı virgül sayesinde ekrana bilgi yazdırılması işlemini unutalım.
% disp Komutu ile Ekrana Sayısal Değerleri ve Metinleri Birlikte Yazdırma
% Bir metin ve sayısal bir değer, disp komutu ile ekrana yazdırılmak üzere aşağıdaki örnekteki gibi birleştirilebilir.

tahmin=input('Lütfen Bir Sayi Giriniz: ');
disp(['Girdiğiniz Sayı: ' num2str(tahmin) ' dir. ']);       

% MATLABın hazır fonksiyonlarından olan num2str,kendisine parametre olarak verilen sayısal bir değeri karakter dizisine çevirir. Örneğin 12 sayısını ‘12’ yapar. Metinleri ve sayısal değerleri bir arada kullanmak, iki farklı grubu birleştirmek gibi düşünülebilir. Mevcut durumda birbirlerine dönüştürmek gereklidir. Metinler karakter dizileridir. Sayısal değerleri de num2str ile karakter dizilerine dönüştürerek metinlerle bir arada kullanabiliriz. Disp’e bu işlem için açılıp kapanan kare parantezler içerisinde tanımlı satır vektörü formunda bir parametre verildiğine dikkat ediniz.
%
%
%% fprintf Komutu ile Ekrana Bilgi Yazdırma
% fprintf komutu/fonksiyonu ekrana bilgi yazdırmak amacıyla genel olarak aşağıdaki şekliyle kullanılır:
% fprintf(format,değişkenler);
% fprintf komutunun format adlı birinci bileşeni/parametresi tek tırnaklar arasında tanımlanan ve ekrana yazdırılacak olan bilgiyi temsil eden karakter dizisidir. Değişkenler isimli ikinci bileşen ise format içerisinde belirlenen kurallara göre değeri ekrana yazdırılacak olan ve birbirinden virgüllerle ayrılan değişkenleri ifade eder. Duruma göre fprintfsadece format bileşeninden de oluşabilir; tek bir değişkene de sahip olabilir.
% Öte yandan format içerisinde kullanılan ve fprintf için özel anlam ifade eden 2 karakter vardır. Bunlardan birincisi % (yüzde) ve ikincisi de \(ters bölü)karakteridir. Söz konusu her iki karakter de kendilerini takip eden karakterle birlikte değerlendirilirler.
%             Format içerisinde rastlanılan \ karakteri ile onu takip eden karakterin birleşiminin icra edeceği işlev aşağıda listelenmiştir.
% \n:İmleci bir alt satırın başına götürür.(n, newline)
% \t:İmleci bir tab kadar sağa kaydırır.
% Diğer taraftan format içerisinde rastlanılan %karakteri ile onu takip eden karakterin birleşimi aşağıdaki tabloda tanımlanan işlevlerden birini yerine getirir.
% %c
% İlgili değişkenin tek bir karakter olduğunu gösterir.
% %s
%   İlgili değişkenin bir karakter dizisi(string) olduğunu gösterir.
% %d
% İlgili değişkenin bir tam sayı olduğunu gösterir.
% %f
% İlgili değişkenin bir ondalıklı sayı olduğunu gösterir.
% %g
% İlgili değişkeni mümkün olan en kompakt formda gösterir.
% Fprintfkomutunun ise çalışma prensibi ise basitçe şöyledir. Fprintf, kendisine açılıp kapanan tek tırnaklar (‘’) içerisinde parametre olarak verilen metni soldan sağa doğru karakter karakter ekrana basar. Bu ekrana basma yolculuğu esnasında % karakteri ile ilk karşılaştığında durur ve ekranda imlecin bulunduğu noktaya, metni kapatan tek tırnak sonrasında ilk virgülü takip eden değişkenin değerini basar. Yazdırılacak değişkenin sakladığı verini tipinin % karakterini takip eden karakterle tanımlanan cinsten olmasına dikkat edilmelidir. Örneğin ekrana yazdırılacak metin %d içeriyorsa, virgülden sonra yer alan ve değeri imlecin bulunduğu pozisyona bastırılacak olan değişkenin içerisinde bir tam sayı olması beklenir. Fprintf komutu benzer şekilde karşılaştığı ikinci % karakteri yerine, ekrana, kapanan tek tırnaktan sonraki ikinci virgülü takip eden değişkenin değerini basar ve yoluna devam eder. Fprintf,ekrana karakter basma yolculuğu sırasında\ karakterine rastlarsa bir sonraki karakterin durumuna göre bir işlem gerçekleştirir. Eğer n görürse (\n) bir alt satıra gitme karakterini ekrana basar yani imleci bir alt satırın başına götürür. Eğer t görürse (\t) imleci tab kadar sağa kaydırır.
% Bir örnek üzerinde fprintf komutunun kullanımını daha detaylı olarak inceleyelim.

karakter='d';
isim='deniz';
tamsayi=25;
ondalikliSayi=3.1416;
fprintf('Tanımlanan Karakter= %c',karakter);

%

fprintf('Tanımlanan String =%s\n',isim);
fprintf('Tanımlanan Tamsayı =%d\n',tamsayi);
fprintf('Tanımlanan Ondalıklısayı =%f\n',ondalikliSayi);
fprintf('Tanımlanan Ondalıklısayı =%g\n',ondalikliSayi);
fprintf('Tam= %d ve Ondalıklı= %g\n',tamsayi,ondalikliSayi);

% Yukarıdaki örnekte öncelikli olarak dört farklı değişken ataması gerçekleştirilmiştir. Birinci fprintf komutu, ekrana yazdırılacak metnin sonunda \nkullanılmadığı için imleci metnin bittiği yerde bırakmıştır ve >> karakteri satır başında gözükmemiştir. (ikinci fprintfkomutundan önce enter tuşuna basılarak >> karakteri satır başına manuel olarak taşınmıştır.) Son fprintfkomutu ise metin içerisinde hem %dve hem de %g kullanmıştır. Bu sayede metin içerisindeki %d karakterinin olduğu pozisyona tamsayi adlı değişkenin değerinin ve %gkarakterinin olduğu pozisyona da ondalikliSayiisimli değişkenin değerinin bastırılması hedeflenmiştir.
% İPUCU: fprintf içerisinde %f nin kullanıldığı durumlarda tam sayı değerler ondalıklı olarak temsil edilebilsinler diye MATLAB tarafından tam sayıların sağına gereksiz sıfırlar eklenir. Çoğu zaman estetik olmayan sonuçlar doğuran bu tür durumların önüne geçebilmek için %gkullanılabilir. Örneğin yukarıdaki örnekte dördüncü fprintf komutu içerisinde %fkullanılmıştır ve ondalıklı sayı ekrana 3.141600 şeklinde yazdırılmıştır. Öte yandan, beşinci fprintf komutu %f yerine %g formatını kullanmıştır ve bu sayede, ondalıklı sayı ekrana sonundaki sıfırlar atıldıktan sonra en kompakt haliyle, yani sadece 3.1416 şeklinde yazdırılmıştır. Özetlemek gerekirse, herhangi bir matematiksel işlemin sonucunun tam sayı mı ondalıklı sayı mı olacağının önceden kestirilemeyeceği durumlarda sonucu saklayan değişkenin değerini fprintf komutu ile birlikte %g formatını kullanarak ekrana yazdırmak estetik açıdan daha uygundur.
% İPUCU: fprintf komutu ile içerisinde % karakteri barındırmayan dolayısıyla değişken bileşeni olmayan karakter dizileri de ekrana yazdırılabilir. Örneğin disp(‘Şampiyon FENERBAHÇE’); deyiminin yerine fprintf(‘Şampiyon FENERBAHÇE’);deyimi de kullanılabilir. Ve bu sayede ekranda Şampiyon FENERBAHÇE yazısı görüntülenebilir.
% İPUCU: disp komutu ekrana çıktı verdikten sonra imleci bir alt satırın başına otomatik olarak götürür. İmleci, fprintf komutu çıktısı sonrası bir alt satırın başına götürmek ise kullanıcı sorumluluğundadır ve bu işlem ancak \n kullanımı ile mümkündür. Ayrıca dispkomutu satır veya sütun vektörleri ile matrisleri ekrana kolayca yazdırırken, aynı işlemi fprintf ile yapabilmek daha çok işlem gerektirmektedir.
% fprintf ile Alan, Hizalama ve Duyarlılık Kontrolü
% fprintf komutu ile alan, hizalama ve duyarlılık kontrolü de yapılabilir. Şöyle ki:
% fprintf ile ondalıklı sayıların ayraçtan itibaren kaç basamak duyarlılıkla ekrana yazdırılacağı belirlenebilir.
% fprintf ile ekrana yazdırılacak verinin imlecin bulunduğu noktadan itibaren kaç karakterlik bir alanı kullanacağı belirlenebilir.
% fprintf ile bir verinin kendisine rezerve edilen alanın sağında veya solunda hizalanabileceği belirlenebilir.
% Bu türden uygulamalarda % karakteri ile onu takip eden ve bir önceki bölümde tanımlanan özel karakterlerin arasına yeni karakterler eklenir. Açıklamalarımızda kullanmak üzere örneğin %f yi ele alalım ve %± 6.2f nin hangi yeni çıktı formatlarını beraberinde getirdiğini inceleyelim.
% %± 6.2f içerisindeki:
% f
% İlgili değişkenin bir ondalıklı sayı olduğunu gösterir.
% 2
% İlgili değişkenin değerinin ayraçtan sonra 2 basamak duyarlılıkla ekrana yazdırılması gerektiğini belirtir.
% .
% Ayraç karakteridir.
% 6
% İlgili değişkenin değerinin imlecin bulunduğu noktadan itibaren kendisine rezerve edilecek olan 6 karakterlik bir alana yazdırılacağını belirtir.
% +
% İlgili değişkenin kendisine rezerve edilen alanın sağına hizalanmış olarak ekrana yazdırılacağını belirtir.
% -
% İlgili değişkenin kendisine rezerve edilen alanın soluna hizalanmış olarak ekrana yazdırılacağını belirtir.
% Aşağıdaki komut penceresi çıktısı üzerinden örnekler bu konuyu pekiştirmek amacıyla kullanılmıştır.

fprintf('pi Sayısının Değeri: %f dir.\n',pi);
fprintf('pi Sayısının Değeri: %.3f dir.\n',pi);
fprintf('pi Sayısının Değeri: %8.3f dir.\n',pi);
fprintf('pi Sayısının Değeri: %-8.3f dir.\n',pi);
fprintf('Merhaba %10s\n','Dünya');
fprintf('%9dx8+%d=%d\n',123,3,987);
fprintf('%-9dx9+%2d=%10d\n',12345,6,111111);

%
%% String Hazırlama
% sprintf
%
%% string karşılaştırma
% strcmp
% strcmpi
%
% string ekleme-çıkarma
% string dönüştürme
%
% string içinden parça alma
%
% bir klasörün içindeki tüm dosyaların isimlerinin alınması
%
%