270 likes | 481 Views
Bilgisayar Programlama ( Yrd . Doç. Dr. İbrahim ASRİ ). Kaynak; T.Aydın(Ata.Ü.). disp VEYA fprintf KOMUTLARIYLA EKRANA MESAJ YAZDIRMA.
E N D
BilgisayarProgramlama(Yrd. Doç.Dr. İbrahim ASRİ) Kaynak; T.Aydın(Ata.Ü.)
disp VEYA fprintf KOMUTLARIYLA EKRANA MESAJ YAZDIRMA Daha önceki derslerimizde (değişkenin adı + enter) tuş kombinasyonu, istediğimiz değişkenin değerini görmemizi sağlıyordu. Ya da workspace içinde de değişkenimizi ve değerini görebiliyorduk. Ama disp ve fprintf komutları çok daha güçlü ve kullanışlı komutlar olup, ekrana mesaj yazmamızı sağlarlar.
disp KOMUTUYLA EKRANA MESAJ YAZDIRMA dispile Metinsel Çıkış >>disp('Bu birmetinciktisidir. ') dispile Nümerik Değişken Çıkışı >>disp(numerik degisken) dispile Metinle Beraber Nümerik Degişken Çıkışı >>disp(['Bu bir metin ciktisidir.'num2str(numerik degisken)]) ÖNEMLİ NOT :Bu slaytta “numerik degisken” dediğimiz şey bir skaler, bir vektör ya da bir matris olabilir.
fprintf KOMUTUYLA EKRANA MESAJ YAZDIRMA fprintf('ekrana basılacak açıklama %x\n', deger) Burada %x Kısmında Kullanabileceğimiz Seçenekler : %c :degerin tek bir karakter olduğunu gösterir. %s :degerin bir string olduğunu gösterir. %d :degerin bir tam sayı olduğunu gösterir. %f :degerinondalıklı bir sayı olduğunu gösterir. Diğer yandan : \n :degeriekranayazdıktansonraimleci bir satır atlatır. \t :degeriekranayazdıktansonraimleci bir TAB kadar atlatır.
fprintfve dispKOMUTUYLA EKRANA MESAJ YAZDIRIRKEN KESME İŞARETİNE DİKKAT !!! fprintf('ekrana basılacak açıklama %X\n', deger) DOĞRU ! fprintf(‘ekrana basılacak açıklama %X\n’, deger) YANLIŞ !
ÖRNEK (fprintf örneği) X = 4; Y = 56.23; Z = 'Merhaba Dünya' ; Q = 'c'; fprintf(' Tam sayı örneği ... X = %d \n ', X); fprintf(' Ondalıklı sayı örneği ... Y = %f \n ', Y); fprintf(' String (katar) örneği ... Z = %s \n ', Z); fprintf(' Char (karakter) örneği ... Q = %c \n ', Q);
ÖRNEK (disp ve fprintf örneği) Ekrandan girilen bir sayının karekökünü bulan, sayı sıfırdan küçükse “Negatif sayıların karekökü olmaz” uyarı mesajı veren programı yazınız. clc; clear; sayi = input(' Karekökü hesaplanacak sayıyı giriniz: '); if sayi<0 disp(' Negatif sayının karekökü olmaz!!!'); elsekarekok=sqrt(sayi); fprintf(' Karekök değerimiz= %f \n',karekok); end
DÖNGÜLER Tekrar tekrar yapılması gereken komutları döngü yapısı içine yazmalıyız. Döngü yapısı for veya while komutu ile gerçekleştirilir. for Döngüsü fordöngüsünün genel formatı for döngüdeğişkeni=ifade komutlar ... end while Döngüsü while döngüsünün genel formatı while koşul koşullar ... end
for Döngüsündeki İfadenin Tanımlanması fordöngü değişkeni=başlangıç:artış miktarı:bitiş komutlar... end fordöngü değişkeni=başlangıç:bitiş komutlar... end *** Artış miktarı belirtilmezse matlab otomatik olarak 1 kabul eder ...
FOR UYGULAMA (1) 1ile 50 arasındaki tam sayıların toplamını hesaplayarak ekrana basan bir MATLAB programı yazınız. clc; clear; toplam=0; % toplamadaetkisizeleman fori=1:50 toplam=toplam+i ; endtoplam % toplamı ekrana yazdırır *** Noktalı virgülden sonra ‘%’ işareti ile satırın sonuna kadarki kısım matlab tarafından çalıştırılmaz. Bu tamamen kullanıcıyı bilgilendirme amacı ile yazılan bir cümledir.
FOR UYGULAMA (2) 1ile ekrandan okunan bir sayı arasındaki tam sayıların toplamını hesaplayarak ekrana basan bir MATLAB programı yazınız. clc; clear; n =input('Lütfen Sayıyı Giriniz '); toplam=0; fori=1:n toplam=toplam+i ; endfprintf(' Cevap = %f \n ', toplam); % toplamı ekrana yazdırmanın başka bir yolu
FOR UYGULAMA (3) Ekrandan okunan iki ayrı sayı arasındaki tam sayıların toplamını hesaplayarak ekrana basan bir MATLAB programı yazınız. clc; clear; birinci=input('Lütfen Birinci Sayıyı Giriniz: '); ikinci=input('Lütfen İkinci Sayıyı Giriniz: '); toplam=0; fori=birinci:ikinci toplam=toplam+i ; endfprintf(' Cevap = %f \n ', toplam);
FOR UYGULAMA (4) 1ile ekrandan okunan herhangi bir sayı arasındaki sayıların çarpımını hesaplayarak ekrana basan bir MATLAB programı yazınız. clc;clear; n=input('Lütfen Bir Sayı Giriniz ='); carpim=1; % carpmadaetkisizeleman for i=1:n carpim=carpim*i; endcarpim **Bu program aslında ne yapar? Faktöryel hesabı
FOR UYGULAMA (5) For döngüsü testi yapan basit bir program: fprintf('For döngüsünü test ediyoruz ... \n\n'); fori = 20:-2:4 fprintf('For döngüsü içindeyiz.i: %d \n',i); end fprintf('\n For döngüsünden çıktık\n'); fprintf('Her bir döngüde, döngü değişkeninin o anki değerini yazdık \n');
FOR UYGULAMA (6) 1ile ekrandan okunan bir sayı arasındaki çift tam sayıların toplamını hesaplayarak ekrana basan bir MATLAB programı yazınız. clc; clear; n=input('Lütfen Bir Sayı Giriniz ='); toplam=0; fori=1:n if (mod(i, 2) == 0) toplam=toplam+i ; end endtoplam
FOR UYGULAMA (7) 3ile ekrandan okunan bir sayı arasındaki 5 ile bölünebilen tam sayıların toplamını hesaplayarak ekrana basan bir MATLAB programı yazınız. clc; clear; n=input('Lütfen Bir Sayı Giriniz ='); toplam=0; fori=3:n if (mod(i, 5) == 0) toplam=toplam+i ; end endtoplam ** n sayısı 3’ten küçük olursa döngüye girmez? Neden?
FOR UYGULAMA (8) 1 ile 50 arasındaki tek sayıların toplamını ve çift sayıların toplamını ayrı ayrı hesaplayarak ekrana basan bir MATLAB programı yazınız. clc; clear; teklerToplami=0; ciftlerToplami=0; fori=1:50 if (mod(i, 2) == 0) ciftlerToplami=ciftlerToplami+i ; else teklerToplami=teklerToplami+i; end endteklerToplami ciftlerToplami
while Döngüsü whilekoşul doğru komut 1 komut 2 ... komut n end
While ve For Döngüleri Bazen Birbirleri Yerine Kullanılabilir Ekrana adınızı ve soyadınızı 10 kez yazma işlemini, while döngüsü ve for döngüsü kullanarak 2 ayrı şekilde oluşturunuz. % while DöngüsüileÇözüm clc; clear; indeks=1; whileindeks <=10 disp('Tolga AYDIN'); indeks =indeks +1; end % for DöngüsüileÇözüm clc; clear; forindeks=1:10 disp('Tolga AYDIN'); end
While ve For Döngüleri Bazen Birbirleri Yerine Kullanılabilir (Devamı) • For döngüsünde döngü değişkeni, her döngüde artım miktarı kadar otomatik olarak değişir • While döngüsünde döngü değişkeni diye bir kavram yoktur, yeni bir döngünün başlaması için koşulun sağlanıp sağlanmadığının (doğru olup olmadığının) kontrolü vardır % while DöngüsüileÇözüm clc; clear; indeks=1; whileindeks <=10 disp('Tolga AYDIN'); indeks =indeks +1; end % for DöngüsüileÇözüm clc; clear; forindeks=1:10 disp('Tolga AYDIN'); end
WHILE UYGULAMA Aşağıdakiwhiledöngüsü kaçkereişletilir? devamEt=1; X=0; whiledevamEt == 1 disp('Merhaba'); X=X+1; end devamEt=1; X=0; whiledevamEt disp('Merhaba'); X=X+1; end = • **Sonsuz döngüden çıkmak için: • Command Window üzerine fare ile tıklayın • Ctrl + C tuş kombinasyonuna basın
breakDEYİMİ • for veya while döngülerinde program akışını kontrol edebilmenin bir yolu break deyimini kullanmaktır. • break deyimini döngü gövdesi içerisinde kullanmak, döngünün durmasını ve döngüden sonra gelen ilk komutun çalıştırılmasını sağlar. clc; clear; forindeks=10:2:30 if(indeks == 20) break; end fprintf('indeksin şu anki değeri= %d \n', indeks); end disp('For döngüsü break deyimi ile sonlandırıldı ...');
breakDEYİMİ (Devamı) clc; clear; indeks = 10; while indeks <= 30 if(indeks == 20) break; end fprintf('indeksin şu anki değeri= %d \n', indeks); indeks = indeks + 2; end disp('While döngüsü break deyimi ile sonlandırıldı ...');
continueDEYİMİ • SADECEfor döngülerinde, program akışı continue deyimi ile de kontrol edilebilir. • continue deyimi işletildiğinde döngü değişkeni bir sonraki değerine artırılır, continue deyiminden sonraki bütün herşey ihmal edilir ve for döngüsü, döngü değişkeninin yeni değeri için en baştan çalıştırılır. clc; clear; forindeks=10:2:30 if(indeks == 20) continue; end fprintf('indeksin şu anki değeri= %d \n', indeks); end
BİR SATIR VEKTÖRÜNÜ BİLGİ DEPOLAMAK İÇİN KULLANMA A=[ ]; %Başlangıçta Boş 2. METOD : A(1)=x; %A=[x] A(2)=y; %A=[x y] . . 1. METOD : A=[A x]; %A=[x] A=[A y]; %A=[x y] . . Başlangıçta boş olan bir satır vektörünün içinesırasıyla x ve y elemanları ekleniyor.
SATIR VEKTÖRÜNE SAĞDAN ve SOLDAN EKLEME A=[ ]; 1. Sağdan Ekleme A=[A x]; %A=[x] A=[A y]; %A=[x y] Son eklenen dizi elemanı dizinin sonuncu elemanı oluyor. 2. Soldan Ekleme A=[xA]; %A=[x] A=[yA]; %A=[yx] Son eklenen dizi elemanı dizinin birinci elemanı oluyor.