İletileri Göster

Bu özellik size üyenin attığı tüm iletileri gösterme olanağı sağlayacaktır . Not sadece size izin verilen bölümlerdeki iletilerini görebilirsiniz


Mesajlar - asi kaptan

Sayfa: 1 ... 9 10 [11] 12 13 ... 21
151
Java / Türk Bayrağı Kod'ları...
« : Ağustos 04, 2009, 01:25:42 ÖÖ »
Türk Bayrağı Kodlar [Bunlar Java Script]

;

<img src="http://80.190.202.79/pic/g/gezerdin/tr2.gif" border="0"></a>


<img src="http://80.190.202.79/pic/g/gezerdin/turkmutlu.gif" border="0"></a>


<img src="http://80.190.202.79/pic/g/gezerdin/nemutlu.gif" border="0"></a>


<img src="http://80.190.202.79/pic/g/gezerdin/turks.gif" border="0"></a>


<img src="http://80.190.202.79/pic/g/gezerdin/turkhavai.gif" border="0"></a>


<img src="http://80.190.202.79/pic/g/gezerdin/hilal.gif" border="0"></a>


<img src="http://80.190.202.79/pic/g/gezerdin/tr1.gif" border="0"></a>


152
Delphi / Kronometre Yapımı
« : Ağustos 04, 2009, 01:16:48 ÖÖ »
// Forma bir timer, ,iki buton ve 3 tanede label ekleyin



var

zaman, zaman1, zaman2 : integer ;

durdur : boolean = false ;



procedure TMainForm.Button3Click(Sender: TObject);

begin

if durdur = false then

begin

Button3.Caption := 'Durdur' ;

timer1.Enabled := true ;

durdur := true ;

Button4.Enabled := false ;

end else

begin

Button3.Caption := 'Devam et' ;

Button4.Enabled := True ;

timer1.Enabled := true ;

durdur := false ;

end ;

end;



procedure TMainForm.Timer1Timer(Sender: TObject);

begin

if durdur then

begin

inc(zaman) ;

Label7.Caption := SifirEkle(IntToStr(zaman)) ;

if zaman = 100 then

begin

Label7.Caption := '00' ;

zaman := 00 ;

inc(zaman1) ;

Label8.Caption := SifirEkle(IntToStr(zaman1)) ;

if zaman1 = 60 then

begin

Label8.Caption := '00' ;

zaman1 := 00 ;

inc(zaman2) ;
Label9.Caption := SifirEkle(IntToStr(zaman2)) ;

if zaman2 = 60 then

begin

&nbsp; Label7.Caption := '00' ;

; Label8.Caption := '00' ;

Label9.Caption := '00' ;

&nbsp; zaman2 := 00 ;

end ;

end ;

end ;

end ;

end;



Function TMainForm.SifirEkle(Sayi : String) : String;

var

a:Integer;

begin

//" 1" yerine "01" olmasını sağlıyor.

result := sayi;

for a := 1 downto Length(Sayi) Do Result :='0'+Result;

end;



procedure TMainForm.Button4Click(Sender: TObject);

begin

Button3.Caption := 'Başla' ;

label7.Caption := '00';

label8.Caption := '00';

label9.Caption := '00';

zaman := 00 ;

zaman1 := 00 ;

zaman2 := 00 ;

end;

153
Delphi / Delphi de Interface Hazırlamak ve Kullanmak
« : Ağustos 04, 2009, 01:14:32 ÖÖ »
Delphi'de Interface Hazırlamak ve Kullanmak

Interface Hazırlamak ve Kullanmak

Değişik programcılar tarafından geliştirilen Class’lar farklı işlemleri yapıyor olsalar bile bazı ortak noktalara sahip olabilirler. Örneğin her Class’ın sıralama yapan bir metoda veya “Firma” adına sahip bir özelliğe sahip olması istenebilir. Bu gibi sorunların çözümü Interface hazırlamaktan geçiyor. Interface’lerde metot imzaları olmaktadır.

Bu konuda teknik bilgi vermek yerine hemen basit bir örnek yapacağım. Bu amaçla üzerinde çalıştığım projedeki ilk formu temsil eden Class’ın yer aldığı kod dosyasında aşağıdaki gibi “TMatematik” adında bir class ve “IArayuz” adında bir Interface hazırladım. Form1 temsil eden Class’ın Click() metodunda ise matematik class’ının örneğini hazırladım.


type
TForm1 = class(TForm)
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
Type
IArayuz = Interface(IUnknown)
End;
Type
TMatematik = class(TObject)
End;

Var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormClick(Sender: TObject);
Var
Nesne : TMatematik;
begin
Nesne := TMatematik.Create;
end;
end.

Nasıl ki class’lar “class” anahtar kelimesi ile başlıyorsa Interface’ler ise Interface anahtar kelimesi ile başlamaktadır. Genel alışkanlıkla Interface’lerin adlarının başına “I” harfi konulmaktadır. Nasıl ki Delphi’de bu sınıflar TObject sınıfından türetiliyorsa Interface’ler de IUnknown adlı Interface’den türetilmektedir. Interface anahtar kelimesine herhangi bir Interface adı yazılmazsa bunun IUnknown olduğu varsayılır.

Bu şartlarda TMatematik adını verdiğim Class’a bu arayüz uygulansa bile değişen bir şey olmaz. Çünkü IArayuz adını verdiğim Interface herhangi bir olay, metot veya özelliğe sahip değildir. Interface’lerin Class’lara nasıl uygulandığını aşağıda görebilirsiniz.

type
IArayuz = Interface(IUnknown)
End;

type
TMatematik = class(TInterfacedObject, IArayuz)
End;
Şimdi bu Interface’in bir metoda sahip olmasını sahip olmasını sağlayacağım. “Topla” adını verdiğim metot integer tipinde 2 parametreye sahip olacak ve geriye yine integer bilgi gön¬derecektir. Interface’lerde işaret edilen metotların yalnızca imzaları bulunur, metodun ne yaptığı veya işlevi hakkında bilgi olmaz.


type
IArayuz = Interface(IUnknown)
Function Topla(X, Y : Integer): Integer;
End;

Bu şartlarda proje çalıştırılırsa hata meydana gelir. Çünkü bu arayüzü uygulayan “TMatematik” adlı Class’ın “Topla” adında ve integer tipinde 2 parametreye sahip bir metodu olması gerekir. Bu düşünce ile “TMatematik” Class’ını aşağıdaki gibi düzenledim.

type
TMatematik = class(TInterfacedObject, IArayuz)
Function Topla(Sayi1, Sayi2 : Integer): Integer;
End;
implementation
function TMatematik.Topla(Sayi1, Sayi2: Integer): Integer;
begin
Topla := Sayi1 + Sayi2;
end;


Bu şartlarda uygulama çalıştırılırsa hata meydana gelmez. Çünkü “TMatematik” Class’ı uyguladığı Interface’in gereklerini yerine getirmiş oldu. Bu Class’ta Topla() metodunun parametre olarak aldığı bilgileri toplayıp geriye göndermesini sağladım. Başka bir sınıfta ise metot dahilinde yapılan işlem farklı olabilir. Tekrar etmek gerekirse Interface’ler yalnızca metotların adları, geriye gönderdikleri bilginin türü ve parametrelerinin sayısı ve tipiyle ilgilenirler. Bunu göstermek bu arayüzü uygulayan ikinci bir Class hazırladım. Bu Class’ta Topla() metoduna farklı bir işlem yaptırdım.

type
TDeneme = class(TInterfacedObject, IArayuz)
Function Topla(Sayi1, Sayi2 : Integer): Integer;
End;
implementation
function TMatematik.Topla(Sayi1, Sayi2: Integer): Integer;
begin
Topla := Sayi1 + Sayi2;
end;
function TDeneme.Topla(Sayi1, Sayi2: Integer): Integer;
Var
X, Y : Integer;
begin
X := Sayi1 * Sayi1;
Y := Sayi2 * Sayi2;
Topla := X + Y;
end;

Bu metot farklı bir işlem yapsa bile Interface’in gereklerini yerine getirmektedir. Yukarıda Interface hazırlarken IUnknown adlı standart Interface’i mirasçı olarak seçtim. Hazırlamak istediğiniz Interface mevcut bir Interface miras olarak alabilir. Aşağıda verilen örnek Interface uygulayan Class’ların 3 metoda sahip olmaları gerekir.

type
IIslemler = Interface(IUnknown)
Function Bolme(X, Y : Integer): Integer;
Function Carpma(X, Y : Integer): Integer;
End;
type
IArayuz = Interface(IIslemler)
Function Topla(X, Y : Integer): Integer;
End;
type
TMatematik = class(TInterfacedObject, IArayuz)
Function Topla(Sayi1, Sayi2 : Integer): Integer;
Function Bolme(Sayi1, Sayi2 : Integer): Integer;
Function Carpma(Sayi1, Sayi2 : Integer): Integer;
End;

154
//Formumuza 3 Edit, 1 openDialod, 1 saveDialog, 1 Button, 1 NMStrm, 1 NMStrmServ, 1 İmage Ekleyin ve asagıdakı kodları yazın



procedure TForm1.FormCreate(Sender: TObject);

begin

Edit1.text:='127.0.0.1';

edit2.text:='6711';

edit3.text:='Adınızı Giriniz';

NMstrm1.timeout:=90000;

NMStrmServ1.Timeout:=90000;

end;



procedure TForm1.Edit1Change(Sender: TObject);

begin

NMStrm1.host:=edit1.text;

end;



procedure TForm1.Edit2Change(Sender: TObject);

begin

NMstrm1.port:=strtoint(edit2.text);

nmstrmserv1.port:=strtoint(edit2.text);

end;



procedure TForm1.Edit3Change(Sender: TObject);

begin

nmstrm1.fromname:=edit3.text;

end;



procedure TForm1.Button1Click(Sender: TObject);

var

Fstrm: TFileStream;

begin

if opendialog1.execute then

begin

FStrm:=TFilestream.create(Opendialog1.Filename, fmopenread);

try

NMStrm1.postit(Fstrm);

finally

FStrm.free;

end;

end;

end;



procedure TForm1.NMStrm1PacketSent(Sender: TObject);

begin

Caption:=inttostr(nmstrm1.bytessent)+'/'+ inttostr(nmstrm1.bytestotal);

end;



procedure TForm1.NMStrm1MessageSent(Sender: TObject);

begin

Caption:='Dosya Gönderildi';



end;



procedure TForm1.NMStrmServ1MSG(Sender: TComponent; const sFrom: String;

strm: TStream);

var

fstrm:tfilestream;

begin

Caption:=sfrom+'dan'+inttostr(strm.size)+'boyutund a dosya geldi';

if savedialog1.execute then

begin

if fileexists(savedialog1.filename) then

deletefile(savedialog1.filename);

fstrm:=tfilestream.create(savedialog1.filename, fmcreate);

try

fstrm.copyfrom(strm, strm.size);

finally

end;

if lowercase(Extractfileext(savedialog1.filename))='. bmp' then

image1.picture.loadfromfile(savedialog1.filename);

end;

end;



end.

155
Delphi / Bilgisayari istediginiz zaman kapatmak (delphi)
« : Ağustos 04, 2009, 01:07:27 ÖÖ »
interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls;



type

TForm1 = class(TForm)

Button1: TButton;

Label1: TLabel;

Edit1: TEdit;

Timer1: TTimer;

procedure Timer1Timer(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form1: TForm1;

saat,dakika,saniye,milisaniye:word;

s,s1,s2,d1,d2:string;

implementation



{$R *.DFM}



procedure TForm1.Timer1Timer(Sender: TObject);

begin

DecodeTime(Time,saat,dakika,saniye,milisaniye);

if s1=inttostr(saat) then

if s2=inttostr(dakika) then

begin

exitwindowsex(EWX_SHUTDOWN,0);

end;

end;



procedure TForm1.FormCreate(Sender: TObject);

begin

edit1.Text:=timetostr(Time);

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

s:=edit1.text;

s1:=Copy(s,1,2);

s2:=copy(s,4,2);

Timer1.Enabled:=true;

Application.Minimize;

end;



end.

156
Delphi / Delphi Görsel Eğitim
« : Ağustos 04, 2009, 01:03:40 ÖÖ »
Delphi Görsel Eğitim


Delphi ye Giriş, Form Özellikleri, Form Olayları ( Yordamları ), EditKontrolünün Kullanımı, Button Kontrolü, Label Kontrolü, Memo Kontrolü,MainMenu Kontrolü, PopupMenu Kontrolü, Checkbox ve RadiobuttonKontrolleri, Listbox ve Combobox Kullanımı, ScrollBox Kullanımı, Mp3Player Maker, Web Browser Yapımı, Görüntü Yakalama Programı,Sürücülerin isimlerini listeleme, Yazı Konuşturma, Form BoyutunuSabitlestirmek, For Döngüsü, While Do Döngüsü

http://rapidshare.com/files/99935377...__287_itim.rar

aLıntıdır.....

157
Pascal / Pascalda Üs Alma,Üsleri Toplama
« : Ağustos 04, 2009, 12:59:20 ÖÖ »
a4 +a3 + a2 + a1 +1 sonucunu bulan program
program us_alma;
uses crt;
var
i,us,sayi,carpim,toplam:integer;
begin
clrscr;
Writeln(' sayi gireceksiniz');readln(sayi);
Writeln('kuvvet giriniz');readln(us);
carpim:=1;
toplam:=1;
for i:=1 to us do
begin
carpim:=carpim*sayi;
toplam:=toplam+carpim;
end;
writeln('carpim : ',carpim,' toplam : ',toplam);
readln;
end.

158
Pascal / Pascal'da string değişken tipi
« : Ağustos 04, 2009, 12:56:22 ÖÖ »
String Degişken Tipi

Programci diliyle bu tip degiskenler alfasayisal degerler alabilir. Halk dilinde ise bunlara yazi ya da sayisal olmayan veri diyebiliriz. Yani sizin yasiniz sayisal bir deger ise isminiz alfasayisal bir degerdir. Alfasayisal ifadeler iki tirnak içerisinde gösterilir. Yani isminizi 'Halil Ibrahim Kalkan' seklinde gösterirsiniz. Ancak sayi degil dekik diye içerisinde sayi geçmeyecek diye birsey yoktur. Yeni 'Beim yasim 17.' cümlesi ve '392' sayisi da tirnak içerisinde yazildigindan string tiplerdir ve matematiksel islemlerde kullanilamazlar. Ya da mesela telefon numaraniz bir sayi oldugu halde bunu tutmak için sayisal degisken kullanilmaz, onun yerine string degisken kullanilir. Çünkü telefon numaranizin üstünde çikartma, kök alma gibi matematiksel islem yapmayacaksiniz. Ama tabii ki bu size kalmis. Isterseniz telefon numarasi için longint degisken tanimlayabilirsiniz.
String degiskenlerin içerisinde maksimum 255 karekterlik bilgi bulunabilir. Bu karekter her türlü harf, sayi, isaret, bosluk... olabilir. Mesela 'a=2x5+3/62' diye bir string ifade yazilabilir. Anlayacaginiz tirnak içerisinde ne varsa sabittir. Örnek bir program yazalim:

Program String_tip_ornegi;Uses crt;Varisim: string;yas: byte;begin clrscr;write('Adinizi yaziniz: ');readln(isim);write('Yasinizi yaziniz: ');readln(yas);clrscr;writeln('Merhaba ',isim);writeln('Sizin yasiniz ',yas);readln;end.
Bu programi pascal'da yazip çalistirirsaniz sizin isminizi ve yasinizi alip ekrana geri yazar. Simdi dikkat ettiyseniz 'Adinizi yaziniz: ' ifadesi de aslinda string ifadedir. Bu ifade degisken degil, sabit oldugundan iki apostrof isareti arasina yazilir. Peki bu ifadeleri de bir degiskenin degeri yapalim ve öyle yazdiralim:

Program String_tip_ornegi;Uses crt;Varisim, ad_iste, yas_iste, yas_yaz, ad_yaz: string;yas: byte;begin clrscr;ad_iste:='Adinizi yaziniz: ';yas_iste:='Yassinizi yaziniz: ';write(ad_iste);readln(isim);write(yas_iste);read ln(yas);clrscr;yas_yaz:='Sizin yasiniz ';ad_yaz:='Merhaba ';writeln(ad_yaz,isim);writeln(yas_yaz,yas);readln ;end.
Bu programi yazip çalistirinca bir önceki program ile tamamen ayni isi yaptigini göreceksiniz. Ama burada gereksiz yere fazla degiken kullanip fazla islem yaptik. Ama amacimiz ögrenmek. Gördügünüz gibi string tipdeki bir degiskene veri aktarimi sayisal tipli bir degiskene veri aktarimi ile ayni ama burada verileri iki apostrof isareti arasina yaziyoruz ( '.....' gibi ). Bu arada eger programlari kopyala/yapistir yolu ile pascal'a aktariyorsaniz (ki bunu yapmasaniz daha iyi ögrenirsiniz) Türkçe karakterlerde sorunlar vuku bulmus olabilir(!). Bu windows ile ms-dos'un ascii karakterlerinin farkli olmasindan kaynaklaniyor ve telafisi zor. En iyisi elle yazmak. Bu arada ilerde ascii'nin de ne olduguna deginecegimiz için "bu ascii de ne demek" diye düsünmenize gerek yok.
Bir string ifade aksi belirtilmedikçe maksimum 255 karakter uzunlugunda olur ve hafizada 256 byte alan isgal eder. Aksi belirtilmedikçe diyince hemen aksini belirtip daha uzun olabileceginiz sanmayin. Tersine daha az olabilir. Peki nasil aksini belirtecegiz.

Varisim: string[40];
seklinde. Artik isim adli string degiskenimiz en fazla 40 karakter uzunlugunda olabilir ve 41 byte yer kaplar (Neden mi 41 byte? Unutmazsak sonra anlatiriz onu da!). Bir insanin ismi de 40 harften fazla olamayacagindan (ya da olsa bile kisa yazsin sayin kullanicilarimiz!) gereksiz yere 256 bytelik yer isgal etmeyip 215 byte kar edelim. Artik bu degskene 40 harften daha uzun bilgi girilmek istenirse sadece ilk 40 karakterini alir ve gerisini yok sayar.
String tipin çok özelligi var. Bunlari ilerdeki konularda görecegiz. Ancak simdi String tiplerde çok isinize yarayacak (ilk etapta gereksiz gözükebilir ama döngüleri ve karar deyimlerini gördükten sonra daha iyi anlayacaksiniz) bir özellige gözatalim. Bir string degiskenin x. karakterini elde etmek için string_ifade
  • seklinde kullanilir. Yani isim adli bir string degiskenimizi isim='www.kalkan.cjb.net' olarak tanimlayiip sonra da write(isim[5]); komutunu verirsek ekrana sadece k harfi yazilir. Bununla ilgili çok örnek yapacagimizdan simdilik üzerinde durmayalim ve örnek yapma isini size birakalim.


159
Pascal / Pascal'da değişkenler
« : Ağustos 04, 2009, 12:52:10 ÖÖ »
Değişkenler

Her programlama dilinde degiskenler vardir. Degiskenler programlamada hayati önem tasir. Degiskeni program içinde bir degeri ya da bilgiyi tutan bir birim olarak ifade edebiliriz. Bu bölümde degiskenleri tüm tipleriyle çok ayrintili ve bol örnekli anlatacagim. Ayrica sabitler, tipler ve labelleri de ögrenecegiz. Adindan da anlasilabilecegi gibi degiskenlerin degeri program içinde istenildigi kadar degistirilebilir. Bir degiskenin bir adi, tipi ve degeri vardir. Degisken adi olarak istediginiz ismi verebilirsiniz. Degiskenin tipini ise programinizin basinda var deyimi ile tanimlamak zorundasiniz.
Var Deyimi:

Programda kullanacagimiz bütün degiskenleri programin basinda tanimlamak ve cinsini (sayi mi, yazi mi.. gibi) belirtmek zorundayiz. Her programlama dilinde buna gerek olmayabilir ama Pascal'da bu is mecburidir. Degiskenlerimizi Var deyiminde sonra tanimlamamiz gerekir. Var deyimi bir komut olmadigindan sonuna noktali virgül konulmaz. Genel kullanim sekli:

Vardegisken: degisken_tipi;
seklindedir ve Pascal'da program yapisi dersinde gördügümüz yerde kullanilir. Degisken tiplerini görürken bu deyimin kullanilisini görecegiz. Merak edenler için söyleyim: Var kelimesi Ingilizce Variable kelimesinin kisaltilmisidir ve degisken ya da kisaltma anlamindadir.
Değişken Tipleri

Pascal'da her degiskenin bir tipi olmak zorundadir. Bir degisken programin basinda hangi tipte tanimlandiysa programin sonuna kadar o tipte bilgi saklayabilir ve o degiskene o tipten baska bir tipte veri atanamaz, eklenemez. Yani mesela sayi tipinde bir degiskene "kalkan" degeri atanamaz. Bu durumda program hiç çalismaz ve Pascal editörü hata verip o yanlisligin yapildigi degiskene imleci getirip hata uyarisi yapar. Simdi Pascal'da kullanabilecegimiz degisken tiplerine bakalim.
Sayisal Degiskenler:

Adindan da anlasilacagi gibi degeri bir sayi olabilen degiskenlerdir. Bu degiskenler bir sayiyi tutarlar. Ayrica matematiksel islemlerde de kullanilabilirler. Birkaç çesidi vardir. Öncelikle sayisa degiskenleri ikiye ayirmak gerekir. Birncisi tasayilar ve ikincisi gerçek (ondalikli) sayilar. Tam sayilarin ve ve gerçek sayilarin da kendi aralarinda siniflari vardir. Ilk önce tamsayi tiplerinden baslayalim. Tamsayi tiplerini hemen bir tabloda verelim:
Tip adiSinirlariKapladigi alanShortint-128..127 1 byteByte0..2551 byteInteger -32768..327672 byteWord 0..655352 byteLongint-2147483648..21474836474 byte
Tabloda tip adi dedigimiz sey var deyimiyle kullanacagimiz ad, sinirlari o sayisal degikenin alabilecegi degerlerin siniridir. Yani byte tipinde bir degiskenin degeri 256 olamaz. Buna göre bizim isimize hangisi yariyorsa onu kullanabiliriz. Kapladigi alan ise bu degisken için hafizada kullanilan alanin byte cinsinden degeridir. Programlarimizin hafizada (hard-disk'te degil) az yer kaplamasi daha iyidir. Bunun için gereksiz yere longint degiskenini kullanmamamiz iyi olur. Çünkü pascalda en fazla 64 kilobyte'lik (yaklasik 64000 byte) degisken kullanabiliriz. Hemen bunlarla ilgili birkaç örnek program yapalim.
Örnek 1: Bu program 2 sayiyi toplar ve sonucu ekrana yazar. Simdilik ekrana nasil yazdigimizin üzerinde durmayalim ama zaten sizin de anlayacaginizi düsünüyorum.

Toplama_Denemesi;Uses Crt;sayi1,sayi2: integer;toplam: integer; clrscr;sayi1:=19;sayi2:=81;toplam:=sayi1+sayi2;wri te('Bu sayilarin toplami=',toplam);readln;
Bu program ekrana 100 yazar. Çünkü toplam isimli degiskenimizin son degeri 100'dür. Burada readln komutu enter'a basilmasini bekler. Bunu daha sonra görecegiz. Write ise ekrana birseyler yazar. Bunu da ayrintili olarak inceleyecegiz. Clrscr ise ekrani temizler. Simdilik görmemiz gereken atama islemleri, yani bir degiskenin degerini degistirme ve degiskenleri tanimlama. Gördügünüz gibi 3 tane degiskenimiz var ve bunlari iki satirda tanimliyoruz. Hepsinin tipi de ayni oldugu için üç degiskenimizi birden

Varsayi1, sayi2, toplam: integer;
seklinde topluca ya da üçünü de ayri ayri tanimlayabiliriz. Bu sizin keyfinize kalmis.
Örnek 2:

Bu program da kullanicidan (yani sizden) aldigi iki sayiyi çarpip ekrana yazar:

Program Carpma_Denemesi;Uses Crt;Vara, b, c: integer;Begin clrscr;write('Birinci sayiyi giriniz:');readln(a);write('Ikinci sayiyi giriniz:');readln(b);c:=a*b;writeln('Sonuç=',c);re adln;End.
Gördügünüz gibi ilk önce a ve b degiskenlerinin degeri kullanicidan aliniyor, sonra c degiskeninin degeri a ile b'nin çarpimi olacak sekilde hesaplanip ekrana yazdiriliyor. Burada readln(degisken_adi); komutunu daha sonra anlatacagiz. Simdilik kullanicidan bir bilgi almak amaciyla kullanildigini bilseniz yeter. Pascal'da ayni satira birden çok komut yazilabilecegini ve büyük-küçük harf ayrimi olmadigini tekrar hatirlatiyim.
Örnek 3:

Son olarak sizin kaç yasinda oldugunuzu bulan basit bir program yapalim:

Program Yas_Bul;Uses Crt;Varsimdiki_yil, dogum_yili: integer;yas: byte;Begin clrscr;write('Kaç yilinda dogdunuz: ');readln(dogum_yili);write('Simdi hangi yildayiz: ');readln(simdiki_yil);yas := simdiki_yil - dogum_yili;writeln('Siz su anda ',yas,' yasindasiniz!');Readln;End.
Gördügünüz gibi simdiki_yil ve dogum_yili degiskenlerini integer yaparken yas degiskenini byte yaptik. Çünkü 255 yasindan daha büyük insan olamaz. Bu durumda bosyere onu da integer yapip hafizada yer isgal etmeyelim. Iyi bir programci olmak için bunlara dikkat etmeliyiz. Yine iyi bir programci olarak degiken isimlerimizi anlamli ve mümkün oldugunca kisa ve o degiskenin içerigi ile alakali yapalim. Program içinde hata yapmamak için bunlar gerekli. Çünkü degiskenlerimize d1, d2, d3, d4... gibi isimler verirsek sonra hangisinin içerigi ne onu karistirabiliriz. Degisken isimlerinin uzunlugu yanilmiyorsam 50 karekter kadar olabilir ve bosluk içeremez, sayi ile baslayamaz. Bu arada crt uniti ise clrscr komutunu kullanmak için gereklidir ve Pascal'in hazir unit'lerindendir

160
Pascal / Alan Hesaplama Programı (Readln yapısı)
« : Ağustos 04, 2009, 12:49:07 ÖÖ »
uses crt;

Const (* Sabitleri Tanımlıyoruz *)

Pi:=3 (*Ben 3 verdim sen istersen 3.14 falan verebilirsin *)

Var
a:integer; (* İnteger tipini kullandım uygun olanı bu *)

begin
clrscr; (* Bunu yazmasanızda olur ben ekranı temizlemek için yazıyorum alışkanlık oldu *)

Writeln(' Yarı Çapı Giriniz: ') (*Kullanıcı ile diyalog kuruyoruz *)
Readln(a);

Writeln ('Sonuc : ',pi*a*a);
Readln;
End.

Arkadaşlar bu bu kadar tüm olay matematiksel formülde eğer matematiksel formülü biliyorsak işte bunu kodlara döküyoruz ve güzelde bi program çıkıyor ortaya

kolay gelsin

161
Pascal / Pascal'da gerçek sayılar
« : Ağustos 04, 2009, 12:46:53 ÖÖ »
Gerçek Sayı Tipleri

Tabii bunlara gerçek diyorsak digerleri sahte degil. Gerçekten kastimiz virgüllü ya da ondalikli ya da kesirli demektir. Bu tip sayilarin da tipki tamsayilarda oldugu gibi çesitleri var. Bu çesitliligin temel sebebi gereksiz hafiza kullanmaya engel olmaktir. Gerçek sayi tipleri sunlardir:
Tip adiSinirlariKapladigi alanReal2.9 x 10^-39..1.7 x 10^38 6 byteSingle1.5 x 10^-45..3.4 x 10^384 byteDouble 5.0 x 10^-324..1.7 x 10^3088 byteExtended 3.4 x 10^-4932..1.1 x 10^493210 byteComp-2^63+1..2^63-18 byte
Burada Real'den baska tiplerin de oldugunu bilmeniz için hepsini gösterdim ama gerçekte sadece Real tipini kullanmaniz yeterlidir. Html'de bir sayinin üstünü göstermek olmadigindan tablo biraz kötü gözüktü. Ben birisini yazi ile yazarsam siz digerlerini anlarsiniz. Real'in sinirlari "2.9 çarpi 10 üzeri -39'dan 1.7 çarpi 10 üzeri 38'e kadardir". Real tipinin disindaki tipleri kullanabilmeniz için prograinizin en basina {$N+} yazmaniz gerekebilir. Bunu bilmeniz gerekmiyor, real size yeter. Simdi biraz da bu tip gerçek degiskenlerle örnek yapalim.
Örnek 1:

Bu program girilen sayinin karekökünü bulur. sqrt(); komutunu sonra anlatiriz. Simdilik bu komutun bir sayinin karekökünü bulmaya yaradigini bilmeniz yeter.

Program Karekok;Uses Crt;Varsayi:integer;karekoku:real;Begin clrscr;write('Bir tamsayi giriniz: ');readln(sayi);karekoku:=sqrt(sayi);write('Bu sayinin karekökü: ',karekoku:16:5);readln;end.
Burda kullanilan write komutunun özel bir sekli. Sayiyi düzgün yazdirmayi sagliyor. Daha sonra ayrintili görecegiz. Bunlari kaldirip direk olarak

write('bu sayinin karekökü:',karekoku);
seklinde yazip deneyin. Sayiyi bilimsel olarak sonuna E falan koyarak yazar.
Örnek 2:

Bu program kullanicidan 3 dersinin notunu ister ve ortalamasini bulup ekrana yazar.

Program ortalama_bul;Uses crt;Varnot1, not2, not3: integer;ort: real;Begin Clrscr;Write('Matematik Notunuz (0..100 arasi): ');readln(not1);Write('Fizik Notunuz (0..100 arasi): ');readln(not2);Write('Kimya Notunuz (0..100 arasi): ');readln(not3);ort:=(not1 + not2 + not3)/3;write('Ortalamaniz: ',ort:5:2);Readln;End.
Burada dikkat etmeniz gereken birsey daha var. ortalamayi hesaplarken yaptigimiz isleme dikkat edin. Tipki matematik dersinde gördügümüz gibi parantezlerin islem önceligi var. Sayilarla yapabileceginiz aritmetik islemleri ilerde görecegiz.
Buraya kadar yapilan ve bundan sonra yapilacak bütün örnekleri kendi elinizle Pascal editöründe yazmanizi tavsiye ederim. Yoksa ögrenemezsiniz. Ama eger kodlari direk olarak Pascal editörüne aktarmak istiyorsaniz kodu isaretleyip sag tiklayin ve kopyala yapin. Daha sonra Not defterini (notepad) açip oraya yapistirin kodlari ve kaydedin. ama kaydederken dosya isminin sonuna .pas yazin. Mesela deneme.pas gibi. Kaydettikten sonra daha önce anlattigimiz sekilde üstüne çift tiklayarak açabilirsiniz. Sonra istediginiz gibi düzeltebilir veya çalistirabilirsiniz.

162
Pascal / Pascal'da char değişken tipi
« : Ağustos 04, 2009, 12:45:05 ÖÖ »
Char Degişken Tipi

String degiskenler 255 karakterlik veri alabiliyordu. Char ise tahmin edeceginiz gibi daha fazla karakter almiyor! Char tipinde bir degisken yanlizca bir adet karakter alabilir ve bir byte yer kaplar hafizada. Yine string tipindeki gibi deger atamasinda iki apostrof isareti arasina en fazla 1 karakter olabilecek sekilde yazilir. Örnek bir program yapalim daha iyi anlariz.

Program Char_Tipinde_alistirma;Uses crt;varc: char;isim: string;a: byte;beginclrscr;write('Yine adinizi girin bakalim....: ');readln(isim);write('Simdi en fazla ',length(isim),' olacak sekilde sifindan büyük bir sayi giriniz: '); readln(a);c:=isim[a];writeln('Sizin isminizin ',a,'. harfi "',c,'"');readln;end.
Bu örnek simdiye kadar yaptiklarimizin en karisigi gibi gözükebilir ama biraz dikkat ederseniz anlayacaginiz kesin. clrscr; komutuna kadar olan yeri biliyorsunuz. Ondan sonra isim adli degiskene ekrandan (daha sonra ayrintili olarak anlatacagimiz sekilde) bilgi girilmesi isteniyor. Ondan sonra yazilan write ifadesinde bilmedigimiz birsey var. Length fonksyonu bir string tipli ifadenin kaç karakter uzunlugunda oldugunu verir. Bunu da daha sonra anlatacagiz. Ondan sonra c:=isim[a]; ifadesinde c adli char degiskene isim degikeninin a. karakterini atiyoruz. Mesela isminiz "Osman" ise ve a degerine de 3 girdiyseniz c:= ifadesinin karsisindaki deger 'm' olur. Yani c degiskeninin degerine 'm' harfini (karakterini) atamis oluruz. Programi birkaç defa çalistirarak daha iyi anlayabilirsiniz.
Tabii bu sekilde bizim pek isimize yaramayabilir ama özellikle bir char tipindeki degiskeni readkey komutuyla kullanilarak faydalanabiliriz. Bunlara ilerde deginecegiz.
Bunlarin disinda su anda hemen kullanamayacak olsak da diger tiplere de kisaca deginelim.
Boolean Tipli degiskenler:

Degeri ya TRUE (dogru) ya da FALSE (yanlis) olabilen degiskenlerdir. Mantiksal karsilastirmalarda kullanilabilir. Hafizada 1 byte alan kaplar.
Bundan sonraki tipdeki olan dizi ve record tipleri için sonraki derslerde özel bir bölüm açip anlatacagi çünkü kullanim alanlari çok genis.
Dizi (Array) tipli degiskenler:

Dizi degisken genelde benzer bilgileri bulunduran degiskenlerdir. Örnek verirsek daha iyi anlasilir. Önceki programlarimizin birisinde hatirlarsaniz bir ögrencinin üç notunun ortalamasini bulmustuk. Peki 1 degil de 100 ögrenci varsa ne olacak. Her birisi için üç not ve bir ortalama olmak üzere 4 degisken tanimlarsak toplam 400 degisken tanimlamamiz lazim. Bu hem çok uzun zaman alir, hem de degisken isimlerini birbirine karistirmamiz olasidir. Bunun yerine 100 ögrencinin 3'er notunu ve ortalamasini sadece 2 degisken kullanarak kolayca tutabiliriz. Bunun için degisken tanimlarimiz

Varnotlar: Array[1..100,1..3] of byte;ortalama: Array[1..100] of real;
seklinde olmalidir. Simdilik bunlari nasil kullanacagimiz fazla deginmeden geçelim çünkü diziler diye ayri bir bölümde hepsini anlatacagim.
Kayit (Record) tipli degiskenler:

Simdiye kadar bir ögrencinin adi, notlari ve ortalamasi için ayri degiskenler kullandik. Peki bunlarin hepsini bir ana degiskenin alt degiskenleri olarak tutsak daha kolay ve anlasilir olmaz mi? Özellikle bu tip degiskenler dosyalama konusunda çok isimize yarayacak. Genel olarak tanimlamasi su sekildedir:

Typekayit_tipi=Recorddegiskenler...end;
Varkayit_adi = kayit_tipi;
Gördügünüz gibi bu tip bir degiskeni tanimlamak için type etiketini kullaniyoruz ve yeni bir tip olusturuyoruz ilk önce. Sonra bir degiskeni tipi bu olacak sekilde tanimliyoruz. Hemen örnek bir program yazalim. Bunu kendi ellerinizle yazmalisiniz (ben de hep öyle yapiyorum):

Program Filiz;uses crt;typeogrenci_tipi=Recordisim: string[40];not1: byte;not2: byte;not3: byte;orta: real;end;Varogrenci: ogrenci_tipi;Begin clrscr;write('Isminiz:');readln(ogrenci.isim);writ e('1. Sinavin sonucu:');readln(ogrenci.not1);write('2. Sinavin sonucu:');readln(ogrenci.not2);write('3. Sinavin sonucu:');readln(ogrenci.not3);ogrenci.orta:=(ogre nci.not1+ogrenci.not2+ogrenci.not3)/3;write('Ortalamaniz: ');write(ogrenci.orta);readln;end.
Gördügünüz gibi kayit tipindeki bir degiskenin alt degiskenini nokta ile ayirarak kayit_degiskeni.alt_degisken seklinde yaziyoruz. Isterseniz with deyimini kullanarak alt degisken isimlerini direk de kullanabilirsiniz:

yastik;uses crt;typeogrenci_tipi=Recordisim: string[40];not1: byte;not2: byte;not3: byte;orta: real;end;Varogrenci: ogrenci_tipi;Begin clrscr;with ogrenci do beginwrite('Isminiz:');readln(isim);write('1. Sinavin sonucu:');readln(not1);write('2. Sinavin sonucu:');readln(not2);write('3. Sinavin sonucu:');readln(not3);orta:=(not1+not2+not3)/3;write('Ortalamaniz: ');write(orta:5:2);end;readln;end.
Bu iki program de birbirinin aynisi islemleri yapar. With Türkçe'de "ile, beraber" demektir. Simdilik bu record tipinin üzerinde fazla durmayalim. Dosyalar konusunda ayrintili olarak görecegiz zaten.

163
ByKuS Muhabbet / Ynt: Bykuş Kafe
« : Ağustos 03, 2009, 03:49:22 ÖS »
olcay hayırdır ne sınavın vardı ???

164
Kendi Siteleriniz / Ynt: amatör bi çalışmam :)
« : Ağustos 03, 2009, 03:47:21 ÖS »
bi forum ben kuramadimmmm :)
şenol forum sitesi kurmada birşey yok ki diyorum ya boş vaktimi değerlendirmek için yapmıştım  :P ama sende haklısın senin boş vaktin yokki yaylaları festivalleri gezmekten vakit bulamıyorsun ki  :kk

165
Kendi Siteleriniz / Ynt: amatör bi çalışmam :)
« : Ağustos 03, 2009, 03:45:12 ÖS »
tşk ederim olcay  :)

Sayfa: 1 ... 9 10 [11] 12 13 ... 21