1.bölüm - cobanoglu

Transkript

1.bölüm - cobanoglu
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
1.BÖLÜM
PROGRAMLAMA ve TEMEL
KAVRAMLAR
GİRİŞ
Program, bilgisayara ne yapması gerektiğini söyleyen bir grup komuta (kod topluluğuna) verilen
isimdir. Bu komutları veren kişiye programcı, komutların bütününe ise programlama dili denir.
İnsan ya da programcı ( konuşma dili biliyor) ile bilgisayar ( makine dili biliyor) arasındaki
iletişim nasıl gerçekleşir? Bu sorunun çözümünü birbirinin konuşma dilini bilmeyen iki yabancı
devlet adamının bir araya gelip görüşmesine benzetebiliriz. Bu görüşmede ancak tercüman veya
çevirmenler aracılığı ile gerçekleşmektedir. Benzer şekilde bilgisayar üreticileri, aynı sorunu
insanın konuşma dilini bilgisayarın makine diline çevirecek, bir nevi tercümanlık yapacak
“derleyici veya yorumlayıcı programlar” geliştirerek çözmektedirler. Aşağıdaki şekilden de
anlaşılacağı üzere insanın algılamasına yakın diller üst seviyeli diller, makineye yakın diller ise alt
seviyeli diller olarak adlandırılmaktadır.
Şekil 1. Programcı ile Makine (PC) arasındaki İlişki
NOT: İkili sayı (BInary digiT-BIT) formatındaki gösterime makine dili denir. Mantıksal
olarak “1” var, “0” yok anlamındadır. Sayısal sistemler ikili mantığa göre çalışırlar.
1
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
DERLEYİCİ ve YORUMLAYICI KAVRAMLARI
Yazdığımız programları makine diline çeviren, makine dilinde elde edilen sonuçları bizim
anladığımız biçime dönüştüren programlara çevirici ( Derleyici veya Yorumlayıcı) programlar
denir.
Kaynak kodun makine koduna (amaç programa) çevrilmesi ve çalıştırılması işlemi üç farklı
yaklaşımla gerçekleştirilebilir
Derleyici (Compiler)
Programlama dili ile yazılmış bir programı makine dili ile yazılmış amaç veya hedef programa
çevirirler. Yüksek seviyeli bir dil ile yazılanlarda kurallarına ters düşen hata kontrollerini
oluşturduktan sonra komut ve bilgilerin makine tarafından tanınarak işlemlerin yapılmasını
sonuçların tekrar yüksek seviyeli program diline anlaşılır duruma çevrilmesini sağlarlar. Fortran,
C, C ++, C#, Pascal, Delphi gibi diller derleyici kullanırlar.
Derleyicinin çevirme işlemi genellikle üç adımda gerçekleşir:
1. Sözel Analiz (Lexical Analysis)
2. Gramer Analizi ve Tanıma ( Syntax Analysis)
3. Kod Üreteci (Code Generator)
Sözel analiz sırasında kaynak kodunu oluşturan kelimeler incelenir ve bu kelimelerin makine
dilinde karşılıkları bulunup bulunmadığı kontrol edilir. Gramer analizi, kaynak kodun yazıldığı
programlama dilinin kendi gramer kuralları içinde doğru yazılıp yazılmadığını kontrol eder. Kod
Üretimi aşamasında tanınan komutlara karşılık gelen makine dili komutları üretilir. Bu adımlar
paralel olarak gerçekleştirilir ve kaynak kod, amaç koda çevrilmiş olur. Çevirme işlemi adımları
aşağıdaki blok şemada görülmektedir.
Yorumlayıcı (Interpreter)
Program kodlarının ilk satırından son satırına kadar satır satır belirtilmiş komut ve işlemleri
inceleyerek kaynak programın hatalarının düzeltilmesine imkân veren ve çalıştıran
programdır. Herhangi bir komut satırının çevrilmesinde ya da çalıştırılmasında bir hatayla
karşılaştığında çalışmayı durdurur ve hatalı satırı programcıya bildirir. Basic, PHP, Perl, Lisp
gibi diller yorumlayıcı kullanırlar.
2
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Derleyici ile Yorumlayıcının Farkı
Yorumlayıcıda kodun okunması ve çevrilmesi programın çalışması sırasında yapıldığından
hız düşüktür. Ayrıca yorumlayıcı yalnızca karşılaştığı ilk hatayı rapor edebilir. Bu hata
düzeltildiğinde sonraki çalışmada da program ancak bir sonraki hataya kadar ilerleye bilir.
Oysa derleyici kaynak kodundaki bütün hataları bulabilir. Buna karşılık hata ayıklama işlemi
yorumlayıcılarla daha kolaydır. Ayrıca derleyicilerle gelen bazı sınırlamaların kalkması
nedeniyle daha esnek bir çalışma ortamı sağlanır. Son yıllarda iki yöntemin üstün yanlarını
birleştiren karma diler (Java ve Python gibi) öne çıkmaya başlamışlardır.
Derleyici programın tamamını kontrol eder bir satırında hata varsa program
satırları bittikten sonra hatayı gösterir. Yani kaynak kodu bir defa
çevirir. Yorumlayıcı ise programın bir yerinde hata varsa çalışırken hatalı
satıra geldiğinde durur ve hata mesajı verir. Hata düzeldikten sonra tekrar
birinci satırdan itibaren kodu çevirir.
NOT: Hem derleyici hem de yorumlayıcı tekniği birlikte de kullanılabilir. Bu tip çalışmada
kaynak kodu sanal bir bilgisayarın makine koduna (bytecode) çevrilir ve daha sonra bu sanal
bilgisayarı gerçekleyen bir program yardımıyla yorumlanarak çalıştırılır. Örneğin Java dilinde
yazılmış bir kaynak kodu önce Java derleyicisinden geçirilerek Java Sanal makinesinin (Java
Virtual Machine- JVM) makine koduna dönüştürülür; sonrada bu sanal makineyi gerçekleyen bir
Java çalışma ortamı ( Java Runtime Environment – JRE ) yardımıyla çalıştırılır. Bu işlemin nasıl
yapıldığı aşağıda grafiksel olarak gösterilmiştir.
Bağlama (Linking)
Günümüzde yazılan birçok program genellikle programlama dili içerisinde bulunan
kütüphane fonksiyonlarına ve yordamlara bağlantı içerdiğinden kaynak programdan üretilen
amaç program kodu bilgisayarda çalıştırılmaya hazır olması için bu amaç program (object
code) bağlama (linking) işlemine tabi tutulur. Bu işlem sonucu eksik parçaların program kodu
içerisine eklenmesi ile artık yazılan program çalışmaya hazır hale gelmiş olur.
3
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Kaynak Program (Source Program)
Bir programlama dili ile yazılmış programlardır. Kaynak program dosyasının uzantısı örneğin
Visual Basic dilinde ise .bas veya .frm , C dilinde yazıldı ise .c , Assembly dilinde yazıldı ise .asm
dir.
Amaç Program (Object Program)
Bir programlama dilinde yazılmış kaynak programın derlenmesi ile elde edilen program.
Amaç program makine diline dönüştürülmüş ve çalıştırılmaya hazır programdır.
PROGRAM GELİŞTİRME AŞAMALARI
Yazılan programın büyüklüğüne göre program geliştirme aşamaları farklılık gösterse bile
bizim amacımız yolun başındakilere rehberlik etmektir. Algoritma bölümünde de anlatılacağı
üzere problemin çözüm analizi yapıldıktan sonra tasarım aşamasında program fonksiyonları
belirlenir, daha sonra herhangi bir programlama dili ile kodlanır, test edilip varsa hatalar
giderildikten sonra çalıştırılır ve gerekli dokümantasyon hazırlanır.
PROGRAM FONKSİYONLARI
Genel olarak bir program üç kısımdan ibarettir. Bilgi girişi, işlem ve hesaplamalar, çıkış.
Programın çıkışında ne elde edeceğimizi bilmemiz gerekir ki programın doğru sonuç üretip
üretmediğini test edebilelim. Çıkış işleminde çıkışın içeriği ve çıkış formatı önemlidir. Çıkış
içeriği elde edilen veya edilecek bilgidir. Çıkış formatı ise çıkış içeriğinin gösteriliş biçimidir.
4
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Programa bilgi girişi yapıldıktan sonra, girdilerden çıktıların alınması gerekli işlem ve
hesaplamaların yapılmasına bağlıdır. Bu işlemlerin neler olacağı problemin çözüm analizi
yapılırken belirlenir.
Örneğin bir dikdörtgenin alanını hesaplayan programı yazalım. Dikdörtgenin alanının kısa kenar
ile uzun kenarın çarpımına eşit olduğunu biliyoruz. Bu programın yazım aşaması;
Bilgi girişi ;
Dikdörtgenin kısa kenarı (a)= ……
Dikdörtgenin uzun kenarı (b)= …...
Bilgi girişi için bu iki verinin bilinmesi yeterlidir.
İşlem ve hesaplamalar; Dikdörtgenin Alanı (Alan = a * b)
Bu aşamada dikdörtgenin kısa kenarı (a) ile uzun kenarı(b) nın çarpımı bize dikdörtgenin alanını
verir.
Çıkış ;
Yaz “Dikdörtgenin Alanı=”, Alan
Ekranda görülecek ifade ve değerler ile bunların gösterim biçimini planladığımız yerdir.
Programın;
Visual Basic dilinde kodlaması
a=inputbox (“dikdörtgenin kısa kenarı”)
b=inputbox(“dikdörtgenin uzun kenarı”)
Alan=a*b
Print (“Dikdörtgenin Alanı=”), Alan




Program fonksiyonları
Bilgi girişi
Bilgi girişi
İşlem ve hesaplama
Çıkış
PROGRAMIN KODLANMASI
Algoritması hazırlanan program, herhangi bir programlama dili ile kodlanır. Bu kodlama
sürecinde kullanılan programlama dilinin yazım kurallarına tam olarak uyulması gerekir.
Kodlama genellikle bir editör program (notepad veya benzeri) kullanılarak yapılır ve bu editör
çıktısına kaynak kod denir.
PROGRAMIN TEST EDİLMESİ
Yazılan program test edilmek üzere çalıştırılır varsa yazım hataları düzeltilip program tekrar
çalıştırılır. Yazım hatası vermeden çalışan fakat istenilen sonuçları üretmeyen programdaki
hataları düzeltmek için algoritma tekrardan gözden geçirilerek aynı adımlar tekrar edilir. Bu tip
hatalara mantık hatası denir ve bulunması için test verileri kullanılır ya da program adım adım
çalıştırılır.
PROGRAM DOKÜMANTASYONU
Dokümantasyon, programı kullanacak kişiler için bir “kullanıcı el kitabı” formatında hazırlanır.
Problemin tanımı, çözüm yöntemi, girdi/çıktı tanımı, çözüm algoritması, sonraki çalışmalar için
5
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
öneriler, kaynak program listesi, uygulama koşulları, örnek girdi/çıktısı ve kullanım amaçları
ayrıntılı olarak yer alır.
PROGRAMLAMA DİLLERİ VE ÖZELLİKLERİ
Bir programlama dili, programcının bir bilgisayara ne yapmasını istediğini anlatmasının
standartlaştırılmış bir yoludur.
Bir programcı komutları farklı programlama dilleri kullanarak yazabilir. Günümüzde yüzlerce
programlama dili mevcuttur. Bu dilleri Şekil 1. de gösterildiği gibi insanın algılamasına veya
makineye yakın olmasına göre 3 gruba ayırabiliriz;
1. Alçak seviyeli diller ( Assembly dili)
2. Orta Seviyeli Diller ( C, ADA dili)
3. Yüksek Seviyeli Diller( Visual Basic, Pascal, Delphi, Cobol, FoxPro, Java gibi..)
NOT: Programlama, temel olarak çözüm algoritması geliştirme işlemi, bilgisayar
programı ise bir programlama dili ile yazılmış algoritmadır.
Günümüzde yaygın olarak kullanılan bazı programlama dillerinin listesi aşağıda
verilmiştir;
ASSEMBLY: Assembly programlama dili, çoğu zaman özel alanlarda geliştirilen yazılımlarda
kullanılan alt düzel bir Yazılım dili olarak tanımlanır. Bu dilin komutları, bilgisayarın doğrudan
islettiği makine dili komutlarının birebir karşılığıdır. Bu nedenle bu dil için makine dili de
denilebilir. Her ne kadar uzman programcıların özel alanlarda kullandığı bir dil olarak tanımlansa
da, programcılar istedikleri takdirde her türlü uygulamayı bu dil ile geliştirebilirler ya da
kullandıkları üst düzey dilaltından çağırabilecekleri procedurler yazabilirler. Assembly diliyle
yazılmış bir program assembler derleyicisi ile makine diline çevrilir.
BASIC (Beginner’s All Purpose Symbolic Instruction Code) :
Bu dil 1964 yılında Jhon
Kemeny ile Thomos Kurtz tarafından Darthmouth College Üniversitesinde geliştirilmiştir. Eğitim
amaçlı bir programlama dilidir. Mikrobilgisayarlar için ilk Basic uyarlamasını Microsoft’un
kurucuları olan Paul Allen ile Bill Gates yazmıştır. BasicA, GWBasic, QBasic, Commodore Basic
V2, Turbo Basic gibi değişik sürümleri çıkmıştır.
VISUAL BASIC: Microsoft tarafından, Basic programlama dili üzerinde geliştirilmiş,
hareket bağımlı, nesne tabanlı ve görsel bir programlama dilidir. Visual Basic yapısal bir
programlama dili olan Basic dilinden türetilmiş olmasına rağmen hareket bağımlı bir
programlama (event-driven programming) dilidir. Yani bir kodun çalışması için bir olayın
veya hareketin olması gerekir. İlk sürümü 1991 yılında Visual Basic 1.0 olarak çıkmıştır.
Daha sonraki yıllarda 2.0 (1992 yılında),3.0 (1993 yılında), 4.0 (1995 yılında), 5.0 (1997
yılında ) , 6.0 (1998 yılında) sürümleri çıkmıştır.
C
: 1970’lerin başında Ken Thompson ve Dennis Ritchie tarafından UNIX İşletim Sistemi
için geliştirilmiş bir programlama dilidir. C, günümüzde neredeyse tüm işletim sistemlerinde
kullanılan, dünyanın en çok kullanılan sistem programlama dilidir. Ancak, uygulama programları
yazmak için de çok sık kullanılır. C ++ da, C den türemiş bir dildir.
6
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
C++ : Nesneye yönelik bir programlama dilidir. 1980'lerin başında Bjarne Stroustrup
tarafından geliştirilen C dilinin birçok temel özelliğini destekleyen ve nesne yönelimli
programlamaya olanak sağlayan, sınıflar sayesinde yeni veri türlerinin oluşturulduğu çok yaygın
olarak kullanılan programlama dilidir. C++ (si-plas-plas okunur) genel amaçlı bir programlama
dilidir. İlk olarak C de bulunmayan sınıf kavramı eklendiği için C With Classes olarak
adlandırılmış, daha sonra C'deki herhangi bir sayısal değişkenin değerini bir arttırmaya yarayan ve
özellikle döngü yapılarında çok sık kullanılan 'i++' ifadesine benzer biçimde C++ olarak
adlandırılmıştır.
PASCAL:1970 Yılında Niklous Wirth tarafından öğrencilerine programlama öğretmek için
geliştirilmiştir. Bilgisayar bilimcisi Niklaus Wirth Pascal'ı 1970'te yapısal programlamayı
derleyiciler için daha kolay işlenir hale getirebilmek amacıyla geliştirmiştir. Adını matematikçi ve
düşünür Blaise Pascal'dan alan Pascal dili, Algol programlama dilinden türemiştir. Wirth,
Pascal'dan başka Modula-2 ve Oberon programlama dillerini de geliştirmiştir. Bu diller Pascal'a
benzerler ve ayrıca nesneye yönelik programlamayı da desteklerler.
DELPHI: Temeli Pascal dilidir. Özellikle nesne yönelimli programlama anlayışıyla
yapılandırılmış Turbo Pascal dilinin görsel sürümü denilebilir. Nesne, sınıf, kalıtım, fonksiyon
aşırı yükleme (overloading) gibi temel nesneye yönelik programlama tekniklerini ve daha
fazlasını içeren ve C++ den aşağı kalmayan güçlü ve esnek bir programlama dilidir
FORTRAN(Formula Translater):
1954'de IBM tarafından üretilen IBM 704 için ilk
sürümü John Backus ve ekibi tarafından geliştirilmiştir. Fortran ilk yüksek düzey programlama
dili olmasa da 1950'deki yüksek programlama dilleri derlenmeden, bir çevirici (interpreter)
yardımıyla çalıştırılıyordu. Bu da makine koduyla yazılan programlardan en az 10 kat daha yavaş
çalışmalarına sebep oluyordu. İşte bu noktada Backus ve ekibi hem yüksek programlama dilleri
gibi kolay yazılabilen hem de makine kodunda yazılmış gibi hızlı çalışan bir programlama dili
sözüyle Fortran 'ı tanıttılar. Her ne kadar ilk derlenebilir yüksek düzey dilin Fortran olup
olmadığı hala tartışma konusu olsa da, Fortran geniş kitleler tarafından kullanılmış ilk yüksek
düzey derlenebilir dildir. İlk Fortran sürümü Fortran 0 'dır. Fortran II, III,IV,77,90 ve 95 gibi
farklı sürümleri bulunmaktadır. Matematiksel, Bilimsel İşlemlerde kullanılmak üzere
tasarlanmıştır.
COBOL(Common Business Oriented Language):1959 Yılında Ticari Amaçlar ile
kullanıcı tarafından geliştirilmiştir. Ticari bir programdır veri tabanına dayanır.
JAVA : Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmış
gerçek nesneye yönelik, platformdan bağımsız, yüksek performanslı, çok işlevli, yüksek seviye,
adım adım işletilen bir dildir. İlk sürümü 1996 yılında çıkmış olup, 1.1,1.2,1.3,1.4 ve 5.0,6.0 gibi
sürümleri geliştirilmiştir. Kaynak : tr.wikipedia.org
MİCROSOFT.NET: Internet uygulamalarında yaygın olan sorunları çözmek için önceden
üretilmiş altyapısına verilen isimdir. .NET, .Net Framework adlı yeni bir çalışma zamanı ortamı
sağlar. Yazdığınız program ve bileşenler bu ortam içinde yürütülür. Ayrıca derlenen bir
programda kaynak kodların derleyici tarafından hazırlanan ara kod oluşturma safhasının
standartlaştırılarak, dillerden bağımsız bir ortam sağlar.
.NET, HTML sayfaları oluşturmak için ASP.NET, Internet sunucularının herhangi bir istemciye
işlev sunması için. NET Web Services adlı yeni bir yol sağlar. ADO. NET’i kullanarak
veritabanı işlemlerine iyi bir destek sağlar.
7
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Visual Studio .NET , .NET platformu için geliştirilmiş uygulama geliştirme platformudur. En
büyük özelliklerinden birisi IDE (Integrated Development Environment) dediğimiz ortak bir
uygulama geliştirme platformu sunmasıdır. İster C# ile uygulama geliştirin ister VB.NET ile
kullanacağınız en etkin ve ortak uygulama geliştirme platformlarından biridir.
PROGRAMLAMA DİLLERİNDE KULLANILAN
TEMEL KAVRAMLAR
Hangi programlama dilini kullanırsak kullanalım bazı temel kavramlar değişmez. Bunlar;
KOMUTLAR: Bilgisayarın o an ne yapacağını belirten emirlerdir. Komutlar kısaltılmış ya
da tam İngilizce kelimelerden oluşur.
Örneğin;
Yaz “Niksar Meslek Yüksekokulu” komutu
Basic/Visul Basic dilinde; Print “Niksar Meslek Yüksekokulu”
C
dilinde; Printf “Niksar Meslek Yüksekokulu”
Pascal
dilinde; Write ‘Niksar Meslek Yüksekokulu’
şeklinde ifade edilmektedir.
DEĞİŞKENLER: Bilgileri saklamak üzere kullandığımız ismini ve tipini bizim
belirlediğimiz bellek alanlarına verilen isimdir. Kısaca bellekte herhangi bir adresi gösteren
sembolik bir addır. Kullandığımız programlama dili ne olursa olsun kendisine verdiğimiz
değerleri belleğinde hangi ad ile saklayacağını biz söylüyoruz. Belleğinde nerede saklayacağını
(adres bilgisini) ise bilgisayar kendisi belirler.
Genel olarak değişkenler ikiye ayrılır;
1) İçerisinde sayıları sakladığımız değişkenlere sayısal veya nümerik değişken adını veriyoruz
2) İçinde sayı haricindeki bilgileri (isim, soy isim, adres, vb.) sakladığımız değişkenlere de alfa
sayısal, alfa nümerik, text veya string değişkenler diyoruz.
NOT: Bilgilerin geçici olarak tutulduğu yere Bellek denir. Değişkenlerde bellekte tutulur.
8
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
NOT: Bellek ve bilgi depolama birimlerinin genişliğini ölçmek için kullandığımız temel
birim bit ve byte’dır. Bugün bilgi işlemdeki temel ölçü birimi byte olarak geçmektedir. { 1
byte= 8 bit, 1 Kilobyte= 1024 byte dır. }
Değişken Tanımlama Kuralları
Değişkenlerin isim ve tiplerinin programcı tarafından belirlendiğini söylemiştik. İşte değişkenleri
tanımlarken dikkat edeceğimiz hususlar;
1) Bir değişkenin ilk karakteri mutlaka harf olmalıdır.
2) Değişken isimlerinin içerisinde _ karakteri hariç, boşluk veya özel karakterler
bulunmamalıdır. [ .,@ ? * : ; !, ( / - + = % & “ $ # … karakterleri gibi]
3) Değişken isimlerinde Türkçe karakter kullanmamaya özen gösterilmelidir.
4) Değişken isimleri kullanılan programlama diline ait komutları içeremez
5) Değişken isimleri, anlamlı ifadelerden oluşmalıdır.
Örnek değişken tanımlamaları;
DOĞRU
Ali74
Al74
AD_SOYAD
Saat
YANLIŞ
74ALİ
ali Koç
sa:at
sa%at
Değişkenlere Değer Aktarma( = )
Bir aritmetik ya da string ifadeyi değişkene aktarmak için “ = “ parametresi kullanılır.
{ a = 5, b = “Ali” gibi…}
NOT: Eşitliğin sağ tarafındaki ifadenin sonucu sol taraftaki değişkene aktarılır.
NOT: İlk eşit işareti 1557 Yılında Londra kentinde Oxford’lu Robert Recard’ın The
Whetstone of Witte” adlı cebir kitabında eşit kavramı (=) işareti ile simgelendiği ve hatta
kendisine:” Neden başka bir işaret değil de bunu seçtiniz?” sorusuna: “ bir birine paralel iki
çizgiden daha eşit şey düşünemezdim.” yanıtını verdiği yazılıdır.
Örnek 1.1. Aşağıdaki programın akışı (çalışması) sırasındaki değişkenlerin alacağı değerler
yandaki tabloda verilmiştir.
NOT: Ekrana yazdığımız hiçbir şey değişkenlerin içeriğini değiştirmez.
9
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Değişkenlerin Tanımlanması
Bir değişken kullanılmadan önce tanımlanır. Bu tanımlama programlama dillerine göre farklılık
gösterse bile mantık aynıdır. Her değişken belirli bir veri tipine sahip olmalıdır (integer, long,
string gibi) Bu veri tipi, değişkenin bellekte kaplayacağı alanı ve sakladığı bilginin büyüklüğünü
belirtir.
Visual Basic Dilinde Değişkenlerin Tanımlanması
Visual Basic dilinde değişkenlerin tanımlanması Dim (Boyut Aç) komutu ile program kodunun
başında yapılır.
Yapısı: Dim Değişken_adı As tip [ Örnek; Dim x as integer, y as string gibi ]
Tip; Değişkenin alabileceği veri türünü tanımlar. [integer, byte, long ,string,currency gibi ]
Değişken tanımlanmaz veya tanımlanırken tip belirtilmezse, VB o değişkeni Variant veri tipinde
algılar. Variant bir değişken herhangi bir tip veriyi içerebilir. Variant tipli değişken kullanmanın
iki kötü yanı olabilir:



Daha fazla bellek kullanımına neden olur.
Variant veri tipi bazı veri işlem fonksiyonları için geçersiz olabilir.
Sayısal bir değişkenin ilk değeri 0, String bir değişkenin ilk değeri “ ”, Variant
değişkenlerin ise ilk değeri Empty dir.
C Dilinde Değişkenlerin Tanımlanması
C dilinde değişkenlerin, kullanılmadan önce tanımlanma zorunluluğu vardır. Programda
kullanılacak değişkenleri tanımlamak için aşağıdaki yapı kullanılır.
Yapısı: Veri Tipi Değişken_adı [ Örnek; int x,y ; char veri gibi ]
Veri Tipleri
Visual Basic dilinde kullanılan veri tipleri aşağıdaki listede verilmiştir.
Bildiri Deyimi
String
Veri Tipi
Karaktersel
Integer
Long
Single
Double
Currency
Byte
Boolean
Date
Variant
Tamsayı
Uzun tamsayı
Tek duyarlı sayısal
Çift duyarlı sayısal
Para
Tamsayı
Doğru /Yanlış
Tarih
---
Bellek Alanı
1 byte
( her karakter için )
Değer Aralığı
65535 / -128…+127
2 byte
-32.768 – 32.767
4 byte
2.147.483.647
4 byte
3.4x10^38
8 byte
1,7x10^308
8 byte
922.337.203.685.447
1 byte
0 – 255
2 byte
True / False
8 byte
1/1/100 – 12/31/9999
16 byte + her karakter için 1 byte
NOT: String Türü Değişkenler “+” veya “&” işlem operatörleri ile birbirlerine eklenebilirler.
10
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
SABİTLER
Program içerisinde değeri değişmeyen ifadelere sabit denir.(∏ sayısı, 2.5, gibi) . Sabit değerler
sayısal ve string olmak üzere ikiye ayrılırlar. İki tırnak (“ ”) işareti arasında yazılan her türlü bilgi
string sabittir. Sabitler özellikle bilinen değerlerin kullanımını sağlar. Kodlamayı ve kodun
okunabilirliğini kolaylaştırırlar.
NOT: Visual Basic dilinde sabit ifadeler program kodunun başında Const deyimi ile
tanımlanırlar. { Const pi=3.14 }
MESAJLAR
Kullanıcı ile iletişim kurmak için kullanılır. Mesajlar kullanıcıyı yönlendirmek amacıyla
kullanılırlar.
NOT: “Bir sayı giriniz” gibi kullanıcıyı program çalışırken yönlendiren ifadelere mesajlar denir.
OPERATÖRLER
İşlem yapmamızı sağlayan işaretlerdir. Genellikle, aritmetiksel { +, -, *, /, … } mantıksal { And,
Or, Not…} ve karşılaştırma { < , > , =, …}operatörleri isimleri altında sınıflandırılırlar ve her
program dillerinde farklı şekillerde gösterilebilirler.
ARİTMETİKSEL OPERATÖRLER
Aritmetiksel işlemlerde kullanılan ( dört işlem gibi ) operatörlerdir. Matematiksel işlemlerde
kullanılan ilgili operatörler ve bilgisayar ortamlarındaki formatları tabloda gösterilmiştir.
İŞLEMLER
Aritmetik
Matematiksel
VB Notasyonu
Operatör
Notasyon
Toplama
+
X+Y
X + Y
Çıkartma
-
X-Y
X – Y
Çarpma
*
(XY),(X.Y),(X*Y)
X* Y
Bölme
/
X/Y ve X
X / Y
X/Y ve X
X \ Y
^, **
XY
X^Y veya X**Y
Mod
X Mod Y
X Mod Y
&
Bade Zehra
“Bade” & “Zehra”
Y
Tamsayı Bölme
\
Y
Üs Alma
Mod Alma (Kalan)
String
11
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Birleştirme
Negatif
-
—Y
—Y
KARŞILAŞTIRMA OPERATÖRLERİ
Verilerin birbiriyle karşılaştırılmasında kullanılır. Sonuç doğru ise 1 ya da TRUE, yanlış ise 0 ya
da FALSE değerini alır.
İŞLEM
OPERATÖR
KARŞILAŞTIRMA
NOTASYONU
VB
NOTASYONU
C
NOTASYONU
Küçüktür
<
A < B
A < B
A < B
Büyüktür
>
A > B
A > B
A > B
Küçük eşit
<=
A ≤ B
A <= B
A <= B
Büyük eşit
>=
A ≥ B
A >= B
A >= B
=
A = B
A = B
A = = B
< >
A ≠ B
A < > B
A != B
Eşittir
Eşit değil
MANTIKSAL OPERATÖRLER
Mantıksal operatörlerin temelini, verilerin birbirleriyle kıyaslanması oluşturur. Kıyaslamanın
sonucuna bağlı olarak da hangi işlerin yapılacağına karar verilir.
İŞLEM
OPERATÖR
KARŞILAŞTIRMA NOTASYONU
Ve
Veya
Değil
Özel
Veya
Eşit
AND
OR
NOT
XOR
A VE B
A VEYA B
A DEĞİL B
A ÖZELVEYA B
VB
NOTASYONU
A AND B
A OR B
A NOT B
A XOR B
EQV
A EŞİT B
A EQV B
Mantıksal operatörlerin işlevlerini şöyle açıklayabiliriz;



AND Operatörü; Lojik ifadelerin her ikisinin de doğru olması halinde TRUE
sonucunu aksi takdirde FALSE sonucunu üretir.
OR Operatörü; Lojik ifadelerden herhangi birinin doğru olması halinde TRUE
sonucunu aksi takdirde FALSE sonucunu üretir.
XOR Operatörü; Lojik ifadelerden her ikisinin de aynı olması halinde FALSE aksi
takdirde TRUE sonucunu üretir.
12
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu


NOT Operatörü;
Lojik ifadenin değilini (tersini) alır. İfade doğru ise FALSE, yanlış
ise TRUE sonucunu üretir.
EQV Operatörü;
Lojik ifadelerden her ikisinin de aynı olması halinde TRUE aksi
takdirde FALSE sonucunu üretir
X
Y
NOT X
1
1
0
1
0
0
0
NOT Y
X AND Y
X OR Y
X XOR Y
X EQV Y
0
1
1
0
1
0
1
0
1
1
0
1
1
0
0
1
1
0
0
1
1
0
0
0
1
Örnek 1.2. A=5, B=4 olarak verildiğinde
tersi ne olur?
Y= ( A < 5 ) OR ( B >= A ) AND ( A=5 ) ifadesinin
Çözüm:
Y= ( A < 5 ) OR ( B >= A ) AND ( A=5 ) ifadesinin sonucu;
Y= False OR False AND True = 0 OR 0 AND 1 = 0 OR 0 = 0 = FALSE dur.
Bu ifadenin tersini alırsak;
Y = ( A>=5 ) AND ( B < A ) OR ( A< >5 ) = True AND True OR False Y = 1 AND 1 OR 0 = 1
OR 0 = 1 = TRUE
Sonucu elde edilir.
Örnek 1.3.
NOT A=1 AND B<>C OR (D=2 AND ADI=”AHMET”) ifadesinin sonucunu A=7, B=5, C=2,
D=3 ve ADI=”AHMET” değerleri için bulunuz.
Çözüm:
Örnek 1.4. Aşağıdaki programı çalıştırdığımızda hangi işlem gerçekleşir.
13
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Çözüm:
Program çalıştırıldığında A değişkeni 5, B değişkeni -3, Y değişkeni 7 değerlerini alır ve B=Y
olmadığı için B–1 işlemi gerçekleşir ( ekranda -4 değerini görürüz ) ve program çalışması sona
erir.
BİLGİSAYAR ORTAMINDA MATEMATİKSEL
İFADELERİN GÖSTERİMİ
Bir matematiksel ifadede birden fazla işlem (çarpma, bölme, toplama v.b ) yer alabilir. Bu
durumda işlemlerin uygulama sıralarına dikkat etmek gerekir.
Matematiksel Operatörler Ve Öncelik Sıraları
Matematiksel operatörlerin öncelik sırası aşağıdaki tabloda verilmiştir. Aynı önceliğe sahip
işlemlerde soldaki daha önce işlem görür.
Öncelik Sırası
İşlemler
1
Sayıları negatifleştirme
2
Parantez içi
3
Matematiksel fonksiyonlar
4
Üs Alma
5
Çarpma veya Bölme
6
Kalan
7
Toplama veya Çıkarma
İşlem Simgesi
( … )
Sin, Cos, v.b.
^, **
* veya /
Mod
+ veya -
14
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Örnek 1.5.
Şeklindeki matematiksel ifadenin bilgisayar ortamındaki kodlanması aşağıdaki şekilde
olur.
Kodlanması :
( a^2 +b*c ) / ( 2*a*b)
Örnek 1.6.
Şeklindeki matematiksel ifadenin bilgisayar ortamındaki kodlanması ve
işlem sonucu aşağıdaki şekilde olur.
Kodlanması
:
İşlem önceliği :
( 6 + 2 *4) /2 – 3 ^2 + (6/3) / (2-3)
( 6 + 8) /2 – 3 ^2 + (6/3) / (2-3)
14 /2 – 3 ^2 + (6/3) / (2-3)
7
– 3 ^2 + (6/3) / (2-3)
7
– 9 + (6/3) / (2-3)
2
/ (2-3)
7
– 9 +
7
– 9 +
2
/ -1
7
– 9 +
-2
7
– 9 - 2
—2–2
—4
NOT:
Aynı öncelikteki işlemlerin uygulanmasının soldan sağa doğru yapıldığına
dikkat ediniz.
Örnek 1.7:
Matematiksel ifade
…..: y=prq+w/x-z
Bilgisayar ortamındaki kodlaması …: y = p * r ^ q + w / x – y
Harflerin yerine rakam yazarak matematiksel ifadeyi test edersek;
y
y
y
y
y
y
=
=
=
=
=
=
3.42 + 6 / 2 – 7
3*16+ 6 / 2 – 7
48 + 6/2 – 7
48 + 3 – 7
51 – 7
44
Sonucunu elde ederiz
NOT: Örnek 1.7. de İşlem önceliği, ilk önce üs alma, daha sonra çarpma(solda olduğu için),
bölme, toplama ve çıkarma şeklindedir.
15
“Algoritma Geliştirme ve Veri Yapıları”, Bülent Çobanoğlu
Örnek 1.8.
şeklindeki matematiksel ifadenin bilgisayar ortamındaki kodlanması aşağıdaki
şekilde olur.
Kodlanması :
Örnek 1.9:
olur.
z= - (5*a**(2/3)) / (sqr(x*x-y*y))
m= - 5 – 8 Mod 4 + 7 * (2 ^ 2 + 2) ifadesinin işlem önceliği aşağıdaki şekilde
m=
m=
m=
m=
m=
m=
- 5
- 5
- 5
- 5
- 5
37
–
–
–
–
+
8 Mod 4 + 7 * (4+ 2)
8 Mod 4 + 7 * 6
8 Mod 4 + 42
0 + 42
42
sonucu elde edilir.
16

Benzer belgeler