İÇİNDEKİLER

Ebat: px
Şu sayfadan göstermeyi başlat:

Download "http://alikoker.name.tr İÇİNDEKİLER"

Transkript

1 i İÇİNDEKİLER TEġEKKÜR... Hata! Yer işareti tanımlanmamış. ĠÇĠNDEKĠLER... i ÖZET... vii ABSTRACT... ix 1.GĠRĠġ PROLOG UN (PROGRAMMING IN LOGIC) TEMELLERĠ Gerçekler: Bilinen olgular Kurallar: Verilen Gerçeklerden Hüküm Çıkarma Sorgulamalar: (Querries) Gerçekler, Kurallar ve Sorgulamaların Bir Araya Yazılması DeğiĢkenler: Genel Cümleler Bölüm Özeti KonuĢma Dilindeki Cümlelerin Prolog Programlarına Aktarılması Cümleler (Gerçekler ve Kurallar) Olgular Arasındaki ĠliĢkiler: Yüklemler (Predicates) DeğiĢkenler (Genel Cümleler) Prolog da DeğiĢkenlerin Değer Alması Anonim DeğiĢkenler Hedefler (Sorgular) Açıklama Satırları EĢleĢtirme Bölüm özeti VISUAL PROLOG PROGRAMLARININ TEMEL BÖLÜMLERĠ Clauses(Olgular veya Kurallar) Predicates (Yüklemler) Domains (DeğiĢken Tipleri) Goal (Hedef) Yüklem Tanımı Domains (Tip tanımları) Bölümü... 22

2 ii 3.7. Goal Bölümü Deklarasyon ve Kurallara Ayrıntılı BakıĢ Char Real String Symbol Yüklemlerdeki Argümanların Yazılması Kuralların Yazım Biçimi Prolog ve Diğer Dillerdeki if Komutunun KarĢılaĢtırılması Otomatik Tip DönüĢtürmeler Bir Programın Diğer Bölümleri Database Bölümü Constants Bölümü Global Bölümü Derleyici Direktifleri Include Direktifi Bölüm Özeti EġLEġTĠRME VE GERĠYE ĠZ SÜRME Geriye Ġz Sürme Geriye Ġz Sürme Mekanizmasının Ayrıntıları Geriye Ġz Sürmenin 4 Temel Prensibi Tarama ĠĢleminin Kontrol Edilmesi fail Yükleminin Kullanılması Geriye Ġz Sürmeyi Engelleme Cut Komutunun Kullanımı Geriye Ġz Sürmeyi Engelleme Determinism ve Cut Not Yüklemi Prosedürel Açıdan Prolog Kurallar ve Olguların Prosedürlere Benzerliği Bir Kuralın Case ifadesi Gibi Kullanılması... 55

3 iii Bir Kural Ġçinde Test Yapmak Cut Komutunun Goto Gibi Kullanılması HesaplanmıĢ Değerleri Görüntüleme BASĠT VE BĠLEġĠK NESNELER Basit veri nesneleri Veri Nesneleri Olan DeğiĢkenler Veri Nesneleri Olan Sabitler Karakterler Sayılar Atomlar BileĢik Veri Nesneleri ve Fonksiyon Operatörleri BileĢik Nesnelerin EĢleĢtirilmesi BileĢik Nesneleri EĢleĢtirmek Ġçin = Sembolünün Kullanılması Birden Fazla Nesneyi Tek Nesne Olarak Kullanmak BileĢik Nesnelerin Tiplerini Tanımlamak Tip Tanımlamaları Üzerine Kısa Bir Özet Çoklu-Düzey BileĢik Nesneler Çoklu-Tipli Argümanlar Listeler TEKRARLAMA VE REKÜRSĠYON Tekrarlı ĠĢlemler Geriye Ġz Sürme Önceki ve Sonraki Eylemler Döngülü Geriye DönüĢün Uygulanması Rekursif Prosedürler Rekursiyonun Avantajları Sondan Rekursiyon Optimizasyonu Sondan Rekursiyonun Kullanımı Sondan Rekursiyonu Engelleme Rekursiyonda Cut Kullanımı Argümanların Döngü DeğiĢkeni Olarak Kullanımı... 85

4 iv 6.8. Rekursiv Veri Yapıları Ağaç Biçimindeki Veri Türleri Bir Ağaç Yapısında Tarama Yapma Bir Ağaç OluĢturmak Binary Arama Ağacı Ağaca Bağlı Sıralama LĠSTELER VE REKÜRSĠYON Listeler Liste Tanımlanması Bir Listenin Parçaları: BaĢ ve Kuyruk Listelerin ĠĢlenmesi Listelerin Kullanılması Liste Elemanlarının Sayılması Sondan Rekursiyona Yeniden BakıĢ Liste Elemanlığı Listeleri BirleĢtirme Rekursiyona Prosedürel Bir BakıĢ Bütün Çözümleri Bir Defada Bulma BileĢik Listeler AKIġ DENETĠMĠ BileĢik AkıĢ Yüklemlerin AkıĢ Biçimlerini Tanımlama AkıĢ Analizini Kontrol Etmek Referans DeğiĢkenler Referans Tip Tanımı Referens Tip ve Ġzleme Dizileri(array) Referans Tip Kullanımı AkıĢ Biçimine Yeni Bir BakıĢ Ġkili (Binary) Ağaç Yapısının Referans Tip Ġle Kullanımı Referans Tip Kullanarak Sıralama Binary (Ġkili) Tip

5 v Binary Terimlerin Kullanılması Binary Terimlerin Yazım Biçimi Binary Terimlerin OluĢturulması makebinary(1) composebinary(2) getbinarysize(1) Binary Terimlere EriĢim getentry(2) setentry(3) Binary Terimleri EĢleĢtirme Binary Terimleri KarĢılaĢtırma Terimleri Binary Terimlere DönüĢtürme term_bin(3) Hatalar ve Ġstisnalarla UğraĢma exit(0), exit(1) trap(3) errormsg(4) Hataların Bildirilmesi Hata Düzeyi lasterror(4) Terim Okuyucudan Gelen Hataları Görme consulterror(3) readtermerror(2) Break Kontrolü (Sadece Metin Modunda) break(1) breakpressed(1) DOS Metin Modunda Kritik Hata Kontrolü criticalerror(4) fileerror(2) Dinamik Cut Programlama Stilleri

6 vi Cut Yüklemini YerleĢtirmek ÖZEL GELĠġTĠRĠLMĠġ PROLOG ÖRNEKLERĠ Küçük bir Uzman Sistem örneği Basit bir yön problemi Hazine Avcısı TARTIġMA VE SONUÇ KAYNAKLAR ġekġller ve TABLOLAR ÖZGEÇMĠġ... Hata! Yer işareti tanımlanmamış.

7 vii ÖZET Yüksek Lisans Tezi PROLOG PROGRAMLAMA DĠLĠ ĠLE MAKĠNE MÜHENDĠSLĠĞĠ ALANINDA UZMAN SĠSTEMLERĠN HAZIRLANMASI TEKNĠKLERĠ Yavuz Selim AYDIN Harran Üniversitesi Fen Bilimleri Enstitüsü Makina Anabilim Dalı 1998, Sayfa: 164 Günümüzde bilgisayar alanında gözlenen hızlı değiģim, yeni teknolojik imkanların ortaya çıkmasına neden olmaktadır. Ġnsanoğlu daha bundan birkaç yıl öncesinde hayal edemediği geliģmelerin günümüzde gerçekleģtiğini gördükçe hayretler içerisinde kalmaktadır. Bilgi teknolojiyle yakından ilgilenenler dahi, bu hızlı değiģime ayak uydurmada zorlanabilmektedir. Bilgisayarların insanlar gibi düģünmesine sağlamak için yoğun çalıģmalar sürdürülmededir. Mümkün olduğunca insan beyni fonksiyonlarına yakın iģlevleri yerine getirebilecek mikroiģlemcilerin tasarımı üzerinde çalıģmalar sürdürülmektedir. Bu çalıģmalar beģinci kuģak bilgisayar dönemine rastladığı ve bu kuģak içerisinde Yapay Zeka (Artificial Intelligece) alanlarında önemli geliģmelerin yer aldığı görülür. Bilgi teknolojisinin amacı, uzman kiģilerin bilgilerini bilgisayarda kullanarak yeni sonuçlar elde etmektir. Uzman sistemler, yapay zekanın bir dalı olup, bir probleme uzman insan düzeyinde bir çözüm bulmak için uzman bilgisini kullanırlar. Yapay zekada sık kullanılan programlama dillerinden biri de Prolog dilidir. Son versiyonu Visual Prolog olarak piyasaya çıkartılmıģtır. Visual Prolog, ifadeler mantığının kullanarak, bilgisayara çözümü aranan problem hakkında bilinen gerçekleri ve kuralları vererek, uygun bir çözüm elde edilmesine sağlar.

8 viii Konvansiyonel programlama dillerinde, bir programcı herhangi bir problemin nasıl çözüleceğini bilgisayara adım adım tanıtmak zorundadır. Oysa bir Visual Prolog programcısının yapması gereken Ģey, çözüm aranan problem hakkında bilinen gerçekler ve kuralları, bunlar arasındaki iliģkileri tanımlamak, daha sonra mümkün olana bütün çözümleri bulmak görevini Prolog a vermektir. Visual Prolog, aritmetik iģlemlerin yapılmasına da imkan tanır. Visual Prolog, C++ ve diğer bilinen programlama dilleri kadar hızlı çalıģır. Hızlı bir derleyici, bilgisayar dünyasında daima aranan bir avantaj olmuģtur. Visual Prolog, MS DOS, Windows 3.1, Windows 95, Windows NT, Unix ve OS/2 iģletim sistemleri altında programlamaya imkan tanıyan bir çoklu ortam programlama dilidir. Uzman sistemlerin, bütün kullanıcılara düģük maliyetli uzmanlık, insanlar için tehlikeli olan ortamlarda riski azaltma, emekli olabilen veya vefat edebilen insan uzmanlar yerine, her zaman kalıcı olan uzmanlar ve verilen kararların net açıklanabilmesi gibi güzel özellikleri vardır. Bu çalıģma, yapay zeka alanında çalıģma yapan, uzman sistem tasarlamak isteyen fakat Türkçe kaynak bulamayan, kaynak kullanarak Prolog dilini öğrenmek isteyen araģtırmacılara faydalı olmak amacıyla gerçekleģtirilmiģtir. Prologun temel mantığı, elemanların ayrıntılı anlatımı, Prologun en önemli özelliklerinden biri olan Geriye Ġz Sürme ve bu konuların açık biçimde kullanıldığı örnekler doyurucu bilgi sunmaktadır. Anahtar Kelimeler: Uzman Sistemler, Yapay Zeka, Visual Prolog, Programlama Dilleri

9 ix ABSTRACT Master Thesis TECHNQUES ON THE DESIGN OF EXPERT SYSTEMS IN MECHANICAL ENGINEERING BY USING THE VISUAL PROLOG PROGRAMMING LANGUAGE Yavuz Selim AYDIN Harran University Graduate School of Natural and Applied Sciences Department of Mechanical Engneering 1998, Page: 164 Rapid advancement in the computer technology has brought new technological facilities. People are surprised to see that the technological innovations which could not even be dreamt of just a few years ago have been achieved. Even those closely involved in the Information Technology may sometimes face some difficulties in coping up with the rapid changes. Intensive studies have been performed by scientists to enable a computer to imitate human beings in the way he thinks. Studies to design microprocessors capable of performing similar functions of human brain still continue. It is observed that such studies coincided with the evolution period of the fifth generation computers and that important improvements have been recorded in the field of Artificial Intelligence. Information technology aims at making use of an expert s knowledge from which new results may be retrieved. Being a subbranch of Artificial Intelligence, expert systems use the knowledge of a human expert to find a solution for a given problem at expert level. One of the programming languages frequently used in artificial intelligence is Prolog, of which the latest version has been released as the Visual Prolog. It uses

10 x logical expressions which tell the computer the facts and rules about a problem so that a solution based on the given facts and rules could be obtained by using a deductive procedure. In conventional programming languages, a programmer must describe the solution to a problem step by step. In the Visual Prolog, on the other hand, a programmer must only describe the facts and rules about a problem not steps necessary for the solution- in the form of some relations and then, let the Visual Prolog find all possible solutions for that problem. Visual Prolog is capable of performing arithmetic operations as well. Visual Prolog runs as fast as C++ and other popular programming languages. A fast compiler has always been an advantage in the computing world. The Visual Prolog is a multiplatform programming language that allows programming under MS DOS, Windows and NT, Unix and OS/2 operating systems. Experts systems have some interesting characteristics such as low cost of expertise for all users, low risks in situations dangerous for humans, ever continuing expertise despite to human experts who may retire or pass away, and clear explanation of what has been concluded. This study has been performed for researchers who wish to carry out studies in the field of Artificial Intelligence, design expert systems in Mechanical Engineering but lack to find a source about the Visual Prolog in Turkish and like to learn this language. Many superior features of the Visual Prolog, including backtracking and recursion, have been clearly explained in this study by providing many sample programs. Keywords: Expert Systems, Artificial Intelligence, Visual Prolog, Programming Languages

11 1. GİRİŞ Ġngilizce Expert System kelimelerinden türetilerek Türkçe ye kazandırılmıģ olan Uzman Sistem yazılımları alanında, ülkemizde yoğun çalıģmaların yapıldığı gözlenmektedir. Bir Uzman Sistem, Bilgisayar Destekli Eğitim amaçlı da kullanılabileceğine göre, eğitim ve öğretim için gerekli olabilecek her türlü formasyonu taģımalıdır. Öğrenme, doğrudan bilgisayardan yapılacağı için, klasik öğretmen merkezli eğitime nazaran, içeriğin daha doyurucu ve cazip özellikler taģıması gerekir. Cazip unsurlar, bilgisayar tarafından yönetilmeli ve uygun ortamlarda ekranda veya bilgisayarın çevre birimlerinde ortaya çıkabilmelidir. Öğretilmek istenen bir konuda iģlem basamaklarının sırası çok önemlidir. Öğrenciye yöneltilecek sorular çok iyi belirlenmeli ve soru sorarken öğretme mekanizması devreye alınmalıdır. Soruların sıralanıģında yeterli hassasiyet gösterilmediği takdirde, hem öğrenme eksik olabilir, hem de öğrenci yanlıģ bilgilendirmeye sevk edilebilir. Uzman sistem üzerinde çalıģan öğrenci, bilgisayarı ile yalnız baģına kalacaktır. Sürekli monoton bir ekran görüntüsü yüzünden, öğrencinin öğrenme arzusu kırılabilir, bilgisayar önünde canı sıkılabilir. O halde öğretme esnasında, öğrencinin dikkatinin konuya sevk edilebilmesi için, program arasında görsel ve iģitsel yöntemlerle uygun uyarılar yapılabilmelidir. Bilgisayar destekli eğitimin kullanılabileceği her yere ilave olarak, problemlere çözüm getirilmek istenen her sahada Uzman Sistem kullanılabilir. Bir Uzman Sistem hazırlanırken asgari olarak aģağıdaki hususların göz önünde bulundurulması gerekir. Hazırlanacak proje konusu hem güncel olmalı hem de o konuda yeterli kaynak bulunabilmelidir. Konunun bol miktarda resim ve Ģekil içermesi, kullanıcının öğrenme hızını artıracak bir faktördür. 1

12 Proje baģlangıcında, güzel bir sunu yazılımıyla (örneğin Power Point gibi) proje hakkında özet bilgiler verilmeli, proje tasarımcısı ve denetleyen kiģilerin isimleri, resimleri ve faydalanılan kaynaklar hakkında bilgi verilmelidir. Konu anlatımına geçmeden önce, güzel bir müzik eģliğinde bilgisayar, kullanıcının ismini girmesini istenmelidir. Çünkü ilerleyen konular içerisinde bazı yerlerde esprili cümlelerle bilgisayarın kullanıcıya ismi ile hitap etmesi, kullanıcının aniden dikkatini çekmeye neden olabilmekte ve kullanıcı bu durumdan fazlasıyla memnun kalabilmektedir. 2

13 2. PROLOG UN (PROGRAMMING IN LOGIC) TEMELLERİ Bir Prolog programı, (Basic, Fortran, Pascal, C) olduğu gibi bir dizi komut satırından değil, doğruluğu önceden bilinen gerçeklerden ve bu gerçeklerden bilgi sağlamaya yarayan kurallardan oluģur. Prolog, cümlecikler (Horn Clauses) üzerine bina edilmiģtir. Cümlecikler, yüklem mantığı denilen formal sistemin bir alt kümesidir. Prolog da bir Karar Motoru (Inference Engine) vardır. Bu motor, verilen bilgiyi kullanarak cevabı aranan bir problem için, mantıksal bir Ģekilde karar veren bir iģlemdir. Karar motorundaki Kalıp EĢleĢtirici (Pattern Matcher) sorulara uygun olan cevapları eģleģtirerek önceden bilinen ve program içine kaydedilen bilgiyi geri çağırır. Prolog, program satırları içinde sorulan bir soruyu veya hipotezi doğrulamak için, doğruluğu önceden bilinen ve veri olarak yüklenmiģ olan bilgi kümesini sorgulayıp hipotezin doğruluğu hakkında karar vermeye çalıģır. Kısaca söylemek gerekirse, bir Prolog programının temelini, program akıģı içinde önceden verilen gerçekler ve kurallar oluģturur. Prolog un önemli diğer bir özelliği de Ģudur: Sorulan sorulara mantıklı cevaplar bulmanın yanısıra, bulduğu tek bir çözümle yetinmez, baģka alternatifleri de inceleyerek mümkün olan bütün çözümleri bulur. Prolog, bir programın birinci satırından baģlayıp sonuncu satırına kadar ilerleyip sadece bir çözüm bulmak yerine, zaman zaman geriye dönüģ yaparak problemin her bir bölümünün çözümü için alternatif yolları da arar. Yüklem mantığı, mantığa dayalı fikirleri yazılı bir Ģekilde ifade etmeye yarayacak Ģekilde geliģtirilmiģtir ve Prolog da bu mekanizma gayet iyi kullanılır. Yüklem mantığının yaptığı ilk iģ, cümlelerdeki gereksiz kelimeleri ayıklamaktır. Daha sonra cümleler-kelimeler arasındaki iliģkiler ilk sıraya, nesneler ise iliģkilerden sonra sıralanır. Bu nesneler ise iliģkilerin etkili olduğu argümanlar olarak yazılır. Konuşma Dili Prolog daki Karşılığı Ahmet bir insandır. insan(ahmet). Gül kırmızıdır. kirmizi(gul). Ahmet, gülü kırmızı ise sever. sever(ahmet, gul) if kirmizi(gul). 3

14 Prolog ile program yazarken, ilk önce nesneler ve bu nesneler arasındaki iliģkiler tanımlanır. Ahmet gülleri sever cümlesindeki Ahmet ve gül kelimeleri nesne, sevmek ise bu iki nesne arasındaki iliģkidir. Bu iliģkinin ne zaman doğru olacağını belirleyen ifadeye ise Kural denir. Ahmet, gülü kırmızı ise sever cümlesindeki sevmek hangi durumda Ahmet in gülü seveceğini belirttiği için bu durumda Kural olur Gerçekler: Bilinen olgular Prolog da, nesneler arasındaki iliģkiye Yüklem denir. Tabii dilde bir iliģki bir cümle ile sembolize edilir. Prolog un kullandığı yüklem mantığında ise bir iliģki, bu iliģkinin ismi ve bunu takiben parantez içinde yazılan nesne veya nesnelerden oluģan basit ifadelerle özetlenir. Gerçekler, tıpkı cümlelerdeki gibi. ile biter. AĢağıdaki örneklerde sevmek fiilinin tabii dilde ifade edilmesi gösterilmiģtir. Yasin Esra yı sever. Esra Cihat ı sever. Yasin kedileri sever. Yukarıdaki ifadeleri olgu olarak kabul edip Prolog daki karģılıklarını yazalım: sever(yasin, esra). sever(esra, cihat). sever(yasin, kediler). Görüldüğü gibi, gerçekler nesnelerin ve iliģkilerin değiģik özelliklerini de ifade edebilirler Kurallar: Verilen Gerçeklerden Hüküm Çıkarma Kurallar, gerçek olguları kullanarak bir sonuca varmak için kullanılır. AĢağıda sevmek iliģkisinden elde edilen bazı kurallar verilmiģtir: Yasin, Esra nın sevdiği her Ģeyi sever. Hasan kırmızı olan her Ģeyi sever. Bu kuralları Prolog dilinde yazmak gerekirse: sever(yasin, hersey):-sever(esra, hersey). sever(hasan, hersey):- kirmizi(hersey). 4

15 Buradaki :- sembolü, prosedürel dillerdeki if(eğer) anlamında olup, bir kuralın iki parçasını birleģtirir. Prolog, sever(yasin, hersey):-sever(esra, hersey) kuralını kullanarak, Yasin in sevdiği nesneyi bulmak için önce kuralın ikinci kısmını, yani Esra nın sevdiği nesneyi bulur. Bunun doğruluğu ispatlandıktan sonra Yasin in sevdiği nesneyi belirler Sorgulamalar: (Querries) Prolog a bazı gerçekler tanıtıldıktan sonra, artık bu gerçeklerle ilgili sorular sormaya baģlanabilir. Bunu Prolog Sistemini Sorgulama diyoruz. Veri olarak saklanan gerçekler ve gerçekler arasındaki iliģkiler bilindikten sonra, bu iliģkiler hakkında soru sorup cevap almak kolaydır. Günlük konuģmalarda Esra Yasin i seviyor mu? Ģeklindeki bir soruyu Prolog da Ģöyle ifade edilir. sever(esra, yasin). Bunun cevabı program akıģı içerisinde verdiğimiz gerçeklere bağlıdır. Yasin neyi sever? Ģeklindeki bir soruyu Prolog a sormamız mümkündür. Bunu sever(yasin, Neyi) Ģeklinde kodlarsak, Prolog dan Ģu cevabı alırız: Neyi=esra Neyi=kediler 2 Solutions Çünkü önceden verilen sever(yasin, esra) ve sever(yasin, kediler) iliģkileri, bunu ispatlamaktadır. Burada Yasin ve Esra'ın küçük harfle, Neyi kelimesinin ise büyük harfle baģlamaktadır. Çünkü, yüklemdeki Yasin sabit bir nesnedir, yani değeri sabittir. Oysa Neyi bir değiģkendir. Yani farklı gerçeklerle beraber, sorgudan alınacak cevaplar da farklı olacaktır. Bu yüzden değiģkenler daima büyük harf veya bir _ ile baģlar. Bu durumda Neyi kelimesinin cevapları değiģebilir. Prolog bir sorguya cevap ararken daima önceden verilen gerçeklerin ilkinden baģlar ve hiçbirini ihmal etmeden en sondaki gerçeğe kadar ilerler. Prolog da, bir insana sorulabilecek baģka soruları da sormak mümkündür. Fakat Mehmet hangi kızı sever? Ģeklindeki bir soruya hiçbir cevap alınamaz. Çünkü 5

16 yukarıdaki satırlar dikkate alındığında, bu konuyla ilgili bir bilginin mevcut olmadığı görülür. Yasin Esra yı sevmektedir, fakat Esra nın kız olduğuna dair bir bilgi mevcut olmadığından, Prologun bu gerçeklerden hareketle bir karara varması mümkün olamaz Gerçekler, Kurallar ve Sorgulamaların Bir Araya Yazılması 1. AĢağıdaki gerçekler ve kuralların var olduğunu kabul edilsin. Büyük araba hızlıdır. Büyük bir araba iyidir. Küçük bir araba daha kullanıģlıdır. Kasım, eğer hızlı ise, büyük arabayı ister. Yukarıdaki gerçeklerden anlaģılan Ģey, Kasım ın hızlı ve büyük arabalardan hoģlandığıdır. Prolog da aynı sonuca varacaktır. Zaten hızlı arabalar hakkında bilgi verilmeseydi, hiçkimse Kasım ın hızlı arabalardan hoģlandığı sonucuna varamazdı. Yapılabilecek tek Ģey, ne tür bir arabanın hızlı olacağını tahmin etmektir. 2. AĢağıdaki örneğe bakarak, Prolog un kuralları kullanarak sorgulara nasıl cevap bulduğu açıklanmıģtır. hoslanir(cengiz, masa_tenisi). hoslanir(mehmet, yuzme). hoslanir(yavuz, futbol). hoslanir(levent, Spor):-hoslanir(yavuz, Spor). Son satırdaki hoslanir(levent, Spor):-hoslanir(yavuz, Spor) bir kural olup, konuģma dilindeki karģılığı Ģudur: Levent, bir spor türünden eğer Yavuz da hoģlanıyorsa hoģlanır. Bu kuralın baģ tarafı hoslanir(levent, Spor) ve gövde kısmı hoslanir(yavuz, Spor) olur. Burada Levent in yüzmeyi sevip sevmediği hakkında hiçbir bilgi yoktur. Bunu öğrenmek için hoslanir(levent,yuzme) Ģeklinde bir sorgu kullanmak yeterlidir. Cevap bulmak için Prolog hoslanir(levent, Spor):-hoslanir(yavuz, Spor) kuralını kullanır. Yukarıda geçen gerçeklerle bunlar arasındaki iliģkiler, aģağıdaki Ģekilde bir program haline getirilir PREDICATES 6

17 nondeterm hoslanir(symbol,symbol) CLAUSES hoslanir(cengiz, masa_tenisi). hoslanir(mehmet, yuzme). hoslanir(yavuz, futbol). hoslanir(levent, Spor):- hoslanir(yavuz, Spor). GOAL hoslanir(levent, futbol). Bu program Prolog da derlenirse, yes cevabını alınır. Çünkü hoslanir(yavuz, futbol) gerçeği Yavuz un futboldan hoģlandığını göstermektedir. hoslanir(levent, Spor):-hoslanir(yavuz, Spor) kuralı ise Levent in, Yavuz un yaptığı spor türlerinden hoģlandığını göstermektedir. Ġlgili olgu Yavuz un futboldan hoģlandığını gösterdiği için, Levent in de futboldan hoģlandığını söylemek mümkündür. Bu yüzden GOAL hoslanir(levent, futbol) sorgusunun cevabı yes olur. Fakat hoslanir(levent, tenis) sorgusunun cevabı no olacaktır. Çünkü: 1. Bu sorgunun doğrulanabilmesi için gerçekler arasında öncelikle Yavuz un tenisten hoģlandığını gösteren bir olgunun var olması gerekir. 2. hoslanir(levent,spor):-hoslanir(yavuz, Spor) kuralı, üstteki gerçekleri kullanarak bu konuda bir karara varamaz. Çünkü kuralın gövdesini doğrulayacak bir bilgi olmadığından, kural baģarısız olur Değişkenler: Genel Cümleler Prolog da değiģkenler kullanılarak genel gerçekler, kurallar yazılabilir ve genel sorular sorulabilir. DeğiĢkenler tabii dilde de kullanılır. Tipik bir örnek vermek gerekirse: Kasım, Ferit in sevdiği Ģeyi sever. Bu bölümün baģında da belirtildiği gibi, Prolog da değiģkenler daima büyük harf veya bir _ ile baģlar. sever(kasim, Sey):-sever(ferit, Sey) Ģeklinde ifade edilebilecek yukarıdaki cümlede, Sey değiģkendir. kasim ve ferit kelimeleri sabit semboller oldukları için küçük harfle baģlarlar. Bu sabitleri de ekrana büyük harfle baģlayacak Ģekilde yazmak mümkündür. Bunun için sadece ( Kasim, Sey) veya ( Ferit, Sey) Ģeklinde yazmak yeterlidir. 7

18 2.6. Bölüm Özeti 1. Bir Prolog programı iki tür ifadelerden oluģur: Gerçekler ve Kurallar. Gerçekler, programcının doğruluğundan emin olduğu bilgiyi iliģkiler veya özellikler olarak anlattığı satırlardır. Kurallar, bağımlı iliģkilerdir. Prolog bu kuralları kullanarak bir bilgiden hareketle bir konuda karar verir. Bir kural, verilen Ģartlar yerine geliyorsa baģarılı olur, yani doğru olur. Prolog da bütün kuralların iki kısmı vardır: BaĢ ve Gövde kısmı. Bunlar birbirinden :- sembolleri ile ayrılırlar. BaĢ kısmı verilen gerçekler doğrulanıyorsa doğrudur. Bu kısım aynı zamanda sonuç veya bağımlı iliģki olarak da bilinir. Gövde kısmı ise doğru olması gereken Ģartları taģır. Böylece Prolog, programın baģ kısmının doğru olduğunu ispatlayabilir. 2. Gerçekler ve kurallar birbirinin aynısıdır. Gerçeklerin kurallardan tek farkı, açıklayıcı bilgi taģıyan gövdelerinin olmamasıdır. 3. Prolog a bir dizi gerçek veya kural tanıttıktan sonra, bu gerçekler veya kurallar hakkında soru sormak mümkündür. Buna Prolog Sistemini Sorgulama denir. Prolog, sorgulama esnasında, verilen gerçekler listesinin baģından sonuna kadar tarama yapar ve sorguya uyan cevapları bulmaya çalıģır. 4. Prolog daki Karar Motoru bir kuralın baģ ve gövde kısmını incelerken, bilinen gerçek ve kurallara baģvurur. ġartların yerine gelip gelmediğini kontrol eder. Bir kuraldaki bütün Ģartlar doğrulandıktan sonra, bağımlı olan kısım, yani kuralın baģ kısmının doğru olduğuna karar verir. Bütün Ģartlar, bilinen gerçeklere göre karģılanamazsa, sorguya olumlu cevap verilemez. Örnekler: Prolog gerçeklerinin konuģma diline çevrilmesi, aģağıda verilmiģtir. 1. yapmaktan_hoslanir(oya, resim) = Oya, resim yapmaktan hoģlanır. 2. cocuk(arif).= Arif, bir çocuktur. 3. bulunur( Çankaya KöĢkü, Ankara ). = Çankaya KöĢkü Ankara dadır. 8

19 4. adres(abuzer, zonturlu, Fatih Cad. 6. Sokak., DıĢkapı, ANKARA, 06412).= Abuzer Zonturlu nun adresi Fatih Cad. 6. Sokak DıĢkapı, ANKARA, dir. ġimdi tam tersini yapalım, konuģma dilinden Prolog diline çevrilme ise, aģağıdaki gibi yapılır. 1. Vedat iyi kebap yapar = yapar(vedat, iyi_kebap). 2. Keban Barajı Elazığ dadır = bulunur( Keban Barajı, Elazığ ). 3. Kasım Kaya nın telefon numarası dir. telefon_no( Kasım KAYA, ). 4. Hüseyin Meryem in babasıdır. = baba(huseyin, meryem) Konuşma Dilindeki Cümlelerin Prolog Programlarına Aktarılması Bu bölümün ilk kısmında gerçekler, kurallar, iliģkiler, genel cümleler ve sorgulamalar konusunu incelenmiģtir. Aynı kelimeler üzerinde çalıģmakla beraber, Prolog la daha fazla ilgili kelimeler üzerinde, yani cümlecikler, yüklemler, değiģkenler ve hedefler üzerinde durulacaktır Cümleler (Gerçekler ve Kurallar) Prolog dilini oluģturan iki türlü ifade vardır. Bu ifadeler gerçekler veya kurallardan ibarettir. Prolog dilinin kalbini oluģturan bu ifadelere clause denilmektedir. Bir gerçek, bir nesnenin veya nesneler arasındaki iliģkinin bir özelliğinin sadece tek bir yönünü temsil eder. Bir gerçeğin Prolog tarafından tamamen doğru kabul edildiğini, bir sorgulamaya cevap ararken bu gerçeklerden yola çıkıldığını ve bu gerçeklerin doğruluğunun kontrol edilmediği unutulmamalıdır. Günlük hayatımızda da doğruluğu bilinen gerçeklerden yola çıkarak bir Ģeyin doğru olup olmadığı araģtırlır. ĠĢte, mevcut gerçeklerden hareket ederek neyin doğru olabileceğini gösteren yapıya Prolog da Kural denir. ġimdi Prolog daki Kural yapısına bir örnekle yakından bakalım. Örnek: 1. AĢağıdaki cümlede, menü de olan bir yemeğin Mehmet e uygun olup olmadığı sorgulanmaktadır. Mehmet ülser olduğu için sadece doktorunun izin verdiği yemekleri yer. 9

20 Menü ve yukarıdaki kurala bakarak, Mehmet in hangi yemeği sipariģ edebileceğine karar verilebilir. Bunu yapabilmek için, menüdeki yemeğin belirli Ģartları taģıyıp taģımadığına bakılmaladır. a. Menudeki_yemek bir sebze mi? b. Menudeki_yemek doktorun tavsiye ettiği listede var mı? c. Sonuç: Eğer a ve b Ģıklarının ikisinin de cevabı Evet ise, bu durumda Mehmet menüdeki bu yemeği yiyebilir. Prolog da bu tür iliģkilerin bir kuralla ifade edilmesi zorunludur, çünkü verilecek karar tamamen gerçeklere bağlıdır. Yukarıdaki ifadeler; Prolog gerçekleri olarak Ģöyle yazılabilir: mehmet_yiyebilir(menudeki_yemek):- sebze(menudeki_yemek), doktor_tavsiyeli(menudeki_yemek). sebze(menudeki_yemek) ifadesinden sonra, konulmuģtur. Çünkü virgül, iki amaç arasındaki bağlantıyı gösterir ve and anlamındadır. mehmet_yiyebilir(menudeki_yemek) iliģkisinin doğrulanabilmesi için, sebze(menudeki_yemek), doktor_tavsiyeli(menudeki_yemek) iliģkilerinin her ikisinin de doğru olması gerekir. Örnek: Ebeveyn iliģkisini anlatan bir Prolog gerçeği aģağıdaki gibi yazılır. ebeveyn(omer, nejla) = Omer, Nejla nın ebeveynidir. Programın veritabanında babalık durumunu gösteren gerçeklerin zaten var olduğunu, yani baba(omer, nejla) gerçeğinin mevcut olduğu ve aynı zamanda annelik iliģkisini de gösteren anne(leyla, nejla) gerçeğinin de var olduğu kabul edilsin. Babalık veya annelik bağı hakkında yeterince bilgi olduğundan, ayrıca baba ve anne bilgilerini anlatmak vakit kaybına neden olur. Bunu yerine genel bir kural yazmak daha mantıklıdır. Yani, ebeveyn(sahis1, Sahis2):-baba(Sahis1, Sahis2). ebeveyn(sahis1, Sahis2):-baba(Sahis1, Sahis2). Örnek: Bir müģteri arabayı severse ve araba satılık ise bu arabayı satın alabilir. Tabii dildeki bu iliģki, aģağıdaki kuralla Prolog a aktarılabilir: 10

21 satin_alabilir(musteri, Model):- sahis(musteri), araba(model), hoslanir(musteri, Model), satilik(model). Aynı kural, konuģma dilinde aģağıdaki Ģekilde ifade edilir. MüĢteri modeli satın alabilir :- MüĢteri bir Ģahıs ve Model bir araba ve MüĢteri modelden hoģlanırsa ve Model satılık ise. Bu kuralın baģ kısmı, gövde kısmındaki her dört Ģartın da doğrulanması halinde doğru olacaktır. Yukarıda yazılan gerçekler, aģağıdaki Ģekilde program haline getirilebilir. PREDICATES nondeterm satin_alabilir(symbol, symbol) nondeterm sahis(symbol) nondeterm araba(symbol) hoslanir(symbol, symbol) satilik(symbol) CLAUSES satin_alabilir(x,y):- sahis(x), araba(y), hoslanir(x,y), satilik(y). sahis(ahmet). sahis(paki). sahis(cengiz). sahis(levent). araba(buick). araba(bmw). araba(passat). araba(toyota). 11

22 hoslanir(paki,buick). hoslanir(levent, toyota). hoslanir(cengiz, passat). hoslanir(ahmet, tenis). satilik(pizza). satilik(toyota). satilik(buick). satilik(passat). Yukarıdaki programı yazdıktan sonra Levent ve Cengiz in ne satın alabileceğini, kimin buick marka arabayı alabileceğini bulmak için aģağıdaki hedef cümleleri kullanılabilir: satin_alabilir(kim, Ne). satin_alabilir(levent, Ne). satin_alabilir(cengiz, Ne). satin_alabilir(kim, buick) Olgular Arasındaki İlişkiler: Yüklemler (Predicates) Bir iliģkinin sembolik ismine yüklem denir ve yükleme bağlı olan nesnelere argüman denir. Mesela sever(yasin, esra) gerçeğindeki sever iliģkisi yüklem, yasin ve esra ise bu yüklemin agrümanları olan nesnelerdir. Argümanlı ve agrümansız yüklem örnekleri: sahis(soyad, ad, cinsiyet). sahis yüklem; soyad, ad, cinsiyet ise bu yüklemin argümanlarıdır. basla = argümanı olmayan yüklem dogum_gunu(isim, soyisim, tarih). Dogum_gunu yüklem, isim, soyisim ve tarih nesneleri ise argümanlarıdır. Sınırlı olmakla beraber, bir yüklem argümansız olarak da kullanılabilir Değişkenler (Genel Cümleler) Basit bir sorgulamada, sever(kim, tenis) kuralını kullanarak kimin tenis oynamaktan hoģlandığı öğrenilebilir. Bu sorguda Kim, değiģken olarak kullanılmıģtır. 12

23 Visual Prolog da değiģken isimlerinin daima büyük harfle veya _ ile baģladığı, daha önceden söylenmiģti. Ġlk karakteri büyük bir harf veya _ olmak Ģartıyla, değiģkenler istenilen kadar rakam, büyük veya küçük harf alabilirler. Konu ile ilgili birkaç örnek, aģağıda verilmiģtir. Geçerli Değişkenler Geçersiz Değişkenler Prolog_ile_yazdigim_ilk_program 1.deneme _14_10_1978_tarihinde_doganlar 14.program _1_nolu_ogrenci prolog DeğiĢken ismi seçimine dikkat etmek, programın baģkaları tarafından rahat bir Ģekilde okunması ve anlaģılması bakımından önemlidir. sever(kim, tenis) kuralı sever(x, tenis) kuralına tercih edilir. Çünkü Sahis X e göre daha fazla anlamlıdır Prolog da Değişkenlerin Değer Alması Diğer programlama dillerinde, değiģkenlerin değer almalarına imkan tanıyan atama ifadeleri Prolog da yoktur. Prolog u diğer programlama dillerinden ayıran en önemli özelliklerden biri de budur. Prologdaki değiģkenler almaları gereken değerleri atamayla değil, gerçekler veya kurallardaki sabitlere eģleģtirilirken alırlar. Bir değiģken, değer almadığı müddetçe serbest değiģken olarak kalır. Fakat herhangi değer aldığı andan itibaren sınırlı hale gelir. Bu sınırlılık bir sorguya cevap almak için gerekli olan süre kadar sınırlı kalır. Bu iģlem bittikten sonra değiģken yeniden sınırlı hale gelir, program baģa döner ve alternatif çözümler arar. Dolayısıyla bir değiģkene bir değer vererek bilgi depolanamaz. DeğiĢkenler bilgi depolamak için değil, kalıp-eģleģtirme ve iģlemenin bir parçası olarak kullanılır. PREDICATES nondeterm sever(symbol, symbol) CLAUSES sever(oktay, okuma). sever(yavuz, bilgisayar). sever(orhan, tavla). sever(vedat, uyuma). sever(ismail, yuzme). 13

24 sever(ismail, okuma). Hem okuma hem de yüzmeden kimin hoģlandığı sorusuna cevap aramak için Ģu sorguyu kullanılır. GOAL sever(sahis, okuma), sever(sahis, yuzme). Prolog bu kuralı çözmek ve önce sever(sahis, okuma) kısmının doğru olup olmadığını bulmak için bütün gerçekleri baģtan sonra kadar inceler. Çözüm bulunmadan önce Sahis değiģkeninin değeri yoktur, yani serbesttir. Öte yandan okuma kısmı bilinmektedir. Ġlk sever(oktay, okuma) gerçeğindeki okuma kısmı sorguya uyduğu için Sahis oktay değerini alır. Prolog aynı zamanda aģağıya doğru nereye kadar tarama yaptığını göstermek için kuralın baģıyla eģleģen ilk noktaya bir pointer koymaktadır. Sorgunun ilk kısmı doğrulandıktan sonra ikinci kısmının da doğrulanması gerekir. Yani yüzmeden hoģlanan kiģinin de bulunması gerekir. Sahis değiģkeni oktay değeri aldığı için artık sever(oktay, yuzme) gerçeğinin doğru olup olmadığı araģtırılır. Gerçekler incelenirse, oktay isimli Ģahsın yüzmeden hoģlanmadığı görülür. Bu durumda Prolog Sahis değiģkenine atadığı oktay değerini etkisiz hale getirir ve Sahis yeniden serbest hale gelir. Kuralın ilk kısmını doğrulayan gerçeği bulmak için Prolog bu kez kuralların baģından değil, gerçekler listesine daha önce yerleģtirmiģ olduğu pointer den aģağıya kadar doğru taramaya baģlar. Ġlk gerçek gereken Ģartları sağlayamadığı için artık dikkate alınmaz. Bu iģleme Geriye İz Sürme denir. Yapılan taramada okumadan hoģlanan kiģinin ismail olduğu görülünce Sahis değiģkeni bu kez ismail değerini alır. Kuralın ikinci kısmının doğrulanması için tarama yapılırsa, yüzme için gereken Ģartın yine ismail ile sağlandığı görülür. Dolayısıyla Prolog un vereceği cevap Ģu olur: Sahis=ismail 1 Solution Anonim Değişkenler Anonim değiģkenler, programların gereksiz bilgi ve satırlarla karmaģık hale gelmelerini engeller. Böylece bir sorgulamadan beklenilen bilgileri alabilir ve ihtiyaç olmayan değerler iptal edilmiģ olur. Prolog da anonim değiģkenler _ ile gösterilir. 14

25 AĢağıdaki örnekte anonim değiģkenin kullanımı verilmiģtir: PREDICATES erkek(symbol) bayan(symbol) nondeterm ebeveyn(symbol, symbol) CLAUSES erkek(selahattin). erkek(cihat). bayan(sacide). bayan(sezen). ebeveyn(selehattin, cihat). ebeveyn(sacide, cihat). ebeveyn(selehattin, sezen). GOAL ebeveyn(ebeveyn,_). Diğer değiģkenlerin yerine kullanılabilen anonim değiģkenlerin, normal değiģkenlerden tek farkları Ģudur: anonim değiģkenler hiçbir zaman bir değere eģitlenemezler. Yukarıdaki örnek yazdıktan sonra GOAL ebeveyn(ebeveyn,_) sorgusu çalıģtırılarak, ebeveyn olan kiģilerin isimleri öğrenilebilir. Çocukların isimleri istenmediği için isimlerinin yerine anonim değiģken kullanılmıģtır. Programın sonucunda Ģu sonuç görüntülenir: Ebeveyn=selehattin /*Cihat ın ebeveyni */ Ebeveyn=sacide /* Cihat ın ebeveyni*/ Ebeveyn=selehattin /* Sezen in ebeveyni*/ 2 solutions Tanımlanan değiģken anonim olduğu için, alınacak cevabın ikinci argümanla bağlantısı olmayacaktır. Anonim değiģkenler, gerçeklerin tanımlanmasında da kullanılabilir. vardir(_,televizyon). yemek_yer(_). 15

26 Ġfadeleri konuģma dilinde Herkesin televizyonu var ve Herkes yemek yer olarak çevrilebilir Hedefler (Sorgular) ġimdiye kadar Prolog a soru sormak anlamında kullanılan sorgulama kelimesinin yerine bu andan itibaren Hedef(Goal) kelimesi kullanılacaktır. Sorgulamaları hedef olarak tanımlamak daha anlamlıdır, çünkü Prolog a bir sorgu yöneltmekle, ona yerine getirilmesi gereken bir hedef verilmiģ olur. Hedefler sever(ismail, yuzme) gibi basit olabileceği gibi sever(sahis, okuma), sever(sahis, yuzme) gibi daha karmaģık da olabilir. Birden fazla parçadan oluģan hedefe Birleşik Hedef, her bir parçaya da alt hedef denir Birleşik Hedefler: Bağlaçlar ve Ayraçlar BirleĢik bir hedefin çözümünü bulmak için her iki alt hedefin doğru olması gerekir. Bu durumda, iki alt hedef arasında (ve) anlamına gelen, kullanılır. Fakat istenilen durumlarda alt hedeflerden sadece birinin doğru olması Ģartı da aranabilir. Bu durumda alt hedefler arasında (veya) anlamına gelen ; kullanılması gerekir. Bu duruma Ayırma işlemi denilmektedir. ġimdi bu durumu gösteren bir örnek inceleyelim: PREDICATES nondeterm araba(symbol,long,integer,symbol,long) nondeterm kamyon(symbol,long,integer,symbol,long) nondeterm arac(symbol,long,integer,symbol,long) CLAUSES araba(chrysler,130000,3,kirmizi,12000). araba(ford,90000,4,gri,25000). araba(datsun,8000,1,kirmizi,30000). kamyon(ford,80000,6,mavi,8000). kamyon(datsun,50000,5,sari,20000). kamyon(toyota,25000,2,siyah,25000). arac(marka,kilometresi,yas,renk,fiyat):- 16

27 araba(marka,kilometresi,yas,renk,fiyat); kamyon(marka,kilometresi,yas,renk,fiyat). GOAL araba(marka, Kilometresi, Kullanim_Suresi, Renk, 25000). Bu örnekteki hedef, cümleciklerde tarif edilen dolarlık arabayı bulur. Benzer Ģekilde; fiyatı dolardan daha az olan bir araba var mı? Ģeklindeki bir soruya cevap bulmak da mümkündür. Bunun için araba(marka, Kilometresi, Kullanim_Suresi, Renk, Fiyat), Fiyat< Ģeklindeki bir sorguyla bu sorunun cevabını bulmak mümkündür. Bu kuralı sorgulandığında, alınacak cevap chrysler olacaktır. ġimdi fiyatı dolardan az olan bir araba veya fiyatı dolardan daha az olan bir kamyon var mıdır? Ģeklindeki bir soruya uygun bir hedef yazalım: araba(marka, Kilometresi, Kullanim_Suresi, Renk, Fiyat), Fiyat< 25000; kamyon (Marka, Kilometresi, Kullanim_Suresi, Renk, Fiyat), Fiyat< Prolog ilk önce fiyatı dolardan daha az olan bir araba olup olmadığını araģtırır. Sonuç doğru olsun veya olmasın, ikinci alt hedef de araģtırılır. Her ikisinden birinin doğru olması durumunda alınacak cevap olumlu olacaktır. Hedefin doğrulanması için birden fazla alt hedefin aynı anda doğru olması gerekmez. Bu tür hedeflere ayrıştırma denilmektedir ve bunun için alt hedefler arasında ; ayracı kullanılmaktadır Açıklama Satırları Program yazarken program satırları arasına açıklamalar yazmak, baģkalarının da programı okuyup anlamasına imkan tanır. Program içerisine yazılan bu yorum satırları derleyici tarafından dikkate alınmaz. Prolog da yorum satırları bir kaç satırdan oluģacaksa /* ile baģlamalı ve */ ile bitmelidir. Eğer tek bir satır yorum yazılacaksa % iģareti kullanılabilir. /* Program yazarken kullanılan değiģkenler, yüklem ve kurallar*/ /*hakkında bilgi vermek için bu tür yorum satırları yazılabilir*/ %Tek satırlık yoruma bir örnek. /* Ġç içe /* yorum */ satırı yazmak da mümkündür*/ 17

28 2.14. Eşleştirme Prolog da eģleģtirme yapılırken eģlenik yapılar birbiriyle eģleģebilir. ebeveyn(selehattin, X), ebeveyn(sacide, cihat) kuralındaki X değiģkeni cihat değerini alır ve serbest olan bu değiģken artık bağlı hale gelir. Bağlı hale gelen baģka bir değiģkene atanırsa, diğer değiģken de aynı değeri alır Bölüm özeti 1. Prolog da bir program gerçekler ve kurallardan oluģan cümleciklerden oluģur. Gerçekler, doğru oldukları kabul edilen iliģkiler ve özelliklerdir. Kurallar bağımlı iliģkiler olup, gerçekler ve iliģkileri kullanarak bilgi elde etmeye yararlar. 2. Gerçeklerin genel yazılıģ biçimi Ģöyledir: ozellik(nesne1, nesne2,... nesnen) veya iliģki(nesne1, nesne2,... nesnen) Burada özellik nesnelerin herhangi bir özelliği, iliģki ise nesneler arasındaki herhangi bir iliģkidir. Özellik ve iliģki kelimelerinin her ikisi de Prolog da aynı anlamda kullanılır. 3. Bir programda verilen bir iliģki bir veya daha fazla nesne arasındaki iliģkiden ibarettir. sevmek(ahmet, futbol) gerçeğindeki sevmek bir iliģkiyi, ahmet ve futbol ise bu iliģkinin nesnelerini temsil eder. solak(hasan) gerçeğinde solak bir özelik, hasan ise bir nesnedir. 4. Kuralların genel yazılma Ģekli: BaĢ:-Gövde olup, daha açık hali aģağıdaki gibidir. iliģki(nesne, nesne,..., nesne) :- iliģki(nesne, nesne,..., nesne),.. iliģki(nesne, nesne,..., nesne). 18

29 5. ĠliĢki ve nesne isimlerinin yazılması bazı kurallara bağlıdır. Nesne ve iliģki isimleri daima küçük harfle baģlar. Bunu takiben istenilen sayıda büyük-küçük harf, rakam, _ kullanılabilir. 6. DeğiĢken isimleri daima büyük bir harf veya _ ile baģlar. Bunu takiben istenildiği kadar küçük_büyük harf, rakam vs. kullanılabilir. DeğiĢkenler bir değer almadan önce serbest, değer aldıktan sonra ise bağlı hale gelirler. Bir değiģkene değer atayıp bilgi depolamak mümkün değildir. Çünkü bir değiģken sadece bir cümlecikte bağımlıdır. 7. Bir sorgudan sadece belirli bir bilgi alınmak isteniyorsa, anonim değiģken (_) kullanılabilir. Anonim değiģkene hiçbir zaman değer atanması yapılamaz. 8. Prolog a programda verilen gerçeklere göre bir soru sormak Prolog Sistemini Sorgulama olarak adlandırılır ve bu sorguya Hedef denir. BileĢik bir hedef iki veya daha fazla hedeften oluģur. Bu parçaların her birine alt hedef adı verilir. BileĢik hedefler Bağlaç veya Ayraç Ģeklinde olabilir. 10. EĢleĢtirme birbirine denk yapılar arasında gerçekleģtirilir. Serbest bir değiģken bir sabite veya önceden değer alıp bağımlı hale gelmiģ baģka bir değiģkene atanabilir. Serbest olan iki değiģken birbirine atanırsa, birinin alacağı değer otomatik olarak diğerine atanmıģ olur. 19

30 3. VISUAL PROLOG PROGRAMLARININ TEMEL BÖLÜMLERİ Bir VIP Programı genelde Ģu dört bölümden oluģur: Clauses (Gerçekler ve Kurallar), Predicates (Yüklemler), Domains (DeğiĢken Tipleri) ve Goals(Hedefler) Clauses(Olgular veya Kurallar) Bu bölüm bir programın kalbi durumundadır. Çünkü programda tanımlı hedefler doğrulanmaya çalıģılırken, doğruluğu daha önceden bilinen gerçeklerden yola çıkılır. Gerçek ve gerçekler arasındaki iliģkileri tanımlayan kuralların tanımlandığı yer bu bölümdür. Bir yüklem için tanımlanması gereken bütün clauselar kümesine Procedure denir Predicates (Yüklemler) Yüklemlerin ve yüklemlerdeki argümanların tiplerinin tanımlandığı yer bu bölümdür. Visual Prolog da mevcut olan hazır yüklemlerin tanımlanması gerekmez Domains (Değişken Tipleri) Burada, Visual Prolog da olmayan tiplerin tanımlanması yapılır Goal (Hedef) Programdaki sorgular buraya yazılır Yüklem Tanımı Bir yüklemin genel yazılıģ biçimi Ģöyledir: yuklem_adi(argüman_tip1, argüman_tip2, argüman_tip3,..., argüman_tipn) Yüklemlerin bitiģ parantezinin clauses bölümündeki gibi. ile sonlanmadığına dikkat edilmelidir. Yüklem isimleri en fazla 250 karakterten oluģabilir ve herhangi bir harfle baģlayabilir. Yüklemler için isim seçilirken küçük veya büyük harfle baģlamak önemli değildir. Fakat küçük bir harfle baģlayan bir isim seçilmesi önerilir. Çünkü Prolog derleyicilerin çoğu ancak küçük harfle baģlayan yüklem isimlerini kabul etmektedir. Kullanılabilecek karakterler Ģunlardır: 20

31 Büyük harfler: A, B,..., Z Küçük harfler: a, b,..., z. Rakamlar: 0, 1,..., 9 Alt tire: _. Geçerli Yüklem Ġsimleri Olgu Oynar sahip_olunan_servet tahakkuk_fisi 10_kisilik_sinif Geçersiz Yüklem Ġsimleri [olgu] *gider* Sahiptir/araba bu-ayin-bordrosu <10-kisiden_biri Örnekler: domains isim=symbol numara=integer predicates ilk_yuklem(isim, numara) domains sahis, eylem=symbol araba, marka, renk=symbol kilometresi, kullanim_yili, fiyat=integer predicates sever(sahis, eylem) ebeveyn(sahis, sahis) satin_alabilir(sahis, araba) araba(marka, kilometresi, kullanim_suresi, renk, fiyat) yesil(symbol) derece(symbol, integer) Yukarıdaki program parçasında yüklem ve argümanların anlamları aģağıda verilmiģtir. 21

32 sever yüklemi iki argüman alır: sahis ve eylem. Bu argümanların her ikisi de değer olarak symbol, yani alfabetik karakterler alabilir. ebeveyn yükleminin iki argümanı da sahis olup, domainde tanımladığı Ģekliyle symbol tipindedir. satin_alabilir yüklemi tipi symbol olan sahis ve araba argümanlarını almıģtır. araba yüklemi 5 adet argüman almıģtır. Ġlk ikisinin tipi symbol, son üçünün ise integer dır (tamsayı). yesil yüklemi, tipi symbol olan tek bir argüman almıģtır. Symbol tipi zaten Visal Prolog un standart tipleri arasında yer aldığından, ayrıca tanımlamaya gerek yoktur. derece yükleminin argümanları da standart domain de yer almaktadır Domains (Tip tanımları) Bölümü Domain kısmında argümanların tipleri tanımlanır. Bir argüman alfabetik, nümerik veya her ikisinden oluģan karakterleri değer olarak alabilir. Domain kısmı, birbirinin aynısı gibi görünebilecek verilere farklı isimler vermemize imkan tanır. VIP programlarında iliģki veya gerçeklerde tanımlanmıģ olan nesneler (yüklemdeki argümanlar) domainlere aittir. Bu tipler standart olarak tanımlı olabileceği gibi, kullanıcı tarafından sonradan da tanımlanabilir. Domain kısmı son derece faydalı iki görev icra eder. Birincisi, yüklemlerde tanımlanan argümanların tipleri VIP de standart olarak tanımlamıģ olan symbol, tamsayı vs. domainleri olsalar bile, argümanlara farklı anlamlı isimler vermemize imkan tanır. Ġkincisi, standart domainler tarafından tanımlanmamıģ veri yapılarını tanımlanmasına imkan sağlar. Ayrıca, yüklemdeki argümanların net olarak anlatılabilmesi için farklı domainler olarak tanımlanması da faydalıdır. Örnekler: 1. AĢağıdaki tabii dil cümlesinin VIP de karģılığını yazıp, özel domain tanımı aģağıdaki Ģekilde yapılır. Hasan, 28 yaģında bir erkektir. 22

33 Eğer özel olarak domain tanımlanmazsa, yani VIP deki standart tipler kullanılırsa yukarıdaki cümle Ģöyle yazılabilir: sahis(symbol, symbol, integer) Bu yüklem ve argümanlar doğru biçimde tanımlandığı için çalıģır. Fakat sahis yüklemi içinde tanımlanan üç argümanın neye iģaret ettiğini hatırlamak zor olabilir. Bunun yerine: domains isim, cinsiyet = symbol yas = integer predicates sahis(isim, cinsiyet, yas) Ģeklinde üç ayrı domain tanımlanırsa sahis argümanındaki isim, cinsiyet ve yas argümanlarının anlamı her zaman için barizdir. Bu tanımlamanın bir faydası da argüman tipleri arasında olabilecek tip eģleģtirme hatalarını önlemektir. Özel domainler, argümanların anlamını çok daha iyi ifade ettikleri halde, bütün argümanlar için özel domain kullanmak gerekmez. Bir argüman için belli bir tip tanımlanması yapıldıktan sonra, bu argüman, tipi aynı olan bir baģka argümanla hiçbir Ģekilde karıģtırılmaz. Örneğin isim ve cinsiyet argümanlarının her ikisinin de tipi symbol olmasına rağmen birbiriyle karıģtırılmazlar. Fakat kullanıcının tanımladığı argümanların hepsi önceden tanımlanmıģ argümanlarla karıģtırılabilir. AĢağıdaki örnek, çalıģtırıldığı zaman bir tip hatası verir. DOMAINS carpma, toplam = integer PREDICATES toplama_yap(toplam, toplam, toplam) carpma_yap(carpma, carpma, carpma) CLAUSES toplama_yap(x, Y, Toplam):- Toplam=X+Y. carpma_yap(x, Y, Carpma):- Carpma=X*Y. 23

34 GOAL toplama_yap(32, 54, Toplam). Buradaki GOAL toplama_yap(32, 54, Toplam) doğru çalıģır ve Toplam=86 1 Solution cevabı alınır. Carpma_yap fonksiyonu için 35 ve 25 değerlerleri kullanılırsa, Carpma=875 1 Solution sonucu alnır. 31 ve 17 sayılarının çarpımını bulup, elde edilen sayıyı kendisiyle toplayıp Cevap argümanının değeri aģağıdaki Ģekilde bulunur. carpma_yap(31, 17, Toplam), toplama_yap(toplam, Toplam, Cevap) Ģeklinde bir hedef yazılabilir. Bu hedefe göre, bulunacak sonucun Toplam=527 (31*17), Cevap=1054 ( ) olması gerekirken, VIP derleyici bir hata mesajı verir. Çünkü carpma_yap fonksiyonundaki Toplam argümanı 527 değerini aldıktan sonra bu değeri ikinci yüklem olan toplama_yap taki ilk iki argümana taģımaya çalıģır. Her iki argüman da tamsayı tipinde olmasına rağmen farklı isimlerde olduklarından, birbirleriyle eģleģtirilemezler ve neticede hata mesajı görüntülenir. Bu yüzden bir cümledeki fonksiyonda tanımlanan değiģken birden fazla fonksiyonda kullanılacaksa, her fonksiyonda aynı Ģekilde tanımlanmalıdır. Örnek: DOMAINS marka, renk = symbol yas=byte fiyat, yol=ulong PREDICATES nondeterm araba(marka, yol, yas, renk, fiyat) CLAUSES araba(chrysler,130000,3,kirmizi,12000). araba(ford,90000,4,gri,25000). araba(datsun,8000,1,siyah,30000). 24

35 GOAL araba(renault, 13, 40000, kirmizi,12000). GOAL araba(ford, 90000, gri, 4, 25000). GOAL araba(1, kirmizi, 30000, 80000, datsun). Burada araba yükleminin 5 argümanı mevcuttur. Yas argümanı byte tipinde olduğu için alabileceği değer 8 bitlik ve arasında değiģen pozitif bir sayıdır. Aynı Ģekilde yol ve fiyat tipleri ulong (uzun tamsayı) olup 32-bit pozitif tamsayı değerleri alır. Son olarak marka ve renk tipleri symbol tipindedir. Yukarıdaki sorguları tek tek deneyince her birinin ayrı bir tip hatasına neden olduğu görülecektir. GOAL araba(renault, 13, 40000, kirmizi, 12000) sorgusunda byte tipinde olması gereken yas argümanı değerini almıģtır. Bunun arasında olması gerekir. Ġkinci sorguda yas ve renk argümanlarının değerleri yer değiģtirmiģtir. Bu nedenle yine hataya neden olur Goal Bölümü Goal bölümünün bir kuralın yapısından sadece iki farkı vardır. 1. Goal kelimesinden sonra if anlamındaki :- operatörü kullanılamaz. 2. Program çalıģırken VIP ilk önce GOAL satırını çalıģtırır Deklarasyon ve Kurallara Ayrıntılı Bakış Bir yüklemdeki argümanların tiplerini tanımlarken, VIP de hazır bulunan standart tipler kullanılabilir. Bu tiplerin domains kısmında, ayrıca tanımlanması gerekmez. AĢağıdaki tabloda hazır olarak bulunan tipler verilmiģtir (Tablo 1). Tablo 3.1: Visual Prolog da Tipler ve Alabilecekleri değerler. Tip Kullanıldığı Yer Değer Aralığı short Bütün Platformlar 16 Bit Ushort Bütün Platformlar 16 Bit Long Bütün platformlar 32 bit Ulong Bütün platformlar 32 bit İnteger (Bilgisayar ve Mimariye bağlı olarak - veya + değer alabilir) 16 Bit Platformlar 32 Bit platformlar 16 Bit 32 Bit Unsigned (Bilgisayar ve mimariye bağlı olarak -/+ değer alabilir) 16 Bit Platformlar 32 Bit platformlar 16 Bit 32 Bit byte Bütün platformlar 8 bit Word Bütün platformlar 16 bit Dword Bütün platformlar 32 bit

Uygulamalı Yapay Zeka. Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş

Uygulamalı Yapay Zeka. Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş Uygulamalı Yapay Zeka Dr. Uğur YÜZGEÇ Ders 2: Prolog Giriş Prolog Yazılımı Bedava Prolog yorumlayıcıları var Linux, Windows, Mac OS Çok fazla sayıda Prolog yazılımı indirmek mümkün Bunlardan birkaçı SWI

Detaylı

Program AkıĢ Kontrol Yapıları

Program AkıĢ Kontrol Yapıları C PROGRAMLAMA Program AkıĢ Kontrol Yapıları Normal Ģartlarda C dilinde bir programın çalıģması, komutların yukarıdan aģağıya doğru ve sırasıyla iģletilmesiyle gerçekleģtirilir. Ancak bazen problemin çözümü,

Detaylı

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler C Programlama Dr. Serkan DİŞLİTAŞ 3.1. Sabitler Sabitler, tanımlanmasıyla birlikte program içerisinde

Detaylı

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:

Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir: FORTRAN (FORmula TRANslation) Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir: 1 2...5 6 7...72 73...80 A B C D E A Bölgesi: (1. kolon) B Bölgesi: (2-5

Detaylı

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili

Dekleratif Programlama. Örnek : Aile Ağacı. SWI-Prolog. Prolog Dekleratif programlama dili Prolog Programlarının özellikleri: PROgrammig in LOGic Semboller üzerinde çalışma Problemlerin çözümünü tanımlama yerine çıkarım yapma Doğal ğ dille düşünülen ş şeylerin y kodlanması kolay Gerçekler ve

Detaylı

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n

Program akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n KONTROL DEYİMLERİ Kontrol deyimleri bir programın normal akıģını değiģtirmek için kullanılır. Aksi söylenmedikçe programın komut satırları birbiri ardına çalıģtırılır. Program içindeki yapılan sorgulamalara

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

PROGRAMLAMAYA GİRİŞ DERS 2 PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

PASCAL PROGRAMLAMA DİLİ YAPISI BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama

Detaylı

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne

Detaylı

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu. Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html

Detaylı

C Programlama Dilininin Basit Yapıları

C Programlama Dilininin Basit Yapıları Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade

Detaylı

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler C# Programlama Dili İlk programımız Tür dönüşümü Yorum ekleme Operatörler 1 İlk Programımız Bu program konsol ekranına Merhaba dünya! yazıp kapanır. Programı geçen derste anlatıldığı gibi derleyin, sonra

Detaylı

VERİ TABANI I. Yrd.Doç.Dr. İlker ÜNAL. Teknik Bilimler Meslek Yüksekokulu

VERİ TABANI I. Yrd.Doç.Dr. İlker ÜNAL. Teknik Bilimler Meslek Yüksekokulu VERİ TABANI I Yrd.Doç.Dr. İlker ÜNAL Teknik Bilimler Meslek Yüksekokulu Veri Tabanı Bileşenleri Tablolar : Veritabanının temel nesnesi tablolardır. Bilgilerin asıl tutulduğu yer tablodur. Diğer veritabanı

Detaylı

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA

1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA BÖLÜM15 D- VERİ TABANI PROGRAMI 1. VERİ TABANI KAVRAMLARI VE VERİ TABANI OLUŞTUMA 1.1. Veri Tabanı Kavramları Veritabanı (DataBase) : En genel tanımıyla, kullanım amacına uygun olarak düzenlenmiş veriler

Detaylı

Diziler İndisli Değişkenler

Diziler İndisli Değişkenler Diziler İndisli Değişkenler Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;

Detaylı

TEMEL BİLGİSAYAR BİLİMLERİ

TEMEL BİLGİSAYAR BİLİMLERİ TEMEL BİLGİSAYAR BİLİMLERİ Doç. Dr. M.Ümit GÜMÜŞAY YTÜ - 2012 2 PROGRAMLAMA MANTIĞI Herhangi bir amaç için hazırlanan programın mantık hataları içermesi durumunda, alınacak sonucunda yanlış olacağı aşikardır.

Detaylı

ENF182 Temel Bilgisayar Bilimleri Ö Ğ R. G Ö R. G Ö K H A N K U T L U A N A

ENF182 Temel Bilgisayar Bilimleri Ö Ğ R. G Ö R. G Ö K H A N K U T L U A N A ENF182 Temel Bilgisayar Bilimleri Ö Ğ R. G Ö R. G Ö K H A N K U T L U A N A F O N K S Ġ Y O N L A R Temel Fonksiyonlar Matematiksel Fonksiyonlar Ġstatiksel Fonksiyonlar Metinsel Fonksiyonlar Tarih Fonksiyonları

Detaylı

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?

Detaylı

Akış Kontrol Mekanizmaları

Akış Kontrol Mekanizmaları Akış Kontrol Mekanizmaları 1 Akış Kontrol Mekanizmaları if else switch for döngüsü for döngüsünün çalışma prensibi for döngüsüyle ilgili örnekler for döngüsüyle ilgili kurallar while döngüsü while döngüsünün

Detaylı

Lambda İfadeleri (Lambda Expressions)

Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri (Lambda Expressions) Lambda İfadeleri, değişkenlere değer atamak için kullanılan sadeleştirilmiş anonim (isimsiz) fonksiyonlardır. Bu fonksiyonlar matematikteki ve bilgisayar bilimlerindeki

Detaylı

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1 Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)

Detaylı

Bulanık Mantığa Giriş

Bulanık Mantığa Giriş Bulanık Mantığa Giriş J E O L O J Ġ M Ü H E N D Ġ S L Ġ Ğ Ġ A. B. D. E S N E K H E S A P L A M A Y Ö N T E M L E R Ġ - I D E R S Ġ DOÇ. DR. ERSAN KABALCI BULANIK MANTIK Klasik mantık sistemleri, sadece

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları SABİTLER VE DEĞİŞKENLER Değişken, verilerin bellekte geçici olarak kaydedilmesini ve gerektiğinde kullanılmasını sağlayan değerdir. Nesne tabanlı programlama dilinde değişken kullanımı diğer programlama

Detaylı

Algoritma ve Akış Diyagramları

Algoritma ve Akış Diyagramları Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları

Detaylı

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay.

PROGRAMLAMAYA GİRİŞ. Öğr. Gör. Ayhan KOÇ. Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay. PROGRAMLAMAYA GİRİŞ Öğr. Gör. Ayhan KOÇ Kaynak: Algoritma Geliştirme ve Programlamaya Giriş, Dr. Fahri VATANSEVER, Seçkin Yay., 2007 Algoritma ve Programlamaya Giriş, Ebubekir YAŞAR, Murathan Yay., 2011

Detaylı

MTM 305 MĠKROĠġLEMCĠLER

MTM 305 MĠKROĠġLEMCĠLER KARABÜK ÜNĠVERSĠTESĠ TEKNOLOJĠ FAKÜLTESĠ MEKATRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ MTM 305 MĠKROĠġLEMCĠLER ArĢ. Gör. Emel SOYLU ArĢ. Gör. Kadriye ÖZ Assembly Dili Assembly programlama dili, kullanılan bilgisayar

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

ELN1001 BİLGİSAYAR PROGRAMLAMA I ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave

Detaylı

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları

4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları 4- Turbo Pascal Bilgisayar Programlamada Kullanılan Şart Yapıları Şart yapıları bir bilgisayar programının olmazsa olmazlarındandır. Şart yapıları günlük hayatımızda da çok fazla karşılaştığımız belirli

Detaylı

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI

BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI C programlama dilinde, diğer programlama dillerinde olduğu gibi, işlemler, ilk satırdan başlamak üzere sırayla çalışır. Program kontrol yapıları ise, programın

Detaylı

Seri No Takibi İÇERİK

Seri No Takibi İÇERİK Doküman Kodu : TNS008 İlk Yayın Tarihi : Mart 2018 Revizyon Tarihi : Mart 2018 Revizyon No : 1 İÇERİK GENEL BĠLGĠ SERĠ NO TAKĠBĠ Seri No Seri No Parametre Seçimi ile Stok menü Stok kart Alım genel parametreleri

Detaylı

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1

Ders Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1 Ders Tanıtım Sunumu Internet Programming II Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı Öğr. Gör. Murat KEÇECİOĞLU 1 PHP Program Yapısı Php çoğunlukla HTML etiketleri arasına gömülerek kullanılır.

Detaylı

2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI

2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI 2013-14 GÜZ YY. - MKT103 - GÖRSEL PROGRAMLAMA DERSİ - ARA SINAVI KOÜ Mekatronik Mühendisliği Bölümü/MKT-103-Görsel Programlama Dersi - Ara Sınav J-grubu Ad-Soyad:...No:... J GRUBU-süre:70dk 1.) Aşağıdaki

Detaylı

KÜMELER 05/12/2011 0

KÜMELER 05/12/2011 0 KÜMELER 05/12/2011 0 KÜME NEDİR?... 2 KÜMELERİN ÖZELLİKLERİ... 2 KÜMELERİN GÖSTERİLİŞİ... 2 EŞİT KÜME, DENK KÜME... 3 EŞİT OLMAYAN (FARKLI) KÜMELER... 3 BOŞ KÜME... 3 ALT KÜME - ÖZALT KÜME... 4 KÜMELERDE

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar

Detaylı

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı

Detaylı

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

enum bolumler{elektronik, insaat, bilgisayar, makine, gida}; BÖLÜM 12: Giriş C programlama dilinde programcı kendi veri tipini tanımlayabilir. enum Deyimi (Enumeration Constants) Bu tip, değişkenin alabileceği değerlerin belli (sabit) olduğu durumlarda programı

Detaylı

VERİ TABANI YÖNETİM SİSTEMLERİ I

VERİ TABANI YÖNETİM SİSTEMLERİ I BÖLÜM 11 11. SQL de JOIN (BİRLEŞTİRME) İŞLEMİ 11.1. JOIN (Birleştirme) İşlemi Veri tabanı kayıtları oluşturulurken bütün bilgiler bir tabloda değil de, birkaç tablo üzerinde tutulur. Bu dataların daha

Detaylı

Göstericiler (Pointers)

Göstericiler (Pointers) C PROGRAMLAMA Göstericiler (Pointers) C programlama dilinin en güçlü özelliklerinden biridir. Göstericiler, işaretçiler yada pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin

Detaylı

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) { Fonksiyonlar Kendi içinde bağımsız olarak çalışabilen ve belli bir işlevi yerine getiren program modülleridir. C programları bu modüllerden (fonksiyonlar) oluşurlar. Fonksiyonların yazılmasındaki temel

Detaylı

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz.

Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz. Ders-2: ---------- Bu dersimizde pic pinlerinin nasıl input yani giriş olarak ayarlandığını ve bu işlemin nerelerde kullanıldığını öğreneceğiz. Hazırlanan programlarda pic in zaman zaman dış ortamdan bilgi

Detaylı

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0 Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Bitirme Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 01.06.2017 Süre : 60 dak. 1. t değişkeni hakkında aşağıdakilerden

Detaylı

Veritabanı. SQL (Structured Query Language)

Veritabanı. SQL (Structured Query Language) Veritabanı SQL (Structured Query Language) SQL (Structured Query Language) SQL, ilişkisel veritabanlarındaki bilgileri sorgulamak için kullanılan dildir. SQL, bütün kullanıcıların ve uygulamaların veritabanına

Detaylı

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir. İST 205 Bilgisayar Programlama III C Programlamaya Giriş ve Matematiksel-İstatistiksel Uygulamalar Y.Doç.Dr. Levent Özbek Ankara Üniversitesi Fen Fakültesi İstatistik Bölümü Tel: 0.312.2126720/1420 ozbek@science.ankara.edu.tr

Detaylı

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir. MATRİS TRANSPOZU: Bir matrisin satırlarını sütun, sütunlarınıda satır yaparak elde edilen matrise transpoz matris denilir. Diğer bir değişle, eğer A matrisi aşağıdaki gibi tanımlandıysa bu matrisin transpoz

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 22.03.2011 1 Yapılar ( Structures ) Yapılar ( structures ); tam sayı, karakter vb. veri tiplerini gruplayıp, tek bir çatı altında toplar. Bu gruplandırma içinde aynı ya da farklı veri

Detaylı

C#(Sharp) Programlama Dili

C#(Sharp) Programlama Dili Değişkenler C#(Sharp) Programlama Dili Program yazarken her zaman sabit verilerle çalışmayız, çoğu zaman programımızda bir verinin kullanıcının davranışına göre değişmesi gerekir. Kullanıcıdan bir metin

Detaylı

1 PROGRAMLAMAYA GİRİŞ

1 PROGRAMLAMAYA GİRİŞ İÇİNDEKİLER IX İÇİNDEKİLER 1 PROGRAMLAMAYA GİRİŞ 1 Problem Çözme 1 Algoritma 1 Algoritmada Olması Gereken Özellikler 2 Programlama Dilleri 6 Programlama Dillerinin Tarihçesi 6 Fortran (Formula Translator)

Detaylı

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak:  Published by Juan Soulié Kullanılacak kaynak: http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié C++ Nedir? Arttırılmış C demektir ve C dilinin geliştirilmiş halini yansıtır. C++ öğrenmeden önce herhangi bir programlama

Detaylı

Sorguların Çalışması. Kurallar. ?-anne(ayse,ahmet). ?-anne(ayse,ahmet). Geriye Doğru İz Sürme

Sorguların Çalışması. Kurallar. ?-anne(ayse,ahmet). ?-anne(ayse,ahmet). Geriye Doğru İz Sürme Örnek : Aile Ağacı Kural oluşturmak Ahmet in annesi yada babası kimdir? Bilgi tabanımızda anne yada baba diye bir ilişki ş tanımlı değil. Bunlar tek tek tanımlanabilir. Fakat bu pek anlamlı olmaz. anne(ayse,fatma).

Detaylı

Internet Programming II

Internet Programming II Internet Programming II Elbistan Meslek Yüksek Okulu 2016 2017 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU 1 PHP Program Yapısı Php çoğunlukla HTML etiketleri arasına gömülerek kullanılır. Form işlemleri

Detaylı

6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr

6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 6. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II Öğr.Gör. Hakan YILMAZ hakanyilmaz@karabuk.edu.tr Karabük Üniversitesi Uzaktan Eğitim Uygulama ve Araştırma Merkezi 2 İçindekiler For Each... Next... 3 Döngüyü

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

Sunum İçeriği. Programlamaya Giriş 22.03.2011 Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon

Detaylı

Özyineleme (Recursion)

Özyineleme (Recursion) C PROGRAMLAMA Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme,

Detaylı

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak

Detaylı

VERİ YAPILARI VE PROGRAMLAMA (BTP104)

VERİ YAPILARI VE PROGRAMLAMA (BTP104) VERİ YAPILARI VE PROGRAMLAMA (BTP104) Yazar: Doç.Dr. İ. Hakkı CEDİMOĞLU S1 SAKARYA ÜNİVERSİTESİ Adapazarı Meslek Yüksekokulu Bu ders içeriğinin basım, yayım ve satış hakları Sakarya Üniversitesi ne aittir.

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Koşul Karşılaştırma Operatörleri Mantıksal

Detaylı

Algoritma ve Programlamaya Giriş

Algoritma ve Programlamaya Giriş Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Kodlarına Yorum Satırı Eklemek Java Paket Kavramı Java Kütüphane Kavramı Konsoldan Veri Çıkışı ve JOPtionPane Kütüphanesi JOptionPane Kütüphanesi Kullanarak

Detaylı

Veri Yapıları ve Algoritmalar

Veri Yapıları ve Algoritmalar 1 Ders Not Sistemi Vize : % 40 Final : % 60 Kaynaklar Kitap : Veri Yapıları ve Algoritma Temelleri Yazar: Dr. Sefer KURNAZ Internet Konularla ilgili web siteleri 2 Algoritma : «Belirli bir problemin çözümünde

Detaylı

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe Bit, Byte ve Integer BIL-304: Bilgisayar Mimarisi Dersi veren öğretim üyesi: Dr. Öğr. Üyesi Fatih Gökçe Ders kitabına ait sunum dosyalarından adapte edilmiştir: http://csapp.cs.cmu.edu/ Adapted from slides

Detaylı

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir.

Toplama işlemi için bir ikili operatör olan artı işareti aynı zamanda tekli operatör olarak da kullanılabilir. www.csharpturk.net Türkiye nin C# Okulu Yazar Yunus Özen Eposta yunus@yunus.gen.tr Tarih 08.04.2006 Web http://www.yunusgen.tr ARİTMETİK OPERATÖRLER VE KULLANIM ŞEKİLLERİ Bilgisayarlar yapıları gereği,

Detaylı

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı Öğr. Gör. Cansu AYVAZ GÜVEN NESNE TABANLI PROGRAMLAMA Java Değişkenler ve Veri Tipleri Operatörler JAVA Java Java SUN bilgisayar şirketince

Detaylı

Prolog da Veri Türleri. Prolog la 4.Hafta. Atom lar (2) Atom lar (1)

Prolog da Veri Türleri. Prolog la 4.Hafta. Atom lar (2) Atom lar (1) Prolog da Veri Türleri Prolog la 4.Hafta Prolog bir veri türünü onun şeklinden tanır. Prolog herhangi bir veri tanımına ihtiyaç duymaz. 2 Atom lar (1) Atom lar aşağıdakilerde oluşan string lerdir. Büyük

Detaylı

Regular Expressions Version 0.1

Regular Expressions Version 0.1 Regular Expressions Version 0.1 Hüseyin Kaya hkaya@be.itu.edu.tr 2001 Özet Bu belge Linux and Unix Shell Programming adlı kitaptan faydalalınarak yazılmıştır. Kitabın yazarı David Tansley. İngilizce bilenler

Detaylı

KAYITLAR BÖLÜM 14. 14.1 Giriş

KAYITLAR BÖLÜM 14. 14.1 Giriş BÖLÜM 14 KAYITLAR 14.1 Giriş Bir kayıt, bir nesneyle ilgili verilerin bir araya getirilmesidir. Öğrenci kayıtları, taşıt kayıtları, stok kayıtları günlük yaşantımızda karşılaştığımız yaygın kayıtlardır.

Detaylı

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net

Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Bilgisayar Programlama Ders 6 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyon Prototipleri Fonksiyon Prototipleri Derleyici, fonksiyonların ilk hallerini (prototiplerini)

Detaylı

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım

Yazılım Çeşitleri. Uygulama Yazılımları. İşletim Sistemleri. Donanım Yazılım Yazılım Bilgisayarlar üretildikleri anda içlerinde herhangi bir bilgi barındırmadıkları için bir işlevleri yoktur. Bilgisayarlara belirli yazılımlar yüklenerek işlem yapabilecek hale getirilirler.

Detaylı

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler

3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 1 (Değerler, Değişkenler, İşleçler, Tip Dönüşümleri, Mantıksal Operatörler) Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler

Detaylı

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER, C++ İÇİN UFAK HATIRLATMALAR Değişken adları bir harf ile başlamalıdır. (a-z, A-Z). Değişken adı numara içerebilir.

Detaylı

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ http://www.cplusplus.com/doc/tutorial/ Published by Juan Soulié DERSİN WEB SİTESİ: http://nucleus.istanbul.edu.tr/~bilprog2/ DeğiĢkenler ve Data Türleri

Detaylı

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Kontrol Yapıları if Seçme Deyimi if... else Seçme Deyimi while Tekrar

Detaylı

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod) 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 3 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod) Yrd. Doç. Dr. İbrahim Küçükkoç Web: ikucukkoc.baun.edu.tr

Detaylı

Bilgisayar Programlama MATLAB

Bilgisayar Programlama MATLAB What is a computer??? Bilgisayar Programlama MATLAB Prof. Dr. İrfan KAYMAZ What Konular is a computer??? MATLAB ortamının tanıtımı Matlab sistemi (ara yüzey tanıtımı) a) Geliştirme ortamı b) Komut penceresi

Detaylı

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1 Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit

Detaylı

PROGRAMLAMA ALGORĠTMA

PROGRAMLAMA ALGORĠTMA PROGRAMLAMA Programlama Nedir? Bir iģi yapmak için gerekli iģlemlerin tespit edilmesi, tanımlanması ve bu iģlerin sırasının bilinmesidir. Programlama Basamakları: 1- Problemi Tanıma: Programın programcı

Detaylı

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ 3. Hafta YAPILAR Farklı veri tipindeki bilgilerin bir araya gelerek oluşturdukları topluluklara yapı (structure) denir. Yani yapılar, birbiriyle ilişkili değişkenlerin

Detaylı

Bilgisayarda Programlama. Temel Kavramlar

Bilgisayarda Programlama. Temel Kavramlar Bilgisayarda Programlama Temel Kavramlar KAVRAMLAR Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarın anlayabileceği bir biçime dönüştürülmesi / ifade edilmesidir. Bunu

Detaylı

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri

Detaylı

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1

Öğr. Gör. Serkan AKSU http://www.serkanaksu.net. http://www.serkanaksu.net/ 1 Öğr. Gör. Serkan AKSU http://www.serkanaksu.net http://www.serkanaksu.net/ 1 JavaScript JavaScript Nedir? Nestcape firması tarafından C dilinden esinlenerek yazılmış, Netscape Navigator 2.0 ile birlikte

Detaylı

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2 PROGRAMLAMA Bir problemin çözümü için belirli kurallar ve adımlar çerçevesinde bilgisayar ortamında hazırlanan komutlar dizisine programlama denir. Programlama Dili: Bir programın yazılabilmesi için kendine

Detaylı

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları 8- Turbo Pascal Programlama İle Dosya İşlemleri Dosya işlemleri bilgisayar programlamada verilerin tekrar kullanılması açısından çok önemlidir. Yazılan bilgisayar programlarında elde edilen sonuçlar eğer

Detaylı

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap

Detaylı

Algoritmalar ve Programlama. Algoritma

Algoritmalar ve Programlama. Algoritma Algoritmalar ve Programlama Algoritma Algoritma Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü

Detaylı

ALP OĞUZ ANADOLU LİSESİ EĞİTİM ÖĞRETİM YILI BİLGİSAYAR BİLİMİ DERSİ 2.DÖNEM 2.SINAV ÖNCESİ ÇALIŞMA SORULARI VE YANITLARI

ALP OĞUZ ANADOLU LİSESİ EĞİTİM ÖĞRETİM YILI BİLGİSAYAR BİLİMİ DERSİ 2.DÖNEM 2.SINAV ÖNCESİ ÇALIŞMA SORULARI VE YANITLARI ALP OĞUZ ANADOLU LİSESİ 2017-2018 EĞİTİM ÖĞRETİM YILI BİLGİSAYAR BİLİMİ DERSİ 2.DÖNEM 2.SINAV ÖNCESİ ÇALIŞMA SORULARI VE YANITLARI Doğru yanıtlar kırmızı renkte verilmiştir. 1. Problemlerin her zaman sıradan

Detaylı

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8 BTP 27 İNTERNET PROGRAMCILIĞI I Ders 8 Değişkenler 2 Tamsayı Değerler (Integer) Tamsayılar, tabanlı (decimal), 8 tabanlı (octal) veya 6 tabanlı (hexadecimal) olabilir. 8 tabanındaki sayıları belirtmek

Detaylı

Nesne Tabanlı Programlama

Nesne Tabanlı Programlama Nesne Tabanlı Programlama Ders Notu - 1 Dicle Üniversitesi Mühendislik Fakültesi Elektrik Elektronik Mühendisliği Bölümü 1 Değerler ve Değişkenler Values & Variables 2 1 Değişkenlerin Özellikleri Tipi

Detaylı

mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar

mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar Algoritma ve Programlamaya Giriş mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar İçerik Algoritma Akış Diyagramları Programlamada İşlemler o o o Matematiksel Karşılaştırma Mantıksal Programlama

Detaylı

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon

Dinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon Dinamik Kodlama Ürün Grubu Kategori Versiyon Önkoşulu [X] Fusion@6 [X] Yeni Fonksiyon @6 Uygulama @6 Serisi ürünlerde, kullanıcı arabirimlerinin her yerine eklenen dinamik kodlama özelliği ile, programın

Detaylı

Veri Tabanı-I 2.Hafta

Veri Tabanı-I 2.Hafta Veri Tabanı-I 2.Hafta Varlık-İlişki Modeli ( Entity-Relationship (E-R) Model ) 1 Varlık-İlişki (E-R) Modeli Varlık (Entity) : Diğer nesnelerden ayırt edilebilen tekil (unique) nesnedir. (Soyut (SĠPARĠġ)

Detaylı

ALGORİTMA VE PROGRAMLAMA II

ALGORİTMA VE PROGRAMLAMA II ALGORİTMA VE PROGRAMLAMA II Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1102 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Yapılar ve Birlikler enum Deyimi

Detaylı

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü

JAVA DÖNGÜ DEYİMLERİ. For Döngüsü JAVA DÖNGÜ DEYİMLERİ Belirli bir iş bir çok kez tekrarlanacaksa, programda bu iş bir kez yazılır ve döngü deyimleriyle istenildiği kadar tekrarlanabilir. Java da bu işi yapan üç ayrı deyim vardır: while

Detaylı

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri

ORACLE DA KÜRSÖRLER. Gerekli sistem değişkenleri ORACLE DA KÜRSÖRLER Gerekli sistem değişkenleri SQL%ISOPEN : kürsör açıksa değeri true, kapalı ise değeri false SQL%ROWCOUNT : sql ile işlem gören kayıt sayısı bulunur. SQL%FOUND : sql işlemi sonucu, en

Detaylı

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak. Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü Final Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :09.01.2013, 60 dak. Dikkat!!! Soru kitapçığında ve

Detaylı

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma TEMEL BİLGİSAYAR BİLİMLERİ Programcılık, problem çözme ve algoritma oluşturma Programcılık, program çözme ve algoritma Program: Bilgisayara bir işlemi yaptırmak için yazılan komutlar dizisinin bütünü veya

Detaylı

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1 BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1 Ekrana Metin Yazdırmak Ekranda metin yazdırmak istendiğinde print komutu kullanılır. Kullanımı aşağıda verilmiştir. Parantez içinde

Detaylı

Internet Programming II

Internet Programming II Internet Programming II Elbistan Meslek Yüksek Okulu 2016 2017 Bahar Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU Kontrol deyimleri programlamanın olmazsa olmaz koşullarındandır. Şartlara (karşılaştırma) bağlı

Detaylı