30 Mart 2010 Salı

Python print,upper(),lower(),\,\n,””” ve Biçimleme Kodların Kullanımı

>>> cumle="Basarili olmanın en iyi yolu nedir diye sorulmuş.
Bilgisini paylaşmayı seven başarılı insanlarla çalışmaktır cevabını vermişler"
>>> cumle[4]
'r'
>>> cumle[5:9]
'ili '
>>> cumle2
'Ozguven abartilmadikca iyidir.\nYapi ozguvenle catisirsa yapi kazanir'
>>> print cumle2
Ozguven abartilmadikca iyidir.
Yapi ozguvenle catisirsa yapi kazanir
direk yazinca \n yani yeni satirla başlatmaz ikinci cümleyi.
Ama print ile yazınca newlinei işler.
>>> cumle3="""Bu birinci satir
...  Bu ikinci satir
...  Bunlar yazildigi gibi gorunurler."""
>>> cumle3
'Bu birinci satir\n Bu ikinci satir\n Bunlar yazildigi gibi gorunurler.'
>>> print cumle3
Bu birinci satir
 Bu ikinci satir
 Bunlar yazildigi gibi gorunurler.
3 tırnak işaretine nasıl yazarsanız aynısı görünür.
>>> cumle4="Bu satir cok uzun diyelim \
...  ters slash ile alt satira geçtim"
>>> print cumle4
Bu satir cok uzun diyelim  ters slash ile alt satira geçtim
\ ters slash cümle veya matematiksel işlem çok uzun olduğunda
 yazacağımız alt satırdan devam etmemiz
için kullanılır.
>>> a=17
>>> b=34
>>> print "Canakkale :",a,"Istanbul : ",b
Canakkale : 17 Istanbul :  34
şeklinde bir print ile birden fazla değeri yan yana yazabiliriz.
Eğer print sonuna ; koymazsak otomatik koyar ama 
Satir sonu işraetini istemiyorsanız , ile printi sonlandirabilirisiniz.
Bazen , ile sonlandırmak gerekecek.
	Biçimleme Kodları
%s	cümle
%d	tamsayı
%f	reel sayı
%c	karakter
>>> yas=21
>>> print "Ben su an %d yasindayim."%(yas)
Ben su an 21 yasindayim.
Eğer işlem içinde o anda değeri belli olmayan bir değişkeni bu şekilde
kullanabiliriz.Runtime esnasında değer belirlenip atanacak
	Büyük-Küçük Harf Çevrimi
>>> print "En sevdigim ıkinci film SO CLOSE dir".upper();
EN SEVDIGIM ıKINCI FILM SO CLOSE DIR
upper()-->Fonksiyonu verilen değeri büyük harfe çevirir.
>>> print "YAZILIM SEXE BENZER; UCRETSIZ OLANI DAHA IYIDIR(LINUS TORVALDS)".lower();
yazilim sexe benzer; ucretsiz olani daha iyidir(linus torvalds)
lower()-->Verilen değeri küçük  harfe çevirir.
capitalize()-->Cümlenin sadece ilk harfini büyütür.
islower()-->Değişken küçük harfle mi başlamış
isupper()-->Cümlede belirtilen harf büyük mü(Mesela cumle[0].isupper()) Cümle ilk harfle mi başlamış
>>> cumle3
'Bu birinci satir\n Bu ikinci satir\n Bunlar yazildigi gibi gorunurler.'
>>> cumle3[0].isupper()
True
eğer büyük ise true değer dönderir.

Python open(),write(),close(),readline(),read(),readlines(),writelines() Dosya Fonksiyonlarına Ait Işlemler

degisken=open(“path”,”açma modu”);
Eğer dosya varsa w veya wr ile açarsanız öncekini siler yeni bir tane oluşturur.
Eğer dosya yoksa yeni bir tane oluşturur.Açma modu r veya rw ile açarsanız 
bu durumda dosyanın önceden oluşturulmuş olması gerekir.Yani r ile açtığımda 
dosya yoksa hata verir.Yenisini oluşturmaz.r demek reader yani okuma
modunda açar.Veri yazmak içinse w modunda açmalısınız.yani rw modu hem okuma
hem de açma modunda açabiliriz.Eğer dosyada verileriniz varsa ve var olanın 
sonuna bir şeyler yazmak istiyorsanız a modu ile açmak lazım.
dosyaDegisnkeni=open(“./dosyaIsmi.txt”,”wr”);
dosyaDegiskeni=open(“./dosyaIsmi.txt”,”a”) dosyadaki verileri silmez ve var olan verilerin
sonuna ekleme yapar.Eğer dosya yoksa bu açma modu a olanda yeni dosya oluşturulur.
Genelde bu kullanılır tabi birlikte de kullanabiliriz.
Not:Bu şeklişde dosya yolunu belirtirseniz Prdus'ta 
/home/Ethem yani ev dizinin altında oluşturulur.Tüm python yani .py dosyalarınızda
bu dizindedir.ya da path belirtmeden direkt
>>> dosya=open("dosyaismi4.txt","a")
şeklinde de ev dizinin altında oluşturulur.Python default olarak ev dizni kullanır.
Dikkat eğer a ile açarsanız dosya yoksa dosyayı oluşturur.
Yani /home/Ethem pardus 2009 da Ev dizini klasörü masaüstünde var.Tıklarsanız direkt ev dizinine gider.
>>> dosyaYolu=open("./dosyaismi3.txt","a")
>>> str="Bu cumleyi dosyaya yaz";
>>> dosyaYolu.write(str)
a çma modu ile dosyayı açtık.Eğer dosya yoksa oluşturur.Varsa direkt dosyanın sonuna eklemeye başlar.Mesela biz str stringini dosyaya yazdırdık.
>>> dos=open("./isim.txt","a")
>>> dos.write("Merhaba")
BU değer dosyaya yazılmaz çünkü dosya oluşturulmamış.
>>> dos=open("./isim.txt","a")
yukarda dosya oluşturuldu ve burda da dosyayı açma moduyla açtık
>>> dos.write("Merhaba")
merhaba yı dopsyay yazdık.
Prdus ta console ekranına python yazıp direkt pythona giriyorsunuz.
Ama kod derleme felan console de olur.Pythonun içinden consoleye çıkmak içinse 
Ctrl+d ye basmanız lazım.Consoleyi temizlemek içinse clear kullanılır.
Note2: Doyaya yazma işlemi gerçekleşmesi için dosyayı kapatmanız gerekir.
Ya da başka bir uygulama kullanıp tekrar dosyaya gelmek.Ama pratiklik açısından
yaptığınız her güncellemeden sonra dosyayı kapatın.
>>> doY=open("./isim.txt","a");
>>> doY.write("Bu ilk cumledir");
>>> doY.write("\nBu ikinci cumledir");
>>> doY.close();
Dosya varsa sonuna ekle yoksa oluştur ve sonuna ekle.
\n ile ikinci cümlenin alt satıra yazmasını sağladık.
DosyaIsmi.close() de var olan dosyayı kapatır.
>>>k=0
>>> for k in dOku:
...  print k;
...
Bu ilk cumledir
Bu ikinci cumledir
isim.txt dosyamızı r moduyla açtık ve k isminde bir değişken tanımladık
for i in dosyaDegiskeni:
	print i;
ile dosyamızı okuduk bunun yerine
>>> satir=1;
>>> dosya=open("./isim.txt","r");
>>> while satir:
...  satir=dosya.readline();
...  print satir;
...
Bu ilk cumledir
Bu ikinci cumledir
şeklinde de atir atir okuma işelmini while ile gerçekleştirebiliriz.
>>> dosya=open("./isim.txt"); bu şekilde yani
“r” belirtilmezse default olarak okuma modunda dosyayı açar.
Başka bir pratik yol ise 
>>> print open("./isim.txt").read()
Bu ilk cumledir
Bu ikinci cumledir
yani dosyayı aç ve read() ile hepsini olkuyup ekrana bas.
read() metodu dosyayı hepsini okur ve bir değişkene aktarır.Tabi buırda print ile
direk ekrana bastık.
>>> open("./isim.txt","a").write("\nBu dosyay yazilan ucuncu satirdir.")
>>> print open("./isim.txt").read()
Bu ilk cumledir
Bu ikinci cumledir
Bu dosyay yazilan ucuncu satirdir.
A modu ile dosyayı açtık ve write() yani open().write() ile dosyaya 
direkt yazabiliriz.Bu tür pratikler değişken tanımlamaktan kurtatırır.
>>> isListesi=["Mehmet","Ethem","SULAN"]
>>> open("./isim.txt","a").writelines(isListesi)
listeyi dosyay yazdırdık.
>>> sozluk={"anahtar":"deger"}
>>> open("./isim.txt","a").writelines(sozluk)
>>> liste=open("./isim.txt","r").readlines()
dosyanın tamamını bir listeye okur.liste ismindeki değişken
şu an tüm dosya bilgilerini içinde barındırır.
>>> print open("./isim.txt").read(10)
Bu ilk cum
dosyadan 10 byte yani 10 karekterlik değeri okuyup ekrana yazdık
	Dosya Fonksiyonlari
write(a)--> acumlesini dosyaya yazar.
writelines(pythonDegiskeni)-->Herhangi bir python değişkenini yazdırabiliriz.
readline()-->Dosyadan bir satir okur.
readlines()-->Dosyanın içeriğini listeye okur.
read(a)-->a bytelık değeri okur.Ikinci bir okumada bulunduğu yerden başlar.Bu pratiklik kazandırır.
read()-->Dosyanın tamamını bir cümle değişkenine okur.
close()-->Dosyayı kapatır.

24 Mart 2010 Çarşamba

Matlab ile for-end, size() ve tan() Fonksiyonların Kullanımı

%www.ethemsulan.com
close all
clear all
x=-10:.1:10
a=34/26
b=-100:30:100
subplot(2,1,1)
hold on
for i=1:size(b,2)
    y(i,:)=x.*a+b(i)
    plot(x,y(i,:))
end
x=-5:.1:5
b=.2
slope=0:.6:2*pi
slope=tan(slope)
subplot(2,1,2)
%hold on kodların hepsi aynı figurede çizilmesi için kullanılır
hold on
clear y
for i=1:size(slope,2)
    y(i,:)=x.*tan(slope(i))+b
    plot(x,y(i,:))
end


m7

Matlab ile Parabol Çizme(y=x^3)

m6

%www.ethemsulan.com
fplot('x*x*x',[-10 10 -10 10])
grid on
hold on

Matlab da if-else ve abs() Fonksiyonun Kullanımı

%www.ethemsulan.com
clear all
close all
x=-5:0.1:5
y=4-abs(x-2)
y1=y-4
subplot(4,1,1)
hold on
plot(x,y)
plot(x,y1,'r')
y2=abs(x-2)
subplot(4,1,2)
plot(x,y2)
y3=abs(x)
subplot(4,1,3)
plot(x,y3)
y4=abs(x)
subplot(4,1,4)
plot(x,y4)
%%%%%%%%%%%%%%%%%%%
%% ABS OLMAYAN
clear all
close all
x_1=-5:0.1:2
y_1=4-(-(x_1-2))
x_2=2:0.1:5
y_2=4-(x_2-2)
x=[x_1 x_2]
y=[y_1 y_2]
subplot(4,1,1)
hold on
subplot(4,1,1)
plot(x,y)
y1=y-4
hold on 
plot(x,y1,'r')
y2=y1
for indis=1:size(y1,2)
    if (y1(indis)<0) y2(indis)=-y1(indis)
   % else y2(indis)=y1(indis)
   %end 
    end
end
subplot(4,1,2)
plot(x,y2)
x1=x-2
subplot(4,1,3)
plot(x1,y2)
x4=-x1
y4=y2
subplot(4,1,4)
plot(x4,y4)

m5

MAL(More Abstract Language) ile Dizi Elemanların Karelerini Alan Kod

		.data
dizi:	.word	0:20
		.text
	la	$3,dizi
	li	$4,76
	li	$5,0
for:	bgt	$5,$4,endfor
	add	$6,$3,$5
	lw	$7,($6)
	mult	$7,$7,$7
	sw	$7,($6)
	add	$5,$5,4
	b	for
endfor:	done

la $3,dizi –>Dizinin başlangıç adresini 3.registera atıyor.li $4,sabit—>sabiti registera atamak içindir.MAL da işlem yapabilmek için ilk önce değerleri bellekten okuyup bir registera atanmalı(load), işlemimizi bu register üzerinden gerçekleştirdikten sonra tekrar belleğe yazılmalı(store).lw ile bellekten değer okuruz ve sw ile belleğe değerleri yazarız.lw $7,0($6) –>şeklinde de yazılabilir.Sıfır yerine yanı katsayı 4 ün katı olamalı.Çünkü adresler 4 er artıyor.

SAL (Simple Abstract Language ) Komutları

Branch Instruction
b label-->labele git(dallan)
beg a,b,label--> a==b ise labele git
bne a,b,label--> a!=b ise labele git
blt a,b,label--> a<b ise labele git(branch little than)
bgt a,b,label--> a>b ise labele git(a b den büyük ise label yani belitrtilen hedefe git)
ble a,b,label--> a<=b ise labele git
bge a,b,label--> a>=b ise labele git(a b den büyük veya eşitse labele git)
bltz a,label--> a<0 ise labele git(a sıfır(0) dan küçükse label olarak isimlendirilen yere git)
bgtz a,label--> a>0 ise labele git
blez a,label--> a<=0 ise labele git
bgez a,label--> a>=0 ise labele git
beqz a,label--> a==0 ise labele git
bnez a,label-->a!=0 a<>0 yanı a sıfıra eşit değilse labele git
    Communicatin Instruction
get a --> scanf("%d",&a); girilen değeri oku ve a ya ata
put a -->printf(a); a değerini yaz. a tek ise(float, byte, word)
puts a -->printf(a); a değerini yaz.Burada a bir stringtir.a(string yanı asciiz) ise
Örneğin satir: .asciiz "Bir deger gir"
deger1: .word 0 -->deger1 değişkeni ve ilk değeri de sıfırdır.
yenisatir: .byte '\n' -->bu değişken put yenisatir yazılınca alt satıra geçilir.
add i,i,1 -->i=i+1
div a,b,c -->a=b/c b ile c yi böl ve sonucu a ya ata
move a,b -->a=b b değerini a ya at. a=20 gibi
mul a,b,c -->a=b*c b ile c yi çarp sonucu a ya ata.
sub a,b,c -->a=b-c b ile c nin farkını a ya ata
la  a,dizi -->dizinin başlangıç adresini a ya ata.Dizi ismi diznin başlangış adresidir.

rem a,b,c—> a=b%c –>b mod c nin sonucunu a ya ata

SAL(Simple Abstract Language) ile Palindrom Kontrolünü Yapan Kod

		.data
str1:		.asciiz "Bir string girin ve sonunda da \n girin"
str2:		.asciiz "Girilen string palindrom degil"
str3:		.asciiz	"Girilen string palindrom dur"
yeniSatir:	.byte	'\n'
stringimiz:	.byte	0:200
girilen:	.byte	0
uzunluk:	.word
adres:		.word
adres1:		.word
adres2:		.word
			.text
__strat:	puts 	str1
		la	adres,stringimiz
		get	girilen
		beq	girilen,yeniSatir,endwhile1
while1:		move	m[adres],girilen
		add	adres,adres,1
		get	girilen
		bne	girilen,yeniSatir,while1
endwhile1:	la	adres1,stringimiz
		move	adres2,adres
		sub	adres2,adres2,1
		bge	adres1,adres2,cikis
while2:		bne	m[adres1],m[adres2],palindromDegil
		sub	adres2,adres2,1
		blt	adres1,adres2,while2
		puts	str3
		b	cikis
palindromDegil:	puts	str2
cikis:		done

stringimiz: .byte 0:200 –>Boyutu 200 olan bir dizi belirtir ve sıfır ile doldurur. girilen: .byte 0 –>girilen isminde bir degisken ve degeri sıfırdır. la  adres,stringimiz –>stringin başlangıç adresini adres değişkenine atar.Dizinin ismi diznin başlangıç adresi olduğu için.while1 ile girilen değerleri diziye ekler. move m[adres],girilen –>girilen ismindeki değişkenin değerini dizinin o anki konumuna ekler.mesela m[3]=’A’ gibi.endwhile1 ile de diziye string girilmemişse sonlandırır. while2 ile de dizinin elemanları kontrol edilir.Polindrom tersten okunuşu da ynı olan strignlerdir.Mesela 19155191 veya asdsa veya EthemehtE while2 ile asdsa daki ilk a ile son ondan sonraki s ile sondan 2 deki s karşılaştırılıyor.Eğer eşit olmayan bir harf varsa palindromdegil e branch eder ve palindrom değil yazar.Eğer uyuşursa str3 ile girilen string palindromdur yazar.

23 Mart 2010 Salı

SAL (Simple Abstract Language) ile Girilen Rakamlardan Sayı Elde Eden Kod

			.data
rakam:		.byte
sayi:		.word
basamak:	         .word
str1:		.asciiz "Bir rakam girin"
			.text
		move	sayi,0
		puts	str1
		get	rakam
basla:		bgt	rakam,'9',bitir
		sub	basamak,rakam,'0'
		bltz	basamak, bitir
		mul	sayi,sayi,10
		add	sayi,sayi,basamak
		puts	str1
		get 	rakam
		b	basla
bitir:		put sayi
		done
Örneğin 1,9,1,8 rakamları girilince sırayla basamak değerine göre 1918 sayısını elde eder.

SAL (Simple Abstract Language ) ile 1 den N ye Kadar Olan sayıların Toplamını Bulan Kod

	                .data
s1:       .asciiz "ust limit gir n icin"	
toplam:   .word 0
i:        .word 0
n:        .word 0
satirBasi: .byte '\n'
			.text
__basla:  puts s1
	  get  n 	
          put satirBasi
   for:   blt n,i,bitir
          add toplam,toplam,i
          add i,i,1
          b for
 bitir:   put toplam
          done  

toplam: word 0—>int toplam=0 gibidir. str1 .asciiz “Deger gir”—>String s1=”Deger gir” printf(s1). blt –>a,b,gidilecekYer-->a<b ise gidilecekeYer yani bitir e git.get n –>scanf(“%d”,&n). puts s1—>String yazar.put toplam—>Herhangi bir değer(float,byte,word) yazar.add a,a,b-->a=a+b anlamındadır. b for –>for a dön.done—> programı sonlandırır. .data—>değişkenler tanımlanır. .text—>kod yazılır.

Matlab ile Yıldız Oluşturma

%www.ethemsulan.com
x=-5:0.001:5;
y=sqrt(25-x.^2);
fplot('2*x+6',[-10,10,-10,10]);
hold on
plot(x+4,y);
hold on
plot(-x+4,-y);



m4

Matlab’da fplot(),plot(),sqrt() ile Simetri Örneği



%www.ethemsulan.com
subplot(2,2,1)
hold on
x=-10:0.01:10;
y=x;
plot(3/5*x,y)
y=0*x;
plot(x,y)
y=x;
plot(0*x,y)
y=3/5*x;
plot(x,y)
y=x;
plot(-3/5*x,y)
y=3/5*x;
plot(-x,y)
subplot(2,2,2)
hold on
fplot('-x+2',[-10 16 -10 10])
ad=[-8 -6 -4 -6 -6 -8 -4 -6 -6;-6 -4 -6 -4 -2 -2 -2 -2 0]
ad=[ad;ones(1,size(ad,2))]
plot(ad(1,:),ad(2,:))
x1=-8:0.01:-4;
x2=-4:-0.01:-8;
y1=sqrt(4-abs(x1+6).^2)+2;
y2=-sqrt(4-abs(x1+6).^2)+2;
cem=[x1 x2;y1 y2];
plot(cem(1,:),cem(2,:))
cem=[cem;ones(1,size(cem,2))]
d=[1 7]'; d=[d;1]
t1=[1 0 -d(1,1);0 1 -d(2,1);0 0 1]
teta=((pi/2)-acot(-1))
t2=[cos(teta) -sin(teta) 0;sin(teta) cos(teta) 0;0 0 1]
t3=[-1 0 0;0 1 0;0 0 1]
t4=[cos(teta) sin(teta) 0;-sin(teta) cos(teta) 0;0 0 1]
t5=[1 0 d(1,1);0 1 d(2,1);0 0 1]
T=t5*t4*t3*t2*t1;
ncem=T*cem;
nad=T*ad;
plot(ncem(1,:),ncem(2,:)-12);plot(nad(1,:),nad(2,:)-12)

m3