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

Download "http://alikoker.name.tr"

Transkript

1 Lispi bu kadar güçlü kılanın ne olduğunu hiç merak ettiniz mi? Şimdi bunu kendiniz keşfedebilirsiniz- Üstelik bunu yapmak için bilgisayarınıza hiçbir şey yüklemenize gerek yok! A COMIC BOOK By Conrad Barski, M.D. LISPERATI.COM Bu belge İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümü öğrencisi Seda Çelebican tarafından Türk diline çevrilmiştir. Belgenin Türk kültürüne uyarlanmasında ve genel editörlük işlemlerinde İstanbul Bilgi Üniversitesi emba Yazılım Geliştirme ekibinden Emre Sevinç emek harcamıdştır. Bu süreçte çok titiz eleştirileri, geri beslemeleri ile bize yardımcı olan Bilkent Bilgisayar Mühendisliği bölümü öğrencilerinden Hayrettin Gürkök'e ve Lisp konusunda yardımcı

2 olan Bülent Murtezaoğlu'na teşekkürü bir borç biliriz. Belgedeki hatalardan çevirmen ve editör sorumludur. Orjinal belgenin yazarı Dr. Conrad Barski hiçbir maddi hatadan ötürü sorumlu tutulamaz. Belgeyle ilgili tartışma için fazlamesai.net adresini kullanabilirsiniz. Lisp ile programlama yapmayı öğrenmiş herhangi biri size onun diğer tüm programlama dillerinden farklı olduğunu söyleyecektir. O, pek çok bakımdan şaşırtıcı derecede farklıdır- Bu çizgi roman size Lispin eşsiz tasarımının onu nasıl güçlü kıldığını gösterecek. Bu kılavuzda ufak tefek Lisp kodları vardır ve bu font ve renktedir... sadece bu kod parçacıklarını Lisp derleyicisinin komut satırına kopyalayın ve bu kılavuzun sonuna eriştiğinizde kendinize ait bir macera oyununuz olacak! Kullanabileceğiniz pek çok muhteşem Lisp derleyicisi vardır, ancak bu kılavuzla birlikte en kolay kullanabileceğiniz Franzın Allegro Common Lispidir.Bu çok güçlü ticari Lisp, Franz,Inc. tarafından nezaketle bir telnet ortamından erişilebilir hale getirildi, yani bilgisayarınıza hiçbir yazılım yüklemeden onu BURADAN kullanabilirsiniz. Sadece bağlantıya tıklayın ve tarayıcınız size ihtiyacınız olan her şeyi sunan bir telnet penceresi açacaktır!

3 (Kullanmayı sevdiğim bir diğer Lisp ise açık kaynak CLISPtir, eğer Lisp ile çok zaman geçirmeyi düşünüyorsanız bunu indirmeyi tercih edebilirsiniz.) Eğer Allegro Common Lisp kullanıyorsanız lütfen Lisp komut satırından şu satırı çalıştırın: (setf tpl:*print-length* nil)...sadece yazıyı tarayıcınızdan kopyalayın, sonra telnet penceresinde sağ tıklayıp Yapıştırı (Paste) seçin. Bu satırın üzerinde fazla durmayın- sadece Allegronun metin tabanlı macera oyunumuzun bastığı mesajları silmesini engelliyor.

4 Sözdizim ve Anlamlandırma Her bilgisayar dilinin sözdizim ve anlamlandırma'dan olusan bir kodu vardır. Programlama dilinin sözdizim'i, programın takip etmesi gereken en temel iskeleti oluşturur böylece derleyici programınızın içinde neyin ne, neyin fonksiyon neyin değişken, olduğunu anlar. Bir programın anlamlandırması biraz daha gelişigüzel olan kısmıdır, mesela mevcut değişik komutlar ve programın herhangi bir anında bakabileceğiniz değişkenler. Lisp'i özel kılan ilk şey başlıca programlama dilleri arasında en basit sözdizimine sahip olmasıdır. Kısaca, Lisp sözdizim'i der ki; Lisp derleyicisine girilen her metin listeler halinde düzenlenmeli, bunlar da listelerin listesi olarak ya da gereğince düzenlenir. Parantezler her listenin başını ve sonunu belirler: Ayrıca Lisp derleyicisi kodunuzu okurken iki kip kullanır: Kod Kipi ve Veri Kipi, listelerinize istediğiniz her şeyi koyabilirsiniz. Ancak derleyici kodunuzu okurken önce Kod Kipinden başlar- Kod Kipinde, listeleriniz "form" adı verilen özel listelerden olmalıdır:

5 Form, ilk sembolü derleyicinin anlayabileceği özel bir kelime olan liste olarak düşünülebilir; söz konusu ilk sembol genellikle bir fonksiyonun adı olur. Bu durumda derleyici diğer elemanları fonksiyona parametre olarak gönderir. Genellikle, siz veri kipine geçmesini söylemediğiniz sürece, bu parametrelerin de Kod Kipi'nde olduğunu varsayar. Oyun Dünyamız için Verileri Tanımlamak Formlar hakkında daha fazla bilgi edinmek için oyun dünyamızın verilerini oluşturacak formları yaratalım. Oynumuzda oyuncunun alıp kullanabileceği objeler olacak, öncelikle bu objeleri tanımlayalım: (setf *nesneler* '(viski-sisesi kova kurbaga zincir)) Şimdi bu satırı parçalara bölelim ve ne dediğine bakalım: Bir Lisp derleyicisi hep Kod Kipinde okumaya başlar ve bir form bekler, yani ilk sembol, setf, bir komut olmalıdır. Bu durumda komut, değişkene bir değer atamaktadır: Değişken *nesne*dir (Lispçiler global değişkenleri iki yıldız arasına yazmayı severler) ve onu eşitlediğimiz değer de dört nesneli listemiz.şimdi, listemiz veri tipinde olduğu için (derleyicinin viski-sisesi isimli bir fonksiyonu çağırmaya çalışmasını istemiyoruz yani) derleyiciyi listeyi okurken Veri Kipine döndürmemiz gerekiyor. Listenin önündeki kesme işareti derleyiciye dönmesini söyleyen komuttur:

6 Komutun neden setf olarak isimlendirildiğini merak ediyor olabilirsiniz. Açıkçası ben de pek emin değilim ama fark edeceksiniz ki Lispte pek çok komutun garip isimleri var, ne de olsa Lisp çok eski bir dil. Bu aslında yararlı bir durum, genel komutların Lisp sürümleri Lispe özel tüm zarif güçlerine sahiptir yani bu garip isimler Lispteki komutlarla diğer dillerdeki komutların karışmasını engeller. Mesela setf komutu bu klavuzda değinebileceğimizin ötesinde becerilere sahiptir. Şimdi dünyamızdaki bazı nesneleri tanımladık, bir adım daha ileri gidip dünyanın gerçek halini tanımlayalım. Dünyamızın neye benzediğine ilişkin resim: Bu basit oyunda sadece üç değişik mekan olacak: oturma odası ve çatı katı ile bahçesi olan bir ev. Bu küçük dünyayı anlatacak *harita* isimli yeni bir değişken tanımlayalım:

7 (setf *harita* '((oturma-odasi (büyücünün evindeki bir oturma odasindasiniz. kanepede horul horul uyuyan bir büyücü var.) (bati kapi bahce) (ustkat merdiven cati-kati)) (bahce (güzel bir bahcedesiniz. onünüzde bir kuyu var.) (dogu kapi oturma-odasi)) (cati-kati (terk edilmis evin cati katindasiniz. kösede dev bir kaynak makinasi var.) (altkat merdiven oturma-odasi)))) Bu harita bizim üç mekanımızla da ilgili önemli olan her şeyi içermektedir: mekana ait özel bir isim (yani ev, bahce ve cati-kati), oradan görülenlerle ilgili kısa bilgi (büyük listenin içinde kendine ait bir listede saklanmakta), ve o yerin içeri ve dışarı yollarıyla ilgili nereye ve nasıl yöntemleri. Bu tek değişkenin ne kadar bilgi zengini olduğuna ve sadece bilmemiz gerekenleri anlattığına dikkat edin Lispçiler küçük, kısa ve öz olan, fazlalık yapan her şeyi dışarda bırakan ve sadece bakarak anlaşılabilen kod parçacıkları yaratmayı severler. Artık bir haritamız ve çeşitli nesnelerimiz olduğuna göre bu nesnelerin haritada nerelerde olduğunu söyleyen bir değişken yaratmamız mantıklıdır: (setf *nesne-yerleri* '((viski-sisesi oturma-odasi) (kova oturma-odasi) (zincir bahce) (kurbaga bahce))) Burda her nesneyi bir yer ile ilişkilendirdik. Bu cins listeler Lispte tahmin edeeğiniz üzere ilişkilendirme listeleri olarak adlandırılır. Bir ilişkilendirme listesi kısaca bir listeler listesidir, bu iç listelerin her birinin ilk elemanı bir anahtar semboldür ve diğer bir takım verilerle ilişkilendirilmiştir. Aynı zamanda *harita* değişkenimiz de bir ilişkilendirme listesidir burdaki üç anahtar ise oturma-odasi, bahce ve catikati. Dünyamızı ve içindeki nesneleri tanımladığımıza göre geriye kalan tek şey oyuncunun nerede olduğunu tanımlamaktır: (setf *yer* 'oturma-odasi) Şimdi oyun komutları yapmaya başlayalım!

8 Oyun Dünyamızda Etrafa Bakınmak Sahip olmak isteyeceğimiz ilk komut bize bulunduğumuz yeri söyleyecek olan komuttur. Peki bir fonksiyonun dünyadaki bir yeri tanımlamak için neye ihtiyacı olabilir? Tanımlamasını istediğimiz yerin neresi olduğunu bilmek ister ve bir haritaya bakabilmek ve o haritada bu yeri bulabilmek ister. İşte tam olarak bunu yapan fonksiyonumuz: (defun yer-tarif-et (yer harita) (second (assoc yer harita))) Tahmin edebileceğiniz gibi defun kelimesi bir fonksiyon tanımladığımız anlamına geliyor. Fonksiyonun adı yer-tarifet ve iki parametre alır: bir yer ve bir harita. Bu değişkenlerin iki yıldız arasında olmamasından onların yerel olduklarını anlıyoruz yani global *yer* ve *harita* değişkenlerinden farklıdırlar. Lisp'teki fonksiyonların diğer programlama dillerindekilerden çok matematiksel fonksiyonlara benzediğine dikkatinizi çekmek isterim: Tıpkı matematikteki gibi bu fonksiyon da kullancıya okuması için bir şeyler basmaz ya da bir mesaj kutusu açmaz: Tek yaptığı tanımı içeren fonksiyonun sonucuna göre bir değer döndürmektir. Bulunduğumuz yerin oturma-odasi olduğunu düşünelim (ki gerçekten de öyle..)

9 Burası için bir tanım bulmak için öncelikle haritadan oturmaodasi'nı gösteren noktayı bulması gerekiyor. İşte bunu assoc komutu yapıyor ve bize oturma-odasi'nı tarif eden veriyi dönüyor. Sonra second komutu listedeki ikinci nesneyi yani oturma-odasi'nın tanımını siler (Eğer yarattığımız *harita* değişkenine bakarsanız, oturma-odasi'ni tanımlayan yazı parçacığı, oturma-odasi ile ilgili bütün veriyi toplayan listenin ikinci nesnesi olduğunu görürsünüz.) Şimdi Lisp prompt'umuzu kullanarak fonksiyonumuzu deneyelim- Kılavuzumuz boyunca olduğu gibi gene bu font ve renkte olan yazıları Lisp komut satırına yapıştırın: (yer-tarif-et 'oturma-odasi *harita*) ==> ( BÜYÜCÜNÜN EVINDEKI BIR OTURMA ODASINDASINIZ. KANEPEDE HORUL HORUL UYUYAN BIR BÜYÜCÜ VAR. Mükemmel! Tam istediğimiz gibi.. oturma-odasi'nin önüne koyduğumuz kesmeye dikkatinizi çekmek isterim, ne de olsa bu sembol yeri adlandıran veri (yani bunu Veri Kipi'nde okumak istiyoruz), ancak *harita* sembolünün önüne bir kesme koymadik, çünkü bu durumda isteğimiz derleyicinin

10 *harita* değişkeninin sakladığı verilere ulaşması (yani derleyicinin Kod Kipi'nde olmasını ve *harita* kelimesine sadece ham veri olarak bakmamasını istiyoruz.) Pratik Programlama Stili Belki yer-tarif-et fonksiyonumuzun pek çok değişik yönden bayağı kaba olduğunu fark ettiniz. Öncelikle nden yer ve harita değişkenlerini parametre olarak alıyoruz da, direkt olarak global değişkenleri okumuyoruz? Bunun sebebi Lispçilerin genellikle Pratik Programlama Stili'nde yazmayı sevmeleridir (daha açık olmak gerekirse bu- "prosedürel programlama" ya da- "yapısal programlama" ile tamamen alakasızdır..). Bu stilde amaç şu kuralları daima izleyen fonksiyonlar yazmaktır: 1. Sadece fonsiyona verilen ya da fonksiyon tarafından yaratılmış değişkenleri okur. (Yani hiç bir global değişken okunmaz.) 2. Asla atanmış bir değişkenin değeri değiştirilmez. (Yani değişkenleri arttırmak yada benzer saçmalıklar yok.) 3. Asla dış dünya ile etkileşime girmez, sonuç değerini döndürmek hariç. (Yani dosyalara yazma, kullanıcıya mesaj yazma yok.) Belki de bu katı kısıtlamalarla gerçekten işe yarayan bir şeyler yapan bir kod yazıp yazamayacağınızı merak ediyorsunuzdur... Kim bu kuralları izleme zahmetine katlanır ki? Çok önemli bir sebep: Bu stilde kod yazmak programınıza ilişkisel şeffaflık verir: Bu demek oluyor ki, verilen bir kod parçası aynı parametrelerle çağırıldığında, her zaman aynı değeri döner ve her ne zaman çağrılırsa çağrılsın hep aynı şeyi yapar- Bu programlama hatalarını azaltır ve ayrıca pek çok durumda programcının üretkenliğini arttırdığına inanılır. Elbette her zaman için fonksiyonel stilde olmayan fonksiyonlar ya da kullanıcı veya dış dünya ile iletişim kuramayacağınız durumlar olacaktır. Bu klavuzda bundan sonra karşılaşacağınız çoğu fonksiyon bu kuralları izlemeyecek. yer-tarif-et fonksiyonumuzla ilgili bir diğer poblem ise bize

11 o yerden başka yerlere doğru olan yolları söylememesi. Bu yolları bize tarif eden bir fonksiyon yazalım: (defun yol-tarif-et (yol) `(,(first yol) ile,(second yol) arasinda bir yol var.)) Pekala, bu fonksiyon bayağı garip görünüyor: Hatta bir fonksiyondan çok bir veri parçasını andırıyor. Önce deneyelim, yaptığını nasıl yaptığını sonra anlarız: (yol-tarif-et '(bati kapi bahce)) ==> (BATI ILE KAPI ARASINDA BIR YOL VAR.) Artık her şey açık: Bu fonksiyon yolu tarif eden bir liste alır (tıpkı *harita* değişkenimizin içinde olan gibi) ve ondan güzel bir cümle çıkarır. Şimdi fonksiyona tekrar bakarsak fonksiyonun yarattığı veriye çok benzediğini göreceksiniz: Kısaca yoldan ilk ve ikinci cisimleri kesip belirlenen cümleye çevirir. Bunu nasıl yapar? Ters-kesme kullanarak! Daha önce de derleyicimizi Kod Kipi'nden Veri Kipi'ne döndürmek için kesme kullandığımızı unutmayın- Terskesme kullanarak sadece dönmekle kalmaz ayrıca Kod Kipi'ne virgül ile geri de dönebiliriz: Bu- œters-kesme" tekniği Lisp'in muhteşem bir özelliği- bize yarattığı veri gibi gözüken kod yazmamıza izin veriyor. Bu çoğunlukla fonksiyonel stilde yazılan kodla olan bir şey: fonksiyonlarımızı ürettikleri veriye benzer şekilde yarattığımızda kodumuzu daha kolay anlaşılır yaparız ve aynı zamanda uzun ömürlü olmasını sağlar. Veri değişmediği sürece, fonksiyonlar veriyi sıkı bir şekilde takip ettiğinden, onların refaktörize edilmesi ya da değiştirilmesi muhtemelen gerekmeyecektir. Böyle bir fonkiyonu VB ya da C'de nasıl yazardınız bir düşünün: Büyük olasılıkla yolu parçalara bölerdiniz sonra da yazı parçacıklarını tekrar birbirine eklerdiniz- Yaratılan veriye hiç benzemeyen ve düşük ihtimalle uzun ömürlü olacak, daha rastgele bir süreç. Artık bir yol tanımlayabiliriz, ancak oynumuzdaki bir yer birden çok yola sahip olabilir. Haydi yollari-tarif-et isimli bir fonksiyon yaratalım: (defun yollari-tarif-et (yer harita) (apply #'append (mapcar #'yol-tarif-et (cddr (assoc yer harita))))) Bu fonksiyon, fonksiyonel programlama tekniğini kullanmakta: Yüksek Düzey Fonksiyonlar'ı kullanmak- Yani

12 apply ve mapcar fonksiyonları diğer fonksiyonları parametre olarak alıyor böylece onları kendileri çağırıyorlar- Bir fonksiyonu aktarmak için, fonksiyonun adından önce #' koymanız gerekir. cddr komutu listenin ilk iki elemanını kesip atar (böylece geriye sadece yol verisi kalır). mapcar kısaca başka bir fonksiyonu listedeki her nesneye uygular, temel olarak yaptığı bütün yolları yol-tarif-et fonksiyonu ile güzel açıklamalara dönüştürür. "apply #'append" ise sadece parantezleri temizler ve çok önemli değildir. Haydi bu yeni fonksiyonu deneyelim: (yollari-tarif-et 'oturma-odasi *harita*) ==> (BATI ILE KAPI ARASINDA BIR YOL VAR. USTKAT ILE MERDIVEN ARASINDA BIR YOL VAR.) Çok güzel! Hala tanımlamamız gereken bir şey var: bulunduğumuz yerin zemininde herhangi bir nesnenin olup olmadığı, varsa ne oldukları. Önce verilen yerde herhangi bir nesne var mı bunu söyleyen bir yardımcı fonksiyon yazalım: (defun is-at (nesne yer nesne-yeri) (eq (second (assoc nesne nesne-yeri)) yer))...eq fonksiyonu bize nesne-yeri listesindeki sembolün şu anki yer olup olmadığını söyler. Haydi bunu deneyelim: (is-at 'viski-sisesi 'oturma-odasi *nesne-yerleri*)

13 ==> T t sembolü (ya da nil hariç bütün değerler) viski-sisesi'nin oturma-odasi'nda var olduğu anlamına gelir. Şimdi bu fonksiyonu yeri tanımlamak için kullanalım: (defun zemin-tarif-et (yer nesneler nesne-yeri) (apply #'append (mapcar (lambda (x) `(zeminde bir,x görüyorsunuz.)) (remove-if-not (lambda (x) (is-at x yer nesne-yeri)) nesneler)))) Bu fonksiyonda yeni bir kaç şey var: Öncelikle, isimsiz fonksiyonlara sahip (lambda bunun için sadece süslü bir isim). Bu ilk lambda formu, yardımcı bir fonksiyon tanımlamakla aynı (defun fasafiso (x) `(zeminde bir,x görüyorsunuz.)) ve sonra #'fasafiso'yu mapcar fonksiyonuna gönderir. remove-if-not fonksiyonu listeyi mapcar'a güzel cümleler kurmak üzere göndermeden önce içinden o an ki yerde olmayan bütün nesneleri çıkarır. Şimdi bu yeni fonksiyonu deneyelim: (zemin-tarif-et 'oturma-odasi *nesneler* *nesne-yerleri*) ==> (ZEMINDE BIR VISKI-SISESI GÖRÜYORSUNUZ. ZEMINDE BIR KOVA GÖRÜYORSUNUZ. ) Şimdi bütün bu tanımlayıcı fonksiyonları tek ve kolay bir BAK fonksiyonu ile bağlayabiliriz, bu fonksiyon global değişkenleri kullanarak (yani Fonksiyonel Stil'de olmadan) tanımlayıcı fonksiyonları besler ve her şeyi tanımlar: (defun bak () (append (yer-tarif-et *yer* *harita*) (yollari-tarif-et *yer* *harita*) (zemin-tarif-et *yer* *nesneler* *nesne-yerleri*)))

14 Haydi deneyelim: (bak) ==> ( BÜYÜCÜNÜN EVINDEKI BIR OTURMA ODASINDASINIZ. KANEPEDE HORUL HORUL UYUYAN BIR BÜYÜCÜ VAR. BATI ILE KAPI ARASINDA BIR YOL VAR. USTKAT ILE MERDIVEN ARASINDA BIR YOL VAR. ZEMINDE BIR VISKI-SISESI GÖRÜYORSUNUZ. ZEMINDE BIR KOVA GÖRÜYORSUNUZ. ) Çok şık! Oyun Dünyamızda Yürümek Artık dünyamızı görebildiğimize göre artık içinde yürüyebilmemizi sağlayacak kodu yazabiliriz. bir-yöndeyürü fonksiyonu (fonksiyonel stil'de değil) bir yön seçer ve o yönde yürümemizi sağlar: (defun bir-yönde-yürü (yön) (let ((sonraki (assoc yön (cddr (assoc *yer* *harita*))))) (cond (sonraki (setf *yer* (third sonraki)) (bak)) (t '(bu yönde gidemezsiniz.))))) let özel komutu bize sonraki yerel değişkenini yaratmamıza izin verir ve buna oyuncunun yürümek istediği yöne ait yol tanımını atarız- cddr ise sadece ilk elemanı listeden kesip alır. Eğer kullanıcı sahte bir yön yazarsa sonraki artık nil olur. cond komutu ise Lisp'te bir dizi if-then komutu gibidir: cond içindeki her satırın kontrol etmesi gereken bir değer ve yapması gereken bir görev vardır. Bu durumda, eğer sonraki yer nil değil ise oyuncunun yerini yol tanımındaki üçüncü elemana setf'leyecektir, ki bu da yeni yönü anlatan sembolü tutar, ve sonra kullanıcıya yeni yerin nasıl göründüğünü söyler. Eğer sonraki yer nilise o satırı gerçeklestiremeyip bir sonraki satıra gecer ve kullanıcıyı da uyarır. Haydi bunu deneyelim: (bir-yönde-yürü 'bati) ==> ( GÜZEL BIR BAHCEDESINIZ. ÖNÜNÜZDE BIR KUYU VAR. DOGU ILE KAPI ARASINDA BIR YOL VAR. ZEMINDE BIR KURBAGA GÖRÜYORSUNUZ. ZEMINDE BIR ZINCIR GÖRÜYORSUNUZ. ) Tanımlama fonksiyonlarımızı, oyuncumuza yazması kolay, bir bak komutu ile basitlestirmiştik. Benzer bir şekilde biryönde-yürü komutumuza da oyuncumuzun yazması gereken sinir bozucu işaretlemelerden arındıracak bir ayarlama yaparsak hoş olur. Ancak öğrendik ki, derleyici bir formu

15 Kod Kipi'nde okumaya başlarsa bütün parametrelerini de, bir kesme işareti aksini söylemedikçe Kod Kipi'nde okur. Derleyiciye bati'nin sadece bir parça veri olduğunu kesme işareti kullanmadan bir şekilde söyleyemez miyiz? TILSIM YARATMAK Şimdi Lisp'in inanılmaz güçlü bir özelliğini öğreneceğiz: TILSIM yaratmak! SPEL (ki biz tilsim olarak isimlendirdik), "Semantic Program Enhancement Logic" yani "Anlamlandırılmış Program Geliştirme Mantığı"nın kısaltmasıdır ve kendi bilgisayar dünyamızın kodunda yeni bir davranış stili yaratmamıza olanak sağlayarak Lisp dilini temel seviyede değiştirip ihtiyaçarımız doğrultusunda davranışlarını ayarlayabilmemizi sağlar- Lisp'in büyü gibi olan kısmı budur. TILSIM'ları kullanıma açmak için öncelikle Lisp derleyicimizde TILSIM'ları aktif hale getirmemiz gerekir (Bu satır için endişe etmeyin- ileri seviye Lispçiler buraya tıklamalı.) (defmacro deftilsim (&rest geriye-kalanlar) Artık kullanıma açıldıklarına göre ilk tilsim'ımızı yaratalım, adı da yürü olsun: (deftilsim yürü (yön) `(bir-yönde-yürü ',yön)) Bu kodun yaptığı şey, derleyiciye yürü kelimesinin gerçekte yürü kelimesi olmadığını ve aslında onun bir-yönde-yürü demek olduğunu ve yön'ün önünde aslında -biz görmesek debir kesme işareti olduğunu söylemek. Esasen kodumuz derlenmeden önce onu başka bir şeye çevirecek olan bazı özel kodları programımız ve derleyici arasında bir yerlere sokuşturabiliriz.

16 Bu fonksiyonun daha önce yazdığımız yol-tarif-et koduna ne kadar çok benzediğine dikkat edin: Lisp'te birbirine neredeyse eş derecede benzeyen sadece kod ve veri değildir, kod ve derleyiciye özel komutlar (TILSIMlar) da benzeşir- Gayet tutarlı ve net bir tasarım! Haydi yeni tilsim'ımızı deneyelim: (yürü dogu) ==> ( BÜYÜCÜNÜN EVINDEKI BIR OTURMA ODASINDASINIZ. KANEPEDE HORUL HORUL UYUYAN BIR BÜYÜCÜ VAR. BATI ILE KAPI ARASINDA BIR YOL VAR. USTKAT ILE MERDIVEN ARASINDA BIR YOL VAR. ZEMINDE BIR VISKI-SISESI GÖRÜYORSUNUZ. ZEMINDE BIR KOVA GÖRÜYORSUNUZ. ) Çok daha iyi! Şimdi dünyamızda nesneleri kaldırmamızı saplayacak komutu yaratacağız: (defun nesneyi-al (nesne) (cond ((is-at nesne *yer* *nesne-yerleri*) (push (list nesne 'body) *nesneyerleri*) `(simdi bir,nesne tasiyorsunuz)) (t '(onu alamazsiniz.)))) Bu fonksiyon nesnenin gerçekten de o an ki yerimizin zemininde olup olmadığına bakar- eğer öyleyse yeni yeri (kullanıcının bedenini) listeye iter (itmek burda listeye yeni bir eleman eklemek manasındadır, bunu öyle yapar ki assoc komutu bunu görür ve bir önceki yeri gizler.) ve bize başarıp başaramadığını söyleyen bir cümle döndürür. Şimdi bu komutu daha kolay kullanmamızı sağlayacak bir başka TILSIM yaratalım:

17 (deftilsim al (nesne) `(nesneyi-al ',nesne)) Şimdi yeni TILSIMımızı deneyelim: (al viski-sisesi) ==> (SIMDI BIR VISKI-SISESI TASIYORSUNUZ) Şimdi bir kaç işe yarar komut daha ekleyelim- İlk önce taşıdığımız nesneleri listeleyen bir komut: (defun envanter () (remove-if-not (lambda (x) (is-at x 'body *nesneyerleri*)) *nesneler*)) Şimdiyse belli bir nesneye sahip olup olmadığımızı söyleyecek bir komut: (defun sahip (nesne) (member nesne (envanter))) Oynumuzda Özel Oyun Eylemleri Yaratma Artık yapmamız gereken tek bir şey kaldı ve sonra oynumuz tamamlanmış olacak: Oynumuza, oyuncunun yapmadan oyunu kazanamayacağı bazı özel oyun eylemlerini eklemek. İlk komut oyuncunun çatı katındaki zinciri kovaya kaynak yapmasını sağlayacak: (setf *zincir-kaynak-yapildi* nil) (defun kaynak-yap (ozne nesne) (cond ((and (eq *yer* 'cati-kati) (eq ozne 'zincir) (eq nesne 'kova) (not *zincir-kaynak-yapildi*)) (setf *zincir-kaynak-yapildi* 't) '(zincir güvenli sekilde kovaya kaynak yapildi.)) (t '(kaynak eylemini gerceklestiremem.)))) Şimdi ilk olarak, bu eylemi yapıp yapmadığımızı söylememize yarayan yeni bir global değişken yarattık. Sonra da kaynak yapmak için bütün şartların uygun olduğundan emin olmamızı ve kaynak yapmamızı sağlayan bir kaynak-yap fonksiyonu oluşturduk.

18 Haydi yeni komutumuzu deneyelim: (kaynak-yap 'zincir 'kova) ==> (KAYNAK EYLEMINI GERCEKLESTIREMEM.) Eyvaah.. bizim kovamız ya da zincirimiz yok, değil mi?...ve ortalıkta bir kaynak makinası da yok... eh peki.. Şimdi zincir ve kovayı kuyu'ya daldıracak bir komut yaratalım: (setf *kova-dolu* nil) (defun daldir (ozne nesne) (cond ((and (eq *yer* 'bahce) (eq ozne 'kova) (eq nesne 'kuyu) (sahip 'kova) *zincir-kaynak-yapildi*) (setf *kova-dolu* 't) '(kova simdi su dolu)) (t '(bu sekilde daldiramazsiniz.)))) Eğer dikkat ettiyseniz bu komut kaynak-yap komutuna fazlasıyla benzemektedir... Her iki komut da yer, özne ve nesneyi kontrol etmeye ihtiyaç duyuyor- Ancak onların benzerliklerini tek bir fonksiyona toplamamıza izin

19 vermeyecek kadar farklılıkları var.. Bu çok kötü......ancak bu Lisp olduğu için biz sadece fonksiyon yazmanın ötesine geçebilir ve tilsim yaratabiliriz! Haydi şu TILSIMı yaratalım: (deftilsim oyun-eylemi (komut ozn nsn mekan &rest geriye-kalanlar) `(deftilsim,komut (ozne nesne) `(cond ((and (eq *yer* ',',mekan) (eq ',ozne ',',ozn) (eq ',nesne ',',nsn) (sahip (t '(kusura bakma,',komut eylemini gerceklestiremem.))))) bu TILSIMın ne kadar gülünç bir şekilde karmaşık olduğunu fark ettiniz mi? - Daha çok garip kesme işaretleri, ters-kesme işaretleri, virgüller ve bir listeye sokabileceğiniz başka acaip sembollere sahip. Dahası bu bir başka TILSIM yaratabilen bir TILSIM! Daha ileri düzey Lisp programcıları bile bu kadar dev bir şey yaratabilmek için üzerinde düşünmeye ihtiyaç duyarlar (ve aslına bakarsanız onlar bu TILSIMı zerafetten yoksun bulup, bazı adımlar atarak onu daha iyi huylu yapmaya çalışacaklardır, ki biz bununla burda ilgilenmeyeceğiz..) Bu TILSIMın amacı sizlere bu TILSIMların ne kadar bilmiş ve becerikli olabileceklerini göstermekti. Hem çirkin olması, onu bir kere yazıp yüzlerce komut yaratmak için kullandıktan sonra çok da önemli değil. Şimdi yeni TILSIMımızı çirkin kaynak-yap komutunu değiştirmek için kullanalım:

20 (oyun-eylemi kaynak-yap zincir kova cati-kati (cond ((and (sahip 'kova) (setf *zincir-kaynak-yapildi* 't)) '(zincir güvenli sekilde kovaya kaynak yapildi.)) (t '(elinizde bir kova yok.)))) Bakın artık bu komutu anlamak ne kadar da kolaylaştı- oyuneylemi TILSIMı fazlalıklardan bizi kurtararak tam olarak söylemek istediğimizi yazmamıza izin veriyor- Sanki sadece oyun komutları için kendi bilgisayar dilimizi yarattık. TILSIMlar ile kendi sözde-dilinizi yaratmanıza Alana Özel Dil Programlama (DSLP - Domain Specific Language Programming) ismi verilir, bu en güçlü ve zarif programlama tekniklerinden biridir. (kaynak-yap zincir kova) ==> (ELINIZDE BIR ZINCIR YOK.) hala daha kaynak yapmak için uygun durumda değiliz ancak komutumuz işini yapıyor! Şimdi daldir komutunu da yeniden yazalım: (oyun-eylemi daldir kova kuyu bahce (cond (*zincir-kaynak-yapildi* (setf *kova-dolu* 't) '(kova simdi su dolu)) (t '(su seviyesi yetisemeyeceginiz kadar asagida.)))) kaynak-yap komutunun nesneye sahip olup olmadığımızı kontrol ettiğini ancak daldi komutunun o adımı atladığına dikkat edin -yeni oyun-eylemi TILSIMı kodu yazmayı ve anlamayı kolaylaştırıyor.

21 Ve son kodumuz, suyu büyücünün üzerine sallamak için: (oyun-eylemi salla kova büyücü oturma-odasi (cond ((not *kova-dolu*) '(kovada bir sey yok.)) ((sahip 'kurbaga) '(büyücü uyanir ve kurbagisini caldiginizi görür. o kadar cok hayal kirikligina ugrar ki sizi büyülü dünyadan men eder. kaybettiniz! oyun bitti.)) (t '(büyücü uyanir ve size hosgeldin der nazikce. size büyülü düsükkarbonatli kurabiye verir. kazandiniz. oyun bitti.))))

22 Tam anlamıyla bitmiş metin tabanlı bir macera oyunu yazdınız! Oyunun tam bir dökümü için BURAYA tıklayın. Lisp komut satırınıza tek bir adımda kopyalayıp yapıştırabileceğiniz kaynak kodu için BURAYA tıklayın. Bu klavuzu mümkün olduğu kadar basit tutmak için Lisp'in nasıl çalıştığıyla ilgili pek çok ayrıntı gizlenmiş ya da şöylece üzerinden geçilmiştir, o yüzden şimdi onlara bir bakalım...

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ı

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ı

1.1. Yazılım Geliştirme Süreci

1.1. Yazılım Geliştirme Süreci Kazanımlar Bu bolümde; Yazılım geliştirme sureci konusunda bilgi sahibi olacak, Yazılım geliştirme surecinde gerekli olan araçları tanıyacak, Python dilinde program geliştirme ortamlarını inceleyebileceksiniz.

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 Dili Prensipleri. Lab Notları 8 ve 9

Programlama Dili Prensipleri. Lab Notları 8 ve 9 Programlama Dili Prensipleri Lab Notları 8 ve 9 Fonksiyonel Programlama Fonksiyonel programlamada bir fonksiyon aynı parametreler aldığı sürece aynı sonucu üretecektir. Daha çok yapay zeka için kullanılan

Detaylı

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş Yard. Doç. Dr. Alper Kürşat Uysal Bilgisayar Mühendisliği Bölümü akuysal@anadolu.edu.tr Ders Web Sayfası: http://ceng.anadolu.edu.tr/ders.aspx?dersid=101

Detaylı

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel

Detaylı

HESAP MAKİNASI YAPIMI

HESAP MAKİNASI YAPIMI HESAP MAKİNASI YAPIMI 1..Aşağıdakine benzer görünüm ve butonları hazırlayın. 2. 24. Butonun içerisine aşağıdaki kodları yazın. 3. Yeni bir layer ekleyip Frame1 F9 na aşağıdaki kodları ekleyelim. 4. Butonlardan

Detaylı

Merhaba değerli Dostlar;

Merhaba değerli Dostlar; Merhaba değerli Dostlar; Eğitim Merkezi nin forumunun nasıl kullanıldığını bu belgede öğrenebileceksiniz. Eğer bugüne kadar hiçbir forum kullanmadıysanız merak etmeyin; forumu kullanmak çok kolay. İlerleyen

Detaylı

KOD PARÇACIKLARI 1 / 5

KOD PARÇACIKLARI 1 / 5 KOD PARÇACIKLARI 1 / 5 Kod Parçacıkları (CodeSnipet) Kod parçacıkları paneli animasyon yazılımının beşinci versiyonunda gelmiş bir yeniliktir. Kod yazmak yerine panelden ilgili kodu seçip çift tıklamak

Detaylı

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. C PROGRAMLAMA FONKSİYONLAR Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır. Daha büyük programlar yazmanın en kolay yolu onları küçük parçalar halinde yazıp sonra

Detaylı

NESNEYE YÖNELİK PROGRAMLAMA

NESNEYE YÖNELİK PROGRAMLAMA NESNEYE YÖNELİK PROGRAMLAMA Metotlar Şu ana kadar yaptığımız örneklerde hep önceden hazırlanmış ReadLine(), WriteLine() vb. gibi metotları kullandık. Artık kendi metotlarımızı yapmanın zamanı geldi. Bilmem

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ı

Adım Adım Windows 2000 Server Kurulumu 11 Cuma, 08 Eylül 2006 14:32 - Son Güncelleme Cumartesi, 12 Eylül 2009 03:45

Adım Adım Windows 2000 Server Kurulumu 11 Cuma, 08 Eylül 2006 14:32 - Son Güncelleme Cumartesi, 12 Eylül 2009 03:45 Nasıl bayaa yol kat ettik değil mi? Aslında bu noktada sistemimiz ciddi ciddi çalışmaya başladı. Bir süre sonra bir de baktık ki, kullanıcılar masaüstüne bazı "uygunsuz" duvar kağıtları koymaya başlamışlar.

Detaylı

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir?

Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir? 2.1.1. PROGRAMLAMA NEDIR? Programlama Nedir? Bir bilgisayar bilimcisi gibi düşünmek ve programlama ne demektir? Bu düşünme şekli matematiğin, mühendisliğin ve doğa bilimlerinin bazı özelliklerini birleştirmektedir.

Detaylı

How to ASP Language. Elbistan Meslek Yüksek Okulu 2011 2012 Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013

How to ASP Language. Elbistan Meslek Yüksek Okulu 2011 2012 Bahar Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU. 29 Eki. 1 Kas. 2013 How to ASP Language Elbistan Meslek Yüksek Okulu 2011 2012 Bahar Yarıyılı 29 Eki. 1 Kas. 2013 Öğr. Gör. Murat KEÇECĠOĞLU Fonksiyonlar, kendilerini göreve çağıran VBScript komutlarına ve işlemlerine bir

Detaylı

5S7 OYUN YAZIYORUM GENEL BAKIŞ A. PROJE - YILDIZ TOPLAYAN ÇOCUK

5S7 OYUN YAZIYORUM GENEL BAKIŞ A. PROJE - YILDIZ TOPLAYAN ÇOCUK GENEL BAKIŞ ÖĞRENME ÇIKTILARI Blok temelli programlama ortamında sunulan hedeflere ulaşmak için doğru algoritmayı oluşturur. Doğrusal mantık yapısını uygular. Döngü mantık yapısını uygular. Karar mantık

Detaylı

İnternet Programcılığı Öğr. Gör. Serkan AKSU PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler

İnternet Programcılığı Öğr. Gör. Serkan AKSU  PHP de Dizi-Değişkenler, Nesneler. Dizi Oluşturma. Tek Boyutlu Diziler PHP de Dizi-Değişkenler, Nesneler Dizilerle ilgili örneklere geçmeden önce aşağıdaki tabloyu inceleyelim. Tabloda dizi kavramının mantığı açıklanmaktadır. Tablonun tamamını bir dizi olarak düşünün ve bu

Detaylı

Genel Programlama II

Genel Programlama II Genel Programlama II 08.03.2011 1 Çok Boyutlu Diziler Önceki derslerimizde dizileri görmüştük. Kısaca özetleyecek olursak, belirlediğimiz sayıda değişkeni bir sıra içinde tutmamız, diziler sayesinde gerçekleşiyordu.

Detaylı

GOOGLE DRİVE KULLANARAK FORM OLUŞTURMA

GOOGLE DRİVE KULLANARAK FORM OLUŞTURMA GOOGLE DRİVE KULLANARAK FORM OLUŞTURMA Google Docs yani Google Dokümanlar hizmeti bir süre önce Google Drive adlı bulut depolama hizmetinin içerisine alındı ve çok daha gelişerek yoluna devam etti. Google

Detaylı

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir.

Dizi elemanları yukarıdaki gibi tek tek tanımlanabileceği gibi matematiksel ifadelerdeki diziler gibi de tanımlanabilir. DİZİLER/ARRAY: Dizi yi çeşitli şekillerde tanımlamak mümkün. Dizi içlerinde birden fazla değer saklayabilen veri kümeleridir diye tanımlarsak uygun olur sanırım. Diziler yan yana dizilmiş kutucuklar olarak

Detaylı

VERİ TABANI NEDİR A. TABLO OLUŞTURMA

VERİ TABANI NEDİR A. TABLO OLUŞTURMA VERİ TABANI NEDİR Belli bir amaca dayalı ortak alanlara (ad soyad, ürün adı, fiyatı gibi) sahip kişilerin ve nesnelerin bilgilerinin tutulduğu, istendiğinde bu bilgiler için arama, düzeltme, silme, kayıt

Detaylı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı

Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı Internet Programming II Elbistan Meslek Yüksek Okulu 2015 2016 Bahar Yarıyılı Öğr.Gör. Murat KEÇECĠOĞLU 8 Mar. 2016 PHP de Değişken Tipleri Dizi (Array) Aynı değişken içerisinde birden fazla değer tutmak

Detaylı

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu

WEB TASARIM I. Öğr. Gör. M. Mutlu YAPICI. Ankara Üniversitesi Elmadağ Meslek Yüksekokulu WEB TASARIM I Öğr. Gör. M. Mutlu YAPICI Ankara Üniversitesi Elmadağ Meslek Yüksekokulu Ders İzlencesi Hafta Modüller/İçerik/Konular 1. Hafta PHP Tanımı ve Sunucu Kurulumları 2. Hafta PHP Yazım Notasyonu

Detaylı

Okuyarak kelime öğrenmenin Yol Haritası

Okuyarak kelime öğrenmenin Yol Haritası Kelime bilgimin büyük bir miktarını düzenli olarak İngilizce okumaya borçluyum ve biliyorsun ki kelime bilmek akıcı İngilizce konuşma yolundaki en büyük engellerden biri =) O yüzden eğer İngilizce okumuyorsan,

Detaylı

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU

Internet Programming I. Hafta III. Elbistan Meslek Yüksek Okulu Güz Yarıyılı. Öğr. Gör. Murat KEÇECĠOĞLU Internet Programming I Hafta III Elbistan Meslek Yüksek Okulu 2016 2017 Güz Yarıyılı Öğr. Gör. Murat KEÇECĠOĞLU Dönen Değer? Fonksiyonlar, kendilerini göreve çağıran VBScript komutlarına ve işlemlerine

Detaylı

BİLGİSAYAR PROGRAMLAMA. Yrd. Doç. Dr. Beytullah EREN

BİLGİSAYAR PROGRAMLAMA. Yrd. Doç. Dr. Beytullah EREN BİLGİSAYAR PROGRAMLAMA Yrd. Doç. Dr. Beytullah EREN beren@sakarya.edu.tr 0264 295 5642 EXCEL DE DOĞRULAMA VE DENETLEME DOĞRULAMA Bir hücre grubuna veri girişi için doğrulama kriterleri (tamsayı, ondalıklı,

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Diziler ile Pointer Arası İlişki Bir dizi adı sabit bir pointer gibi düşünülebilir. Diziler ile pointer lar yakından ilişkilidir. Pointer lar değişkenleri gösterdikleri gibi,

Detaylı

if (ad == "Sabri") Console.WriteLine("Merhaba Sabri. Ne zamandır gözükmüyodun...");

if (ad == Sabri) Console.WriteLine(Merhaba Sabri. Ne zamandır gözükmüyodun...); Koşul İfadeleri ve Akış Kontrolü Koşul ifadeleri ve akış kontrolleri programlama dillerinde her zaman en önemli yeri tutmaktadır. Yazdığımız uygulamanın hangi koşulda nasıl davranacağını belirterek bir

Detaylı

CAMPUSIUM UZAKTAN EĞİTİM SİSTEMİ KULLANIM KILAVUZU

CAMPUSIUM UZAKTAN EĞİTİM SİSTEMİ KULLANIM KILAVUZU CAMPUSIUM UZAKTAN EĞİTİM SİSTEMİ KULLANIM KILAVUZU YÖNETİM PANELİ 1-Kategori Tanımlama: Sistemde öncelikle kategori eklemelisiniz. Kategori eklemek için işlemler menüsünden kategoriler sekmesini tıklayınız.

Detaylı

ASP.NET ile Bir Web Sitesi Oluşturma

ASP.NET ile Bir Web Sitesi Oluşturma 29,30 Eylül 2011 ASP.NET ile Bir Web Sitesi Oluşturma ASP.NET sitesi oluşturmak için File menüsündeki, New açılır listesindeki, Web Site komutuna tıklıyoruz Açılan pencereden C# içindeki ASP.NET Web Site

Detaylı

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers) 1 BLM 112- Programlama Dilleri II Hafta 5 İşaretçiler (Pointers) Dr. Öğr. Üyesi Caner Özcan Hiç hata yapmayan insan, hiçbir şey yapmayan insandır. Ve hayatta en büyük hata, kendini hatasız sanmaktır. ~Y.

Detaylı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR PROGRAMLAMAYA GİRİŞ FONKSİYONLAR Fonksiyonlar C programlama dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya

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ı

Pointer Kavramı. Veri Yapıları

Pointer Kavramı. Veri Yapıları Pointer Kavramı Veri Yapıları Pointer Kavramı- Pointer Nedir? Göstericiler, işaretçiler ya da pointer adı da verilmektedir. Gösterici (pointer); içerisinde bellek adresi tutan değişkenlerdir. Şu ana kadar

Detaylı

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ Dersin Adı Kodu Sınıf / Y.Y. Ders Saati (T+U+L) Kredi AKTS PROGRAMLAMA BG-213 2/1 2+0+2 2+1 5 Dersin Dili : TÜRKÇE Dersin Seviyesi : LİSANS

Detaylı

Spring Giriş Eğitimi

Spring Giriş Eğitimi Spring Giriş Eğitimi Bu eğitimde Spring ın hangi problemlere karşı etkili olduğundan bahsedeceğim. Ayrıca çekirdek Spring teknolojisinin nasıl işlediği; Dependency Injection - DI ve Inversion of Contol

Detaylı

Teknik Doküman. Autodesk Revit Building te yeni ölçü tipleri yaratmak

Teknik Doküman. Autodesk Revit Building te yeni ölçü tipleri yaratmak Teknik Doküman Teknik Doküman Numarası: 10771 Yayım Tarihi: 24.03.2006 Ürün: Autodesk Revit 6-9 Konu: Revit te yeni ölçülendirme tipleri yaratmak Tür: Öğretici Revizyon No: 0 Revizyon Tarihi: Autodesk

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonu Referans ile Çağırma (Call by Reference) Bir fonksiyona gönderilen parametrenin normalde değeri değişmez. Fonksiyon içinde yapılan işlemlerin hiçbiri argüman değişkeni

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ı

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ı

Ü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ı

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım.

DAO İLE SQL KOMUTLARI. Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. DAO İLE SQL KOMUTLARI Sql komutlarını artık veri tabanında kullanmaktan başka çaremiz yok arkadaşlar. Şimdi bu sql derslerimize başlayalım. SQL-1 SELECT En basit SQL cümleciği oluşturmak için SELECT sözcüğü

Detaylı

Python Programlama Dili

Python Programlama Dili Python Programlama Dili 8. Hata Yakalama Hatalar programcılık deneyiminizin bir parçasıdır. Ancak bizim burada kastettiğimiz, programınızı çalıştıran kullanıcıların sebep olduğu ve programınızın çökmesine

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ı

MATRİKS VERİ TERMİNALİ GELİŞMİŞ ALARM

MATRİKS VERİ TERMİNALİ GELİŞMİŞ ALARM MATRİKS VERİ TERMİNALİ GELİŞMİŞ ALARM Versiyon 7.0.8 1.12.2013 Matriks Bilgi Dağıtım Hizmetleri A.Ş. MATRİKS VERİ TERMİNALİ GELİŞMİŞ ALARM İçindekiler 1. İlk Bilgiler... 2 2. Sekmeler (Alarm Tanımlama

Detaylı

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II DİZİLER Dizi, aynı tipteki verilere tek bir isimle erişmek için kullanılan bir kümedir. Bir dizi bildirildikten sonra, dizinin bütün elemanları bellekte peşpeşe

Detaylı

Autofs. Hüseyin Kaya hkaya@be.itu.edu.tr

Autofs. Hüseyin Kaya hkaya@be.itu.edu.tr Autofs Hüseyin Kaya hkaya@be.itu.edu.tr 30 Eylül 2001 İçindekiler 1 Kurulum 2 1.1................................... 2 2 Konfigürasyon Dosyaları 3 3 Uygulama 4 3.1 Kullanıcı Dizinlerinin Düzenlenmesi...............

Detaylı

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz.

Bir dizinin boyutları sabittir ve kullanılmadan önce belirlenmelidir. Dizi boyutunu belirlemek için başka bir değişkende kullanabilirsiniz. C# da Diziler Diziler için aynı tipteki verilerin tutulduğu bir koleksiyon diyebiliriz. Örneğin integer verinin bir yığın şeklinde tutulması için dizileri kullanırız. C# da diziler referans tipinde değişkenlerdendir.

Detaylı

Temel Bilgisayar Programlama

Temel Bilgisayar Programlama BÖLÜM 11: : Birçok programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. Bütün programlama dillerinde, sabit disk sürücüsü (Hard Disk Drive, HDD) üzerindeki verileri okumak veya diske veri

Detaylı

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi 5.HAFTA Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi Sınıf Kavramı: Sınıf (class) soyut bir veri tipidir. Nesne (object) onun somutlaşan bir cismidir. Java da sınıf (class) kavramını

Detaylı

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat

Denetim Masası/Programlar/Windows özelliklerini Aç/Kapat Merhaba arkadaşlar, Bu yazımızda yerel ağda veya Ip adresimizle bir web sitesinin paylaşıma açılması, aynı ağdan veya uzaktan bir bilgisayarın web sitemize nasıl erişebileceği konuları üzerinde duracağız.

Detaylı

Şimdi başka bir problem üzerinde çalışalım.

Şimdi başka bir problem üzerinde çalışalım. 86 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Şimdi başka bir problem üzerinde çalışalım. Algoritmamızı yine sahte kod ve yukarıdan aşağıya adımsal iyileştirmeyle oluşturacağız

Detaylı

Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması

Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması 1 Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması Problem Bireylerin yaşadığı çevreye uyum sağlaması durumunda ortaya çıkan olumsuzluklar ve çatışmalar problem olarak değerlendirilir. Bu durumdaki

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ı

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ı

www.wikispaces.com Kullanım Kılavuzu

www.wikispaces.com Kullanım Kılavuzu www.wikispaces.com Kullanım Kılavuzu İnternet tarayıcınıza(internet Explorer vb.) www.wikispaces.com adresini yazıp enter tuşuna bastığınızda yukarıdaki ekranla karşılaşacaksınız. Önceden oluşturmuş olduğunuz

Detaylı

HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR ve ÖĞRETİM TEKNOLOJİLERİ EĞİTİMİ BTÖ201- Programlama Dilleri 1 Hazırlayanın; Adı Soyadı Çağdaş KARADEMİR Numarası 20742248 Ders Sorumlusu Hakan Tüzün İçindekiler Problem

Detaylı

Verimlilik İçin ETKİN BİLGİ YÖNETİMİ KENDİ FONKSİYONUMUZU YAZALIM

Verimlilik İçin ETKİN BİLGİ YÖNETİMİ KENDİ FONKSİYONUMUZU YAZALIM Verimlilik İçin ETKİN BİLGİ YÖNETİMİ KENDİ FONKSİYONUMUZU YAZALIM Lütfen Dikkat! Bu kitapta herhangi bir şekilde adı geçen ürün, marka veya şirket isimleri sahiplerine aittir. Kitapta yer alan bilgilerin

Detaylı

Hacettepe Robot Topluluğu

Hacettepe Robot Topluluğu Hacettepe Robot Topluluğu PIC Assembly Dersleri 1. Ders: PIC Programlamaya Giriş HUNRobotX - PIC Assembly Dersleri 1. Ders: PIC Programlamaya Giriş Yazan: Kutluhan Akman, Düzenleyen: Canol Gökel - 4 Haziran

Detaylı

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

5. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 5. 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 STRING FONKSİYONU... 3 SPLIT FONKSİYONU...

Detaylı

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9 BTP 207 İNTERNET PROGRAMCILIĞI I Ders 9 Dizi Değişkenler (Array) 2 Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1, eleman2,, elemann)

Detaylı

1 NEDEN PROGRAMLAMA ÖĞRENMELIYIZ?

1 NEDEN PROGRAMLAMA ÖĞRENMELIYIZ? İÇİNDEKİLER VII İÇİNDEKİLER 1 NEDEN PROGRAMLAMA ÖĞRENMELIYIZ? 1 Neden Python? 3 Python Neden Bütün Hacker ların Favori Programlama Dili? 4 Hangi Editörü Kullanmalıyım? 5 Bu Kitabı Nasıl Kullanmayalıyım?

Detaylı

OYUN GELİŞTİRME AŞAMALARI-I

OYUN GELİŞTİRME AŞAMALARI-I Adı Soyadı : TAYFUN KARACA OYUN GELİŞTİRME AŞAMALARI-I Oyununuzun senaryosunu kısaca tanıtınız/ amacınıda belirtiniz: Oyunda bulunan karakterimizin adı mörfi, oyunda bir robosikletin içinde olduğu için

Detaylı

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) Şimdi başka bir problem üzerinde çalışalım.

B03.10 Algoritmalari Uygulamak : Durum 3 (Yuvalı Kontrol Yapıları) Şimdi başka bir problem üzerinde çalışalım. 85 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B03) Şimdi başka bir problem üzerinde çalışalım. Algoritmamızı yine sahte kod ve yukarıdan aşağıya adımsal iyileştirmeyle oluşturacağız

Detaylı

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015

Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 Arş.Gör.Muhammet Çağrı Gencer Bilgisayar Mühendisliği KTO Karatay Üniversitesi 2015 KONU BAŞLIKLARI 1. Yazılım Mimarisi nedir? 2. Yazılımda Karmaşıklık 3. Üç Katmanlı Mimari nedir? 4. Üç Katmanlı Mimari

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları ComboBox Bir Windows açılan kutu sunu temsil eder. ComboBox kontrolü, kullanıcıların bazı değerleri açılan bir listeden seçmesini sağlar. Listeye tasarım anında veya çalışma anında öğe eklenebilir. Listeye

Detaylı

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği

INPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği INPUTBOX KULLANIMI InputBox komutu, Basic programlama dilinde program algoritması içinde ekran aracışığı ile bir sorgu yönlendirerek, kullanıcının bilgi girmesini sağlamak amacıyla kullanılır. Bu komutun

Detaylı

YZM 2105 Nesneye Yönelik Programlama

YZM 2105 Nesneye Yönelik Programlama YZM 2105 Nesneye Yönelik Programlama Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği 1 BÖLÜM - 5 Nesneye Yönelik Programlamaya Giriş Bu

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ı

UZAYLIYLA SOHBET. Kedi kuklasını silip bu kuklalardan birini seçin ve projenize başlayın.

UZAYLIYLA SOHBET. Kedi kuklasını silip bu kuklalardan birini seçin ve projenize başlayın. 1 Bugün bizimle konuşan bir uzaylı karakter, yaratacağız. Projeye başlamadan önce şunlara karar vermelisiniz. Karakterinizin adı ne? Nerede yaşıyor? Nası bir karakter? Mutlu mu? Ciddi mi? Komik mi? 2 Kedi

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ı

Hızlı Başlangıç Kılavuzu

Hızlı Başlangıç Kılavuzu Hızlı Başlangıç Kılavuzu Microsoft Access 2013 önceki sürümlerden farklı görünmektedir, dolayısıyla öğrenme eğrisini en aza indirmenize yardımcı olmak üzere bu kılavuzu hazırladık. Ekran boyutunu değiştirme

Detaylı

Bilişim Garaj Akademisi Nedir?

Bilişim Garaj Akademisi Nedir? Bilişim Garaj Akademisi Nedir? Bilişim Garaj Akademisi, 7-16 yaş arası çocuklarımıza programlama, web tasarımı, 3D tasarım, robot tasarım ve üretimi gibi üretici bilişim becerileri kazandıran ilk online

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ı

SIMAN KULLANIM KILAVUZU

SIMAN KULLANIM KILAVUZU SIMAN KULLANIM KILAVUZU Önder Öndemir SIMAN Simülasyon programı Model Çatı ve Deneysel Çatı olmak üzere iki kısımdan oluşur. Model çatı genel itibariyle modullerin ve işlem bloklarının yazıldığı kısımdır.

Detaylı

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu BBS515 Nesneye Yönelik Programlama Ders 1 Zümra Kavafoğlu Dersin Amacı Nesneye Yönelik Programlama Kavramını Java Dili Üzerinden Öğrenmek Nesneye yönelik programlama ile ilgili nesne, sınıf, kalıtım, çok

Detaylı

PHP 1. Hafta 2.Sunum

PHP 1. Hafta 2.Sunum PHP 1. Hafta 2.Sunum Hello World Bu derste görülecekler WAMP ve PHP Hosting kavramı ve bizi neden ilgilendirmediği Domain ve localhost kavramları www klasörü İlk PHP kodunun

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 Giriş Fonksiyonlara Genel Bakış C

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.

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ş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü

BM-209 Nesne Yönelimli Programlama. Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü BM-209 Nesne Yönelimli Programlama Yrd. Doç. Dr. İbrahim Alper Doğru Gazi Üniversitesi Teknoloji Fakültesi Bilgisayar Mühendisliği Bölümü Java Programlama Dili Java bayt kodları Java Sanal Makineleri üzerinde

Detaylı

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I ALGORİTMA VE PROGRAMLAMA I YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Giriş Fonksiyonlara Genel Bakış C ve Fonksiyonlar Fonksiyon Tanımı 8. BÖLÜM 3 Fonksiyonlar

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ı

Eğitsel Oyun Projesi Raporu. ÖĞRENEREK EĞLENİYORUM Berkay Bekaroğlu

Eğitsel Oyun Projesi Raporu. ÖĞRENEREK EĞLENİYORUM Berkay Bekaroğlu Bilgisayar ve Öğretim Teknolojileri Eğitimi Bölümü 2016-2017 Güz Dönemi - Bilişim Teknolojileri ve Öğretmen Yeterlikleri Dersi Eğitsel Oyun Projesi Raporu ÖĞRENEREK EĞLENİYORUM Berkay Bekaroğlu 150805040

Detaylı

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

1. HAFTA KBT204 İNTERNET PROGRAMCILIĞI II. Öğr.Gör. Hakan YILMAZ. hakanyilmaz@karabuk.edu.tr 1. 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ırmaMerkezi 2 İçindekiler 1. GİRİŞ... 3 1.1 ASP NEDİR?...

Detaylı

BÖLÜM 3 OPERAT A ÖRLER - 19 -

BÖLÜM 3 OPERAT A ÖRLER - 19 - BÖLÜM 3 OPERATÖRLER - 19 - 3.1 Operatörler Hakkında Yukarıdaki örnekleri birlikte yaptıysak = işaretini bol bol kullandık ve böylece PHP'nin birçok operatöründen biriyle tanıştık. Buna PHP dilinde "atama

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ı

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ı

Ders 8: Metotlar. barisgokce.com

Ders 8: Metotlar. barisgokce.com Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı

Detaylı

Bilgisayar Programcılığı Ön Lisans Programı WEB EDİTÖRÜ. Öğr. Gör. Rıza ALTUNAY

Bilgisayar Programcılığı Ön Lisans Programı WEB EDİTÖRÜ. Öğr. Gör. Rıza ALTUNAY CSS Ünite 7 Bilgisayar Programcılığı Ön Lisans Programı WEB EDİTÖRÜ Öğr. Gör. Rıza ALTUNAY 1 Ünite 7 CSS Öğr. Gör. Rıza ALTUNAY İçindekiler 7.1. CSS KULLANIM ALANLARI... 3 7.1.1. Yerel Kullanım Alanı...

Detaylı

2-Hafta Temel İşlemler

2-Hafta Temel İşlemler 2-Hafta Temel İşlemler * Html Komutlarının Yapısı * Açıklamalar * Htm Sayfasının Oluşturulması * Temel Html Komutları * Html Sayfalarının Düzenlenmesi * Html Sayfalarının İncelenmesi Html Komutlarının

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ı

Captain d e.

Captain d e. c o Captain d e www.makerbee.net/captain-code çocuklara neden kod'lama (programcılık) öğretmetliyiz? Steve Jobs ; Bence bu ülkede herkes bilgisayar programlamayı öğrenmeli. Bir bilgisayar dili öğrenmeli.

Detaylı

3. BELGE DENETİMİ. Bu bölümde belge denetimi için gerekli olan yazım, dil bilgisi ve dil ayarlarını öğreneceğiz.

3. BELGE DENETİMİ. Bu bölümde belge denetimi için gerekli olan yazım, dil bilgisi ve dil ayarlarını öğreneceğiz. 3. BELGE DENETİMİ Bu bölümde belge denetimi için gerekli olan yazım, dil bilgisi ve dil ayarlarını öğreneceğiz. 3.1. Dil Ayarları Open office dünyanın her yerinde kullanılan bir ofis türüdür. İşletim sistemin

Detaylı

Java JDK (Java Development Kit) Kurulumu:

Java JDK (Java Development Kit) Kurulumu: Java JDK ve Eclipse Kurulumu Öncelikle java ile program geliştirmeye başlamak istiyorsanız iki şeye ihtiyacınız olacak; 1-Java JDK (Java Development Kit) : Java ile yazdığımız kodları derleyip çalıştırmak

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 Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor

Detaylı

Kurumsal Güvenlik ve Web Filtreleme

Kurumsal Güvenlik ve Web Filtreleme S a y f a 1 antikor Kurumsal Güvenlik ve Web Filtreleme SshClient, Putty v.s. S a y f a 2 S a y f a 3 Yönetici olarak AntiKor a girmek için SshClient veya Putty programı kullanılır. IP olarak kurum içinden

Detaylı