Değişken atama Kullanıcıdan veri girişi istendiğinde ... · Bu komutun aktif olduğu...

39
Değişken atama Kullanıcıdan veri girişi istendiğinde kullanılır 1. Bir değişkene değer atama (örn: a=4 gibi) 2. Klavyeden veri girme 3. Bilgisayar belleğinde saklanan verileri bir 3. Bilgisayar belleğinde saklanan verileri bir dosyadan okumak

Transcript of Değişken atama Kullanıcıdan veri girişi istendiğinde ... · Bu komutun aktif olduğu...

�Değişken atamaKullanıcıdan veri girişi istendiğinde kullanılır

1. Bir değişkene değer atama (örn: a=4 gibi)2. Klavyeden veri girme3. Bilgisayar belleğinde saklanan verileri bir 3. Bilgisayar belleğinde saklanan verileri bir

dosyadan okumak

>>x=2;>>y=34.2;>>isim=‘Ahmet’;

veya

1. Bir değişkene değer atama

>>x=2; y=34.2; >>isim=‘Ahmet’;

" input " komutu yardımıyla bir MATLABprogramı içerisinde de ğerlendirilmek üzerekullanıcıdan klavye yoluyla bir veri alınır ve buveri bir de ğişkene atanır. 4 farklı şekildeyapılabilir.

2. Klavyeden veri girme

I. InputII. Klavyeden girmeII. Klavyeden girmeIII. Menu fonksiyonuIV.pause komutu

I. InputEğer klavyeden değer girilmek istenirse input komutu

kullanılır. En genel hali;

Değişkenadı=input(‘ifade’)

şeklindedir. Bu komutla kullanıcıdan değer girmesibeklenir.

» num=input(‘Pozitif bir sayı giriniz: ')Pozitif bir sayı giriniz: 5num =

5

Yukarıdaki örnekte komut yazıldıktan sonra ekranakullanıcıdan pozitif bir sayı isteyen cümle gelecek. Kullanıcıörneğin 5 değerini girdiğinde num değişkene 5 değeriniatayacaktır.

>> a=input('')4a =

4

>> a=input('a= ')İnput komutu 3 farklı şekilde

>> a=input('a= ')a= 4

a =4

>> a=input('değer atayınız a= ');değer atayınız a= 3

farklı şekilde girilebilir

>> sayi1=input('Lutfen 1. Sayiyi Giriniz= ')

input KOMUTU ĐLE KLAVYEDEN SAYISAL VER Đ GĐRME

Tek tırnaklar arasına nasıl bir bilgi girmesi gerektiği hususunda

kullanıcıya verilecek uyarı mesajıyazılır.

>> sayi1=input('8')

yazılır.

input KOMUTU ĐLE KLAVYEDEN MET ĐNSEL VERĐ GĐRĐŞĐ

>> isim=input('Lutfen Isminizi Giriniz = ', 's' )

‘Keyboard’ & ‘return’ komutuİşletilen programların kodlarına ve içeriklerine dışarıdanmüdahale edebilmek için kullanılır. Böylece programınisletilmesi durdurulur, fonksiyonun kontrol edilebilmesinisağlar, değişkenler üzerinde inceleme ve değişiklik yapılabilir.Bu komutun aktif olduğu “K>>” seklindeki özel bir komutistem sembolü ile belirtilir. Bu özellikten çıkıp programınakısına devam edebilmek için, “ return ” komutu girilir ve “

II. Klavyeden Girme

akısına devam edebilmek için, “ return ” komutu girilir ve “enter ” tuşuna basılır. Bu özellik sayesinde çalışma alanındaüretilen sonuçlara anında ulaşabilmek mümkün olmaktadır.Return’den önce program ya da değişken yazılabilir.

Örnek: Aşağıdaki örnekte M-File ve komut icra satırları verilmiştir.

Bu program komut satırında çalıştırılırsa aşağıda gösterildiği gibi icra edilirBirinci sayıyı giriniz: 4İkinci sayıyı giriniz: 2K>> c=10c =10K>> returnd =80K>> return

Örnek:Aşağıdaki dosyayı yazarak çalıştırın.

A=10;B=16;X=A+B;Y=X/2;

%Y=X/2;Keyboard %Y değerini kontrol et ve yazmayı bitir

%‘return’ komutu kalan programı çalıştırır.Z=A-B

> A=10;B=16;X=A+B;Y=X/2;keyboard % Y değerini kontrol etZ=A-BK>> AA =

10K>> ZK>> Z??? Error using ==> keyboardUndefined function or variable 'Z'.K>> YY =

13K>> returnZ =

-6

i=menu(‘title’, ‘option1’, ‘option2’,……..)

>>i=menu('Select your favorite name','ahmet','mehmet','ali');if i==1

disp('ahmet is your friend')elseif i==2

disp('mehmet is your brother')elseif i==3

disp('ali is your father')

III. ‘menu’ fonksiyonu

12

disp('ali is your father')else

disp('No selection is done')end

ahmet is your friend

‘pause’ komutu programın geçici olarakdondurulmasını sağlar. Devam etmek için klavyeden herhangibir tuşa basabilirsiniz veya belirtilen süre sonundakendiliğinden devam eder.

pause Fonksiyonu klavyeden herhangi bir tuşabasıncaya kadar geçici durdurma yapar.

pause(k) Fonksiyonu n saniye kadar geçici durdurma yapar.

IV. ‘pause’ komutu

13

yapar.

for i=1:10ipause(2)end

Okuma ve Dosyaya Kaydetme

• Dosyadan veri almada kullanılan bir çok fonksiyon vardır.

1.’load’ fonksiyonu: Diskte saklı bir dosya içindeki değişkenleri tekrar belleğe yükler.

load % matlab.mat (default) dosyasını yükler

load(‘dosyaismi’) %verdiğiniz dosya isminde yüklerload(‘dosyaismi’) %verdiğiniz dosya isminde yükler

load(‘dosyaismi’, ’x’, ’y’, ’z’)%sadece x, y, z değişkenlerini verdiğiniz dosyaya yükler

load dosyaismi x, y, z % sadece x, y, z değişkenlerini verdiğiniz dosyaya yükler

Not:

1. Dosya isminin yanında uzantısını yazmazsanız .mat uzantılı olarak kaydeder.

2. Load fonksiyonu sadece sayısal veri içeren dosyalarda kullanılır

ÖRNEK:

Aşağıdakileri yazın ve abc.txt dosyası olarak kaydedin

1 3 4 5 77 8 0 9

>>load abc.txt %Dosyayı workspace’e yükler

>>abc

Okuma ve Dosyaya Kaydetme

1 3 4 5 77 8 0 9

Şayet biz değişken ismini değiştirmek istersek aşağıdaki komutu yazmamız gerekir.

>>test=load (‘abc.txt’) % şimdi veriler ‘abc.txt’, ‘test’ olarak kaydedilir.

2.’save’ function: Değişkenleri kaydeder

save %Workspace’deki bütün verileri matlab.mat

olarak kaydeder

save(‘dosya ismi’) %Verileri veriğiniz dosya isminde kaydeder

save(‘dosya ismi’, ’x’, ’y’, ’z’) %dosyaya sadece x, y, z değişkenlerini yükler

Okuma ve Dosyaya Kaydetme

yükler

save dosya ismi x, y, z % dosyaya sadece x, y, z değişkenlerini yükler

Not:-

1. Dosya isminin yanında uzantısını yazmazsanız .mat uzantılı olarak kaydeder.

2. Değişkenleri içinde bulunulan directory’den başka bir directory’yekaydetmek için, dosyanın tüm adı belirtilmelidir

3. ‘textread’ fonksiyonu: Şayet bir text dosyası sayı içeriyorsa dosya önce fopenkomutu ile çağrılmalı sonra textread komutu ile okunmalıdır.

fid=fopen(‘abc.txt’, ’r’) % abc.dat dosyasını okumak için açar

� textread komutu ayrılmış değişkenleri okumada kullanılabilir.

Okuma ve Dosyaya Kaydetme

� textread komutu ayrılmış değişkenleri okumada kullanılabilir.

[a, b, c, d]=textread(‘abc.txt”, ‘%f %c …….’, N)

(N okunacak satır sayısıdır. N yoksa dosyanın tümü yani son satırına kadar okunur)

gibi

[isim, çeşit, a, b, c]=textread(‘abc.txt’, ’%s %s %f %f %f’)

%s: dizge tanımı

%f:kayan noktalı sayı formatıdır

•Matlab’de dosyaların içindeki metnin okunması için textread fonksiyonu bulunmaktadır. Örneğin, aşağıda koordinat.txt dosyasındaki verilerin okunması istensin:

Okuma ve Dosyaya Kaydetme

•Bunun için,

fonksiyonu kullanılır. nokta, nokta isimlerini içeren bir hücre dizisi; x, x koordinat vektörü ve y, y koordinat vektörü olarak atanır.

•fopen, program çıktılarının yazdırılacağı dosyayı açar, fprintf yazdırır vefclose ise yazdırma işlemini sonlandırır.•Örneğin, bir a kenarı programda hesaplatılmış olsun. Bu programın açıktısını, kenar.txt isimli bir dosyaya yazdırmak için, aşağıdaki kodlardüşünülür;

Okuma ve Dosyaya Kaydetme

a=150.0234234; fid=fopen('kenar.txt','w');fprintf(fid,'%s%1.4f','kenaruzunlugu=',a);fclose(fid);

w bu dosyanın üzerine yazılacağını gösterir.(a“mevcut metnin altına yaz”demektir)

düşünülür;

Okuma ve Dosyaya Kaydetme

Program Çıkışı ve Sonuç Gösterme2. ‘disp’ fonksiyonu

>>A=[1 2; 3 4]; % değişkenleri gösterir

>>disp(A)

1 2

3 4

>>disp(‘En büyük sayı:’) % mesajı gösterir

En büyük sayı:

Giriş-Çıkış Fonksiyonları

1.Dosya açma kapama fonksiyonları

2.Formatlı giriş-çıkış fonksiyonları

1. Dosya açma-kapama fonksiyonları� ‘fopen’ fonksiyonu: komutu bilgi kaydetmek için veri dosyası açar veya

oluşturur. Yazım formatı:

• fid=fopen( dosya ismi, izin_kodu)burada

fid=file id izin_kodu = erişim modunu belirten bir karakter dizisidir

Giriş-Çıkış Fonksiyonları

izin_kodu = erişim modunu belirten bir karakter dizisidir

• [fid] = fopen(dosya ismi, izin_kodu, format)burada

format = dosyadaki verilerin türünü açıklar

fid= fopen('bil_prog.txt','wt');

Yapısı ile .txt dosyası çalışılmakta olan klasör içine açılır. Örneğin,

bil_prog.txt. Eğer istenilirse farklı bir adrese de ilgili tx dosyası açılabilir.

Giriş-Çıkış Fonksiyonları

Burada “wt” txt dosyasının hem yazma hem de okuma için açıldığını

belirtir.

Ayrıca “fid” yerine “fid1”, “fid_1” veya “fid_sonuclar” gibi farklı ifadeler

kullanılabilir.

>> fid_banu= fopen('deneme_5.txt','wt');>> fprintf(fid_banu, 'd666666666eneme %i \n',4);>> fclose(fid_banu);>> >> fprintf('d666666666eneme %i \n',4);d666666666eneme 4

Giriş-Çıkış Fonksiyonları

d666666666eneme 4 >> % ekrana yazar

d666666666eneme 4

clear all; clcfid= fopen('deneme_1.txt','wt');fid1= fopen('sonuclar.txt','wt');% fid yani deneme 1 e yazarfor i=1:10

fprintf(fid,' deneme %i \n',i);end

% fid1 yani sonuclar.txt ye yazar

Giriş-Çıkış Fonksiyonlarıdeneme 1.0000 deneme 8.0000 deneme 27.0000 deneme 64.0000 deneme 125.0000 deneme 216.0000 deneme 343.0000 deneme 512.0000 % fid1 yani sonuclar.txt ye yazar

for i=1:10fprintf(fid1,' deneme %i \n',i^2);

end% ekrana yazarfor i=1:10

fprintf(' deneme %15.4f \n',i^3);endfclose(fid);fclose(fid1);

deneme 512.0000 deneme 729.0000 deneme 1000.0000

>>

Ekran Çıktısı

clear all; clcfid= fopen('deneme_1.txt','wt');fid1= fopen('sonuclar.txt','wt');% fid yani deneme 1 e yazarfor i=1:10

fprintf(fid,' deneme %i \n',i);end

% fid1 yani sonuclar.txt ye yazar

Giriş-Çıkış Fonksiyonları

% fid1 yani sonuclar.txt ye yazarfor i=1:10

fprintf(fid1,' deneme %i \n',i^2);end% ekrana yazarfor i=1:10

fprintf(' deneme %15.4f \n',i^3);endfclose(fid);fclose(fid1);

clear all; clcfid= fopen('deneme_1.txt','wt');fid1= fopen('sonuclar.txt','wt');% fid yani deneme 1 e yazarfor i=1:10

fprintf(fid,' deneme %i \n',i);end

% fid1 yani sonuclar.txt ye yazar

Giriş-Çıkış Fonksiyonları

% fid1 yani sonuclar.txt ye yazarfor i=1:10

fprintf(fid1,' deneme %i \n',i^2);end% ekrana yazarfor i=1:10

fprintf(' deneme %15.4f \n',i^3);endfclose(fid);fclose(fid1);

Giriş-Çıkış Fonksiyonları

� ‘fopen’ fonksiyonunun diğer kullanımları

• fids=fopen(‘all’)buradafids=Bütün açık dosyaların dosya İd’sini vektör olarak gösterir

Giriş-Çıkış Fonksiyonları

• [dosyaismi, izin_kodu, format] = fopen(fid)

� ‘fclose’ fonksiyonu: Yapısı ile .txt dosyası kapatılır.Dosya kapatılmadığı sürece tüm her şey satır satırtxt dosyasına yazılır. Dosya fclose ile kapatılırsayazma işlemi yapılamaz. Aynı dosya tekrar açılırsa

Giriş-Çıkış Fonksiyonları

yazma işlemi yapılamaz. Aynı dosya tekrar açılırsaiçindekiler silinerek program tekrar üst satırdanitibaren yazmaya başlar.

2. Formatlı giriş-çıkış fonksiyonları: Çıkışın formatlı olarak yazdırıldığı komutlardır.

i. fprintf fonksiyonu

Giriş-Çıkış Fonksiyonları

i. ‘fprintf ‘ fonksiyonu: fprintf(fid, format, değişkenadı)

Örnek:x = 0:.1:1; y = [x; exp(x)];fid = fopen('exp.txt','w');fprintf(fid,'%6.2f %12.8f\n', y);fclose(fid);Şimdi ‘exp.txt’ isimli dosyayı açıp verilere bakalım

Giriş-Çıkış Fonksiyonları

Note: 1. Burada %6.2f . Her zaman % işareti ile başlar6 = eşitlikten sonra 6 boşluk bırakır2 = virgülden sonraki basamak sayısıf = sabit nokta (ondalık)

0.00 1.00000000 0.10 1.10517092 0.20 1.22140276 0.30 1.34985881 0.40 1.49182470 0.50 1.64872127 0.60 1.82211880 0.70 2.01375271 0.80 2.22554093 0.90 2.45960311 1.00 2.71828183

fprintf('Ekrana Basılacak Açıklama %X \n', deger);

Burada %X Kısmında Kullanabileceğimiz Seçenekler :%c : deger in tek bir karakter olduğunu gösterir.%s : deger in bir karakter dizisi (string) olduğunu gösterir.%d : deger in bir tamsayı olduğunu gösterir.

Giriş-Çıkış Fonksiyonları

%d : deger in bir tamsayı olduğunu gösterir. %f : deger in bir ondalıklı sayı olduğunu gösterir. (.6)%g : deger i mümkün olan en kompakt forma sokar. %e : deger in eksponansiyel olduğunu gösterir.

Diğer yandan : \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.

‘format’ ın genel yazım şekli;%a.be

veya %+a.be % + = always print with sign character (+ or -)veya %-a.be % - = left justified veya %0a.be % pad zeros in starting

Burada;

Giriş-Çıkış Fonksiyonları

Burada;a = alan genişilğib = virgülden sonraki basamak sayısıe = karakter(%c tekil karakter, %s karakter dizisi, %d işaretli ondalık sayı, %e eksponansiyel (sayıyı üstel şekilde gösterir), %f sabit nokta (ondalık)

Not:1. '%6.2f %12.8f\n‘ aralarında boşluk yoktur2. \n yeni satır anlamına gelir

X = 4;

Y = 56.23;

Z = 'Merhaba Dünya' ;

Giriş-Çıkış Fonksiyonları

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);

Yukarıdaki kullanımda %5.3f ifadesi float formatında üç haneli şekilde yazmaya yarar. İfadenin bir alt satıra geçmesi için \n kullanılır. Burada kullanılan 5 ise arttırıldıkça sayı sağa doğru kayar.

fprintf Kullanımına Örnekler

Ödev 7: Verileri klavyeden (keyboard) yazıpoluşturacağınız bir formülü hesaplayan,sonuçları da txt dosyası olarak yazdıran birMatlab programı hazırlayın.Matlab programı hazırlayın.

�Ödev, 21 Nisan 2014 tarihine kadar Arş. Gör. Ufuk KANDİL’e teslim edilmelidir.