yalova Ünİversİtesİ bİlgİsayar mÜhendİslİĞİyalova-2012 ÖnsÖz. bilgisayar ve yazılım...

30
YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ Version 5.2.1 Öğretim Görevlisi YUNUS ÖZEN Yalova-2012 ÖNSÖZ

Upload: others

Post on 13-Jul-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

YALOVA UumlNİVERSİTESİ

BİLGİSAYAR MUumlHENDİSLİĞİ

Version 521

Oumlğretim Goumlrevlisi

YUNUS OumlZEN

Yalova-2012

OumlNSOumlZ

Bilgisayar ve yazılım duumlnyasına olan insanlar bilgisayar ile iletiĢim

kurmak zorundalar Bu iletiĢim bazen normal insanlarla olan iletiĢimden daha

zor veya kolay olabiliyor Buna neden olan da kullandığımız iletiĢim aracıdır

Biz kendimizi bilgisayara en iyi Ģekilde anlatmalıyız ki bilgisayar denen araccedil

bizim isteklerimize paralel cevap versin Bunlardan dolayı programlama

duumlnyasına yeni gelmiĢ bilgiye susamıĢ olan arkadaĢlar oumlncelikle oumlğrenmeniz

gereken Ģey bilgisayarın dilini oumlğrenmek Bu sektoumlrde bu kavrama

programlama dili deniliyor ( amacı gerccedilekleĢtirmek iccedilin yazılmıĢ kod

listesidir)piyasaya bakıldığı zaman programlama dilerin sayısı oldukccedila fazla

1000 veya 300 diyenler vardır Buumltuumln ortaya ccedilıkan bu diller bir amaccedil ve ihtiyaccedil

doğrultusunda ortaya ccedilıkmıĢtır Peki hiccedil bir Ģeyden haberi olmayıp bu sektoumlre

yeni gelen biri iccedilin bu dillerden hangisine kullanarak kendini en bağıt

goumlsteriĢsiz sade bir Ģekilde kendini bilgisayara ifade etmelidir Bu sorunun

cevabını bulan arkadaĢ bilgisayarı basit duumlzeyden anladıktan sonra karmaĢık

yapısını anlamaya ccedilalıĢarak yola devam eder

Yukarıdaki sorunun cevabı bizim bu pdf de anlatacağımız Scheme

dilinde gizlidir

Scheme dilinin genel oumlzeliklerini derleyicini oumlrnek kodlar ve

uygulamalarla değerli okuyucularımıza goumlstermek istiyoruz

Bu dili oumlğrenmeye teĢvik eden değerli hocamız YUNUS OumlZEN

teĢekkuumlrlerimizi sunuyoruz

Ġnsanoğlunun aklı korkusu merakı yaratma guumlcuuml hep var olacaktır

Bunlar var oldukccedila imkacircnsıza kafa tutmaya devam edecektir

Yeni doumlnemler yeni programlar yeni makineler demektir Her yenilik bilgi

kaynaklarımızı artıracaktır

SCHEME DİLİ HAKKINDA GENEL OumlZELLIKLER

Bilgisayar bilimi ve muumlhendisliği eğitimlerinde Schemede yazılan programlar genelde yorumlayıcı tarafından yorumlanır Bu iĢlem yavaĢ

ve pek uumlretken olmayan bir youmlntemdir fakat temel algoritmik kavramların anlaĢılmasını kolaylaĢtırdığından tercih edilir

Scheme aynı zamanda ccedileĢitli derleyicilere (Chicken Stalin Chez Ikarus gibi) de sahiptir

Bunun dıĢında Scheme birccedilok paradigmayı iccedilinde barındıran bir programlama dilidir(fonksiyonel programlama baĢta olmak uumlzere)

EĢzamanlı hesaplama dilinin bazı oumlzelliklerini de taĢımaktadır

Scheme yorumlayıcısı (interpreter) eĢzamanlaĢıcısı (synchronizers) ve değiĢken huumlcreleri iccedilin gereken temel oumlzellikleri iccedilinde barındırmamaktadır

Scheme bir paralel programlama dili olmasa da taĢıdığı oumlzelliklerle tam olarak bir fonksiyonel programlama dilidir

Ayrıca Scheme buyurgan bir youmlne de sahiptir ama bu dili gerek akademik duumlnyada gerekse sektoumlrde oumlne ccedilıkaran ve tercih edilmesine sebep olan youmlnuuml fonksiyonel paradigmaya olan uygunluğudur

Ccedilok az sayıda programlama kuralıyla anlatımlar oluĢturulmasını sağlar

Pratik ve yalın yapısıyla guumlnuumlmuumlzde var olan pek ccedilok programlama kavramını destekler

Lisp lehccedilesidir

Genelde hızlı olmasını yapay zekacirc iĢlerinde kullanılmasında yardımcı olur

Dikkat ccedileken bir dil guumlzel sevimli ama akademik ortamlar dıĢında pratik bir kullanımı yoktur

Temel ilgi yazılım geliĢtirmeye uygunluktan ccedilok verimliliktir

Sadece statik kapsam kullanır

Dinamik olarak tuumlr belirtilen bir fonksiyonel programlama dilidir

Sembolik bir programlama dilidir

Programlama ortamı olarak Drscheme programı kullanmaktadır

DrScheme Scheme programlama dili iccedilin grafiksel bir ortam sunmaktadır

BU DİL NEDEN EĞİTİM DİLİ OLARAK VERİLMELİDİR

BaĢlangıccedil duumlzeydeki bir oumlğrenciyi ele alırsak ona imperative bir dil

oumlğretmeye kalkarsak mesela (basic veya pascal ) oumlğrencinin soyut

duumlĢuumlnmesini kısıtlarız

Ccediluumlnkuuml oumlğrenci problemin ccediloumlzuumlmuumlnuuml duumlĢuumlk soyutlama dilinde ifade

etmede zorlanıyor Aynı durum mantıksal diller iccedilinde geccedilerlidir (prolog)

amacımız baĢlangıccedil seviyesinde olan oumlğrenciye soyut fakat yordamsal

duumlĢuumlnme yeteneğini oumlğretmek Buna uygun olarak fonksiyonel bir dil olabilir

Fonksiyonel dilin yapısı oumlğrencinin matematik bilgisine dayanır mesela liseden

fonksiyonları kuumlme dizi ve mantık kavramların bilinmesi gibi Boumlylece oumlğrenci

elinde olan problemi ccediloumlzmek iccedilin ve bunu bilgisayara aktarmanın en iyi yolu

fonksiyonel bir dil seccedilimidir

Fonksiyonel olarak Scheme dilinin seccedililmesinin oumlnemli nedenleri vardır

1 Dil iĢlemcisini lisans sorunu olmadan bulmak

2 Basit soumlz dizimin olması yani dilin yazım kuralarını zahmetsizce oumlğrenilebilir

3 Veri tipi sadeliği ve dinamik olarak denetlenmesi bu maddeyi accedilıklarsak

oumlğrenci tamsayı reel sayı ayırımını oumlğrenip değiĢkenlerini buna goumlre

tanımlamak zorunda kalmayacak boumlylece oumlğrenci buumltuumln dikkatini problemin

ccediloumlzuumlmuumlne odaklayacak yazım kurallarıyla uğraĢmayacak

4Yorumlayıcı ve etkileĢimli olarak ccedilalıĢma ortamı geri bildirimi

hızlandırdığından oumlğrenme suumlresini hızlandırıyor

5bunları kullanarak dili zorlaĢtıracak ayrıntılara boğulmadan problemleri

ccediloumlzebilecektir

TARİHİ GELİŞİMİ

Scheme 1970 yılı ortalarında MIT profesoumlrleri Guy Lewis Steele ve Gerald Jay Sussman tarafından geliĢtirilmiĢ fonksiyonel bir dildir

BaĢlangıccedilta Sussman ve Hewitt birlikte MDL(MIT Design Language) uumlzerinde bir ccedilalıĢma yaptılar ( MDL Carl Hewittin Planner adlı projesi iccedilin geniĢletilmiĢ bir LISP diyalektidir )

1971 yılında Sussman ve bir grup Profesoumlr Micro-plannerı geliĢtirdiler

Ardından Conniver adında yine LISP tabanlı bir programlama dili geliĢtirdiler( ama bu ccedilalıĢmaların sonuccedillarını pek uumlretken bulamadılar ve farklı yollara youmlneldiler Steele oumlğrenimi suumlresinde dıĢarıdaki geliĢmeleri duumlzenli olarak takip ediyordu

Steele mezun olmasının ardından Sussman ile birlikte MacLisp programlama dilini kullanarak kendilerine ait LISPlerini geliĢtirdi

Daha sonra bu mekanizmayı geliĢtirerek kendi modellerini actor oluĢturabilecek ve mesaj goumlnderebilecek duumlzeye getirmeyi baĢardılar

GeliĢtirdikleri modelleme ccedilalıĢmaları iyiye gidince bu modele Schemer adını verdiler ama daha sonra ana sistem uumlzerine kurulmuĢ ITS dosya sisteminin 6 karakter limitine uymak iccedilin adını Scheme olarak değiĢtirdiler

1973 yılında MIT profesoumlrlerinden Carl Hewitt eĢzamanlı hesaplamada actor model adında matematiksel bir model geliĢtirdi

Sussman ve Steele bu modele daha iyi bir anlam kazandırmak amacıyla Scheme programlama dilini oluĢturdular

Sussman ve Steelein ccedilalıĢmalarıyla kuumlccediluumlk ve yeterli bir LISP diyalekti ortaya ccedilıkmıĢ oldu

1980 den beri geliĢtirilmiyor

IEEE tarafından 1978ndash1990 ile standartlaĢtırılmıĢtır

ġu anda R6RS (Revised6 Report on the Algorithmic Language Scheme) en son kabul edilen rapordur

MITlsquo de lisans oumlğrencilerine ilk programlama dersi olarak verilmekteydi

MIT profesoumlrlerinden Harold Abelson ve Gerald Jay Sussman tarafından yazılmıĢ ve ilk baskısı 1984 yılında oluĢturulmuĢ

Structure ve Interpretation of Computer Programs kitabı derslerde kullanılmaktadır Orta Doğu Teknik Uumlniversitesinde de boumlluumlme giren oumlğrenciler programlama duumlnyasındaki ilk adımlarını Scheme programlama dilini oumlğrenerek baĢlamaktadır

Ders kitabı olarak zamanın MIT profesoumlrlerinden Biran Harvey(UC Berkeley) ve Matthew Wright tarafından yazılmıĢ Simply Scheme adlı kitap kullanılmaktadır

KISACA

1 Ġlk ccedilıkıĢı 1975 2 TASARIMCISI Guy L Steele ve Gerald Jay Sussman 3 SUumlRUumlMUumlR6RS (onaylı standart) (2007) 4 TIP SĠSTEMĠ guumlccedilluuml dinamik

5 ETKĠLENDĠKLERI DĠL Lisp ALGOL MDL 6 ETKILEDIĞI DIL Common Lisp EuLisp JavaScript R Ruby Dylan

Lua Hop Racket 7 DOSYA UZANTISIscm ss 8 PARADĠKMASI fonksiyonel meta yordamsal

Scheme dili fonksiyonel bir dildir

Nesneye dair hiccedil bir Ģey yoktur Yorumlayıcı tarafından yorumlanan

fonksiyonel bir dildir

Yani programlar matematiksel fonksiyonlar tarafından yapılır

Fonksiyonların aldıkları girdi ve ccedilıktı sabittir

Programa girilen değere goumlre fonksiyonda bir değiĢiklik yapmadan

fonksiyonu aynen uygular Atama deyimleri bulunmaz

DeğiĢken değerleri bir defa atanır ve bir daha değiĢmez Fonksiyonel

programların artılarından biri bir fonksiyonu ccedilağırmanın kendi sonucunu

geriye doumlnduumlrmekten baĢka bir sonucu olmadığından bug oluĢumunu

engeller

EDİTOumlR KURULUMU

Bu linkten ldquo httpracket-langorgdownload ldquo editoumlruuml indirilebilir

Next diyoruz

Next diyoruz

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 2: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

Bilgisayar ve yazılım duumlnyasına olan insanlar bilgisayar ile iletiĢim

kurmak zorundalar Bu iletiĢim bazen normal insanlarla olan iletiĢimden daha

zor veya kolay olabiliyor Buna neden olan da kullandığımız iletiĢim aracıdır

Biz kendimizi bilgisayara en iyi Ģekilde anlatmalıyız ki bilgisayar denen araccedil

bizim isteklerimize paralel cevap versin Bunlardan dolayı programlama

duumlnyasına yeni gelmiĢ bilgiye susamıĢ olan arkadaĢlar oumlncelikle oumlğrenmeniz

gereken Ģey bilgisayarın dilini oumlğrenmek Bu sektoumlrde bu kavrama

programlama dili deniliyor ( amacı gerccedilekleĢtirmek iccedilin yazılmıĢ kod

listesidir)piyasaya bakıldığı zaman programlama dilerin sayısı oldukccedila fazla

1000 veya 300 diyenler vardır Buumltuumln ortaya ccedilıkan bu diller bir amaccedil ve ihtiyaccedil

doğrultusunda ortaya ccedilıkmıĢtır Peki hiccedil bir Ģeyden haberi olmayıp bu sektoumlre

yeni gelen biri iccedilin bu dillerden hangisine kullanarak kendini en bağıt

goumlsteriĢsiz sade bir Ģekilde kendini bilgisayara ifade etmelidir Bu sorunun

cevabını bulan arkadaĢ bilgisayarı basit duumlzeyden anladıktan sonra karmaĢık

yapısını anlamaya ccedilalıĢarak yola devam eder

Yukarıdaki sorunun cevabı bizim bu pdf de anlatacağımız Scheme

dilinde gizlidir

Scheme dilinin genel oumlzeliklerini derleyicini oumlrnek kodlar ve

uygulamalarla değerli okuyucularımıza goumlstermek istiyoruz

Bu dili oumlğrenmeye teĢvik eden değerli hocamız YUNUS OumlZEN

teĢekkuumlrlerimizi sunuyoruz

Ġnsanoğlunun aklı korkusu merakı yaratma guumlcuuml hep var olacaktır

Bunlar var oldukccedila imkacircnsıza kafa tutmaya devam edecektir

Yeni doumlnemler yeni programlar yeni makineler demektir Her yenilik bilgi

kaynaklarımızı artıracaktır

SCHEME DİLİ HAKKINDA GENEL OumlZELLIKLER

Bilgisayar bilimi ve muumlhendisliği eğitimlerinde Schemede yazılan programlar genelde yorumlayıcı tarafından yorumlanır Bu iĢlem yavaĢ

ve pek uumlretken olmayan bir youmlntemdir fakat temel algoritmik kavramların anlaĢılmasını kolaylaĢtırdığından tercih edilir

Scheme aynı zamanda ccedileĢitli derleyicilere (Chicken Stalin Chez Ikarus gibi) de sahiptir

Bunun dıĢında Scheme birccedilok paradigmayı iccedilinde barındıran bir programlama dilidir(fonksiyonel programlama baĢta olmak uumlzere)

EĢzamanlı hesaplama dilinin bazı oumlzelliklerini de taĢımaktadır

Scheme yorumlayıcısı (interpreter) eĢzamanlaĢıcısı (synchronizers) ve değiĢken huumlcreleri iccedilin gereken temel oumlzellikleri iccedilinde barındırmamaktadır

Scheme bir paralel programlama dili olmasa da taĢıdığı oumlzelliklerle tam olarak bir fonksiyonel programlama dilidir

Ayrıca Scheme buyurgan bir youmlne de sahiptir ama bu dili gerek akademik duumlnyada gerekse sektoumlrde oumlne ccedilıkaran ve tercih edilmesine sebep olan youmlnuuml fonksiyonel paradigmaya olan uygunluğudur

Ccedilok az sayıda programlama kuralıyla anlatımlar oluĢturulmasını sağlar

Pratik ve yalın yapısıyla guumlnuumlmuumlzde var olan pek ccedilok programlama kavramını destekler

Lisp lehccedilesidir

Genelde hızlı olmasını yapay zekacirc iĢlerinde kullanılmasında yardımcı olur

Dikkat ccedileken bir dil guumlzel sevimli ama akademik ortamlar dıĢında pratik bir kullanımı yoktur

Temel ilgi yazılım geliĢtirmeye uygunluktan ccedilok verimliliktir

Sadece statik kapsam kullanır

Dinamik olarak tuumlr belirtilen bir fonksiyonel programlama dilidir

Sembolik bir programlama dilidir

Programlama ortamı olarak Drscheme programı kullanmaktadır

DrScheme Scheme programlama dili iccedilin grafiksel bir ortam sunmaktadır

BU DİL NEDEN EĞİTİM DİLİ OLARAK VERİLMELİDİR

BaĢlangıccedil duumlzeydeki bir oumlğrenciyi ele alırsak ona imperative bir dil

oumlğretmeye kalkarsak mesela (basic veya pascal ) oumlğrencinin soyut

duumlĢuumlnmesini kısıtlarız

Ccediluumlnkuuml oumlğrenci problemin ccediloumlzuumlmuumlnuuml duumlĢuumlk soyutlama dilinde ifade

etmede zorlanıyor Aynı durum mantıksal diller iccedilinde geccedilerlidir (prolog)

amacımız baĢlangıccedil seviyesinde olan oumlğrenciye soyut fakat yordamsal

duumlĢuumlnme yeteneğini oumlğretmek Buna uygun olarak fonksiyonel bir dil olabilir

Fonksiyonel dilin yapısı oumlğrencinin matematik bilgisine dayanır mesela liseden

fonksiyonları kuumlme dizi ve mantık kavramların bilinmesi gibi Boumlylece oumlğrenci

elinde olan problemi ccediloumlzmek iccedilin ve bunu bilgisayara aktarmanın en iyi yolu

fonksiyonel bir dil seccedilimidir

Fonksiyonel olarak Scheme dilinin seccedililmesinin oumlnemli nedenleri vardır

1 Dil iĢlemcisini lisans sorunu olmadan bulmak

2 Basit soumlz dizimin olması yani dilin yazım kuralarını zahmetsizce oumlğrenilebilir

3 Veri tipi sadeliği ve dinamik olarak denetlenmesi bu maddeyi accedilıklarsak

oumlğrenci tamsayı reel sayı ayırımını oumlğrenip değiĢkenlerini buna goumlre

tanımlamak zorunda kalmayacak boumlylece oumlğrenci buumltuumln dikkatini problemin

ccediloumlzuumlmuumlne odaklayacak yazım kurallarıyla uğraĢmayacak

4Yorumlayıcı ve etkileĢimli olarak ccedilalıĢma ortamı geri bildirimi

hızlandırdığından oumlğrenme suumlresini hızlandırıyor

5bunları kullanarak dili zorlaĢtıracak ayrıntılara boğulmadan problemleri

ccediloumlzebilecektir

TARİHİ GELİŞİMİ

Scheme 1970 yılı ortalarında MIT profesoumlrleri Guy Lewis Steele ve Gerald Jay Sussman tarafından geliĢtirilmiĢ fonksiyonel bir dildir

BaĢlangıccedilta Sussman ve Hewitt birlikte MDL(MIT Design Language) uumlzerinde bir ccedilalıĢma yaptılar ( MDL Carl Hewittin Planner adlı projesi iccedilin geniĢletilmiĢ bir LISP diyalektidir )

1971 yılında Sussman ve bir grup Profesoumlr Micro-plannerı geliĢtirdiler

Ardından Conniver adında yine LISP tabanlı bir programlama dili geliĢtirdiler( ama bu ccedilalıĢmaların sonuccedillarını pek uumlretken bulamadılar ve farklı yollara youmlneldiler Steele oumlğrenimi suumlresinde dıĢarıdaki geliĢmeleri duumlzenli olarak takip ediyordu

Steele mezun olmasının ardından Sussman ile birlikte MacLisp programlama dilini kullanarak kendilerine ait LISPlerini geliĢtirdi

Daha sonra bu mekanizmayı geliĢtirerek kendi modellerini actor oluĢturabilecek ve mesaj goumlnderebilecek duumlzeye getirmeyi baĢardılar

GeliĢtirdikleri modelleme ccedilalıĢmaları iyiye gidince bu modele Schemer adını verdiler ama daha sonra ana sistem uumlzerine kurulmuĢ ITS dosya sisteminin 6 karakter limitine uymak iccedilin adını Scheme olarak değiĢtirdiler

1973 yılında MIT profesoumlrlerinden Carl Hewitt eĢzamanlı hesaplamada actor model adında matematiksel bir model geliĢtirdi

Sussman ve Steele bu modele daha iyi bir anlam kazandırmak amacıyla Scheme programlama dilini oluĢturdular

Sussman ve Steelein ccedilalıĢmalarıyla kuumlccediluumlk ve yeterli bir LISP diyalekti ortaya ccedilıkmıĢ oldu

1980 den beri geliĢtirilmiyor

IEEE tarafından 1978ndash1990 ile standartlaĢtırılmıĢtır

ġu anda R6RS (Revised6 Report on the Algorithmic Language Scheme) en son kabul edilen rapordur

MITlsquo de lisans oumlğrencilerine ilk programlama dersi olarak verilmekteydi

MIT profesoumlrlerinden Harold Abelson ve Gerald Jay Sussman tarafından yazılmıĢ ve ilk baskısı 1984 yılında oluĢturulmuĢ

Structure ve Interpretation of Computer Programs kitabı derslerde kullanılmaktadır Orta Doğu Teknik Uumlniversitesinde de boumlluumlme giren oumlğrenciler programlama duumlnyasındaki ilk adımlarını Scheme programlama dilini oumlğrenerek baĢlamaktadır

Ders kitabı olarak zamanın MIT profesoumlrlerinden Biran Harvey(UC Berkeley) ve Matthew Wright tarafından yazılmıĢ Simply Scheme adlı kitap kullanılmaktadır

KISACA

1 Ġlk ccedilıkıĢı 1975 2 TASARIMCISI Guy L Steele ve Gerald Jay Sussman 3 SUumlRUumlMUumlR6RS (onaylı standart) (2007) 4 TIP SĠSTEMĠ guumlccedilluuml dinamik

5 ETKĠLENDĠKLERI DĠL Lisp ALGOL MDL 6 ETKILEDIĞI DIL Common Lisp EuLisp JavaScript R Ruby Dylan

Lua Hop Racket 7 DOSYA UZANTISIscm ss 8 PARADĠKMASI fonksiyonel meta yordamsal

Scheme dili fonksiyonel bir dildir

Nesneye dair hiccedil bir Ģey yoktur Yorumlayıcı tarafından yorumlanan

fonksiyonel bir dildir

Yani programlar matematiksel fonksiyonlar tarafından yapılır

Fonksiyonların aldıkları girdi ve ccedilıktı sabittir

Programa girilen değere goumlre fonksiyonda bir değiĢiklik yapmadan

fonksiyonu aynen uygular Atama deyimleri bulunmaz

DeğiĢken değerleri bir defa atanır ve bir daha değiĢmez Fonksiyonel

programların artılarından biri bir fonksiyonu ccedilağırmanın kendi sonucunu

geriye doumlnduumlrmekten baĢka bir sonucu olmadığından bug oluĢumunu

engeller

EDİTOumlR KURULUMU

Bu linkten ldquo httpracket-langorgdownload ldquo editoumlruuml indirilebilir

Next diyoruz

Next diyoruz

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 3: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

ve pek uumlretken olmayan bir youmlntemdir fakat temel algoritmik kavramların anlaĢılmasını kolaylaĢtırdığından tercih edilir

Scheme aynı zamanda ccedileĢitli derleyicilere (Chicken Stalin Chez Ikarus gibi) de sahiptir

Bunun dıĢında Scheme birccedilok paradigmayı iccedilinde barındıran bir programlama dilidir(fonksiyonel programlama baĢta olmak uumlzere)

EĢzamanlı hesaplama dilinin bazı oumlzelliklerini de taĢımaktadır

Scheme yorumlayıcısı (interpreter) eĢzamanlaĢıcısı (synchronizers) ve değiĢken huumlcreleri iccedilin gereken temel oumlzellikleri iccedilinde barındırmamaktadır

Scheme bir paralel programlama dili olmasa da taĢıdığı oumlzelliklerle tam olarak bir fonksiyonel programlama dilidir

Ayrıca Scheme buyurgan bir youmlne de sahiptir ama bu dili gerek akademik duumlnyada gerekse sektoumlrde oumlne ccedilıkaran ve tercih edilmesine sebep olan youmlnuuml fonksiyonel paradigmaya olan uygunluğudur

Ccedilok az sayıda programlama kuralıyla anlatımlar oluĢturulmasını sağlar

Pratik ve yalın yapısıyla guumlnuumlmuumlzde var olan pek ccedilok programlama kavramını destekler

Lisp lehccedilesidir

Genelde hızlı olmasını yapay zekacirc iĢlerinde kullanılmasında yardımcı olur

Dikkat ccedileken bir dil guumlzel sevimli ama akademik ortamlar dıĢında pratik bir kullanımı yoktur

Temel ilgi yazılım geliĢtirmeye uygunluktan ccedilok verimliliktir

Sadece statik kapsam kullanır

Dinamik olarak tuumlr belirtilen bir fonksiyonel programlama dilidir

Sembolik bir programlama dilidir

Programlama ortamı olarak Drscheme programı kullanmaktadır

DrScheme Scheme programlama dili iccedilin grafiksel bir ortam sunmaktadır

BU DİL NEDEN EĞİTİM DİLİ OLARAK VERİLMELİDİR

BaĢlangıccedil duumlzeydeki bir oumlğrenciyi ele alırsak ona imperative bir dil

oumlğretmeye kalkarsak mesela (basic veya pascal ) oumlğrencinin soyut

duumlĢuumlnmesini kısıtlarız

Ccediluumlnkuuml oumlğrenci problemin ccediloumlzuumlmuumlnuuml duumlĢuumlk soyutlama dilinde ifade

etmede zorlanıyor Aynı durum mantıksal diller iccedilinde geccedilerlidir (prolog)

amacımız baĢlangıccedil seviyesinde olan oumlğrenciye soyut fakat yordamsal

duumlĢuumlnme yeteneğini oumlğretmek Buna uygun olarak fonksiyonel bir dil olabilir

Fonksiyonel dilin yapısı oumlğrencinin matematik bilgisine dayanır mesela liseden

fonksiyonları kuumlme dizi ve mantık kavramların bilinmesi gibi Boumlylece oumlğrenci

elinde olan problemi ccediloumlzmek iccedilin ve bunu bilgisayara aktarmanın en iyi yolu

fonksiyonel bir dil seccedilimidir

Fonksiyonel olarak Scheme dilinin seccedililmesinin oumlnemli nedenleri vardır

1 Dil iĢlemcisini lisans sorunu olmadan bulmak

2 Basit soumlz dizimin olması yani dilin yazım kuralarını zahmetsizce oumlğrenilebilir

3 Veri tipi sadeliği ve dinamik olarak denetlenmesi bu maddeyi accedilıklarsak

oumlğrenci tamsayı reel sayı ayırımını oumlğrenip değiĢkenlerini buna goumlre

tanımlamak zorunda kalmayacak boumlylece oumlğrenci buumltuumln dikkatini problemin

ccediloumlzuumlmuumlne odaklayacak yazım kurallarıyla uğraĢmayacak

4Yorumlayıcı ve etkileĢimli olarak ccedilalıĢma ortamı geri bildirimi

hızlandırdığından oumlğrenme suumlresini hızlandırıyor

5bunları kullanarak dili zorlaĢtıracak ayrıntılara boğulmadan problemleri

ccediloumlzebilecektir

TARİHİ GELİŞİMİ

Scheme 1970 yılı ortalarında MIT profesoumlrleri Guy Lewis Steele ve Gerald Jay Sussman tarafından geliĢtirilmiĢ fonksiyonel bir dildir

BaĢlangıccedilta Sussman ve Hewitt birlikte MDL(MIT Design Language) uumlzerinde bir ccedilalıĢma yaptılar ( MDL Carl Hewittin Planner adlı projesi iccedilin geniĢletilmiĢ bir LISP diyalektidir )

1971 yılında Sussman ve bir grup Profesoumlr Micro-plannerı geliĢtirdiler

Ardından Conniver adında yine LISP tabanlı bir programlama dili geliĢtirdiler( ama bu ccedilalıĢmaların sonuccedillarını pek uumlretken bulamadılar ve farklı yollara youmlneldiler Steele oumlğrenimi suumlresinde dıĢarıdaki geliĢmeleri duumlzenli olarak takip ediyordu

Steele mezun olmasının ardından Sussman ile birlikte MacLisp programlama dilini kullanarak kendilerine ait LISPlerini geliĢtirdi

Daha sonra bu mekanizmayı geliĢtirerek kendi modellerini actor oluĢturabilecek ve mesaj goumlnderebilecek duumlzeye getirmeyi baĢardılar

GeliĢtirdikleri modelleme ccedilalıĢmaları iyiye gidince bu modele Schemer adını verdiler ama daha sonra ana sistem uumlzerine kurulmuĢ ITS dosya sisteminin 6 karakter limitine uymak iccedilin adını Scheme olarak değiĢtirdiler

1973 yılında MIT profesoumlrlerinden Carl Hewitt eĢzamanlı hesaplamada actor model adında matematiksel bir model geliĢtirdi

Sussman ve Steele bu modele daha iyi bir anlam kazandırmak amacıyla Scheme programlama dilini oluĢturdular

Sussman ve Steelein ccedilalıĢmalarıyla kuumlccediluumlk ve yeterli bir LISP diyalekti ortaya ccedilıkmıĢ oldu

1980 den beri geliĢtirilmiyor

IEEE tarafından 1978ndash1990 ile standartlaĢtırılmıĢtır

ġu anda R6RS (Revised6 Report on the Algorithmic Language Scheme) en son kabul edilen rapordur

MITlsquo de lisans oumlğrencilerine ilk programlama dersi olarak verilmekteydi

MIT profesoumlrlerinden Harold Abelson ve Gerald Jay Sussman tarafından yazılmıĢ ve ilk baskısı 1984 yılında oluĢturulmuĢ

Structure ve Interpretation of Computer Programs kitabı derslerde kullanılmaktadır Orta Doğu Teknik Uumlniversitesinde de boumlluumlme giren oumlğrenciler programlama duumlnyasındaki ilk adımlarını Scheme programlama dilini oumlğrenerek baĢlamaktadır

Ders kitabı olarak zamanın MIT profesoumlrlerinden Biran Harvey(UC Berkeley) ve Matthew Wright tarafından yazılmıĢ Simply Scheme adlı kitap kullanılmaktadır

KISACA

1 Ġlk ccedilıkıĢı 1975 2 TASARIMCISI Guy L Steele ve Gerald Jay Sussman 3 SUumlRUumlMUumlR6RS (onaylı standart) (2007) 4 TIP SĠSTEMĠ guumlccedilluuml dinamik

5 ETKĠLENDĠKLERI DĠL Lisp ALGOL MDL 6 ETKILEDIĞI DIL Common Lisp EuLisp JavaScript R Ruby Dylan

Lua Hop Racket 7 DOSYA UZANTISIscm ss 8 PARADĠKMASI fonksiyonel meta yordamsal

Scheme dili fonksiyonel bir dildir

Nesneye dair hiccedil bir Ģey yoktur Yorumlayıcı tarafından yorumlanan

fonksiyonel bir dildir

Yani programlar matematiksel fonksiyonlar tarafından yapılır

Fonksiyonların aldıkları girdi ve ccedilıktı sabittir

Programa girilen değere goumlre fonksiyonda bir değiĢiklik yapmadan

fonksiyonu aynen uygular Atama deyimleri bulunmaz

DeğiĢken değerleri bir defa atanır ve bir daha değiĢmez Fonksiyonel

programların artılarından biri bir fonksiyonu ccedilağırmanın kendi sonucunu

geriye doumlnduumlrmekten baĢka bir sonucu olmadığından bug oluĢumunu

engeller

EDİTOumlR KURULUMU

Bu linkten ldquo httpracket-langorgdownload ldquo editoumlruuml indirilebilir

Next diyoruz

Next diyoruz

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 4: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

Ccediluumlnkuuml oumlğrenci problemin ccediloumlzuumlmuumlnuuml duumlĢuumlk soyutlama dilinde ifade

etmede zorlanıyor Aynı durum mantıksal diller iccedilinde geccedilerlidir (prolog)

amacımız baĢlangıccedil seviyesinde olan oumlğrenciye soyut fakat yordamsal

duumlĢuumlnme yeteneğini oumlğretmek Buna uygun olarak fonksiyonel bir dil olabilir

Fonksiyonel dilin yapısı oumlğrencinin matematik bilgisine dayanır mesela liseden

fonksiyonları kuumlme dizi ve mantık kavramların bilinmesi gibi Boumlylece oumlğrenci

elinde olan problemi ccediloumlzmek iccedilin ve bunu bilgisayara aktarmanın en iyi yolu

fonksiyonel bir dil seccedilimidir

Fonksiyonel olarak Scheme dilinin seccedililmesinin oumlnemli nedenleri vardır

1 Dil iĢlemcisini lisans sorunu olmadan bulmak

2 Basit soumlz dizimin olması yani dilin yazım kuralarını zahmetsizce oumlğrenilebilir

3 Veri tipi sadeliği ve dinamik olarak denetlenmesi bu maddeyi accedilıklarsak

oumlğrenci tamsayı reel sayı ayırımını oumlğrenip değiĢkenlerini buna goumlre

tanımlamak zorunda kalmayacak boumlylece oumlğrenci buumltuumln dikkatini problemin

ccediloumlzuumlmuumlne odaklayacak yazım kurallarıyla uğraĢmayacak

4Yorumlayıcı ve etkileĢimli olarak ccedilalıĢma ortamı geri bildirimi

hızlandırdığından oumlğrenme suumlresini hızlandırıyor

5bunları kullanarak dili zorlaĢtıracak ayrıntılara boğulmadan problemleri

ccediloumlzebilecektir

TARİHİ GELİŞİMİ

Scheme 1970 yılı ortalarında MIT profesoumlrleri Guy Lewis Steele ve Gerald Jay Sussman tarafından geliĢtirilmiĢ fonksiyonel bir dildir

BaĢlangıccedilta Sussman ve Hewitt birlikte MDL(MIT Design Language) uumlzerinde bir ccedilalıĢma yaptılar ( MDL Carl Hewittin Planner adlı projesi iccedilin geniĢletilmiĢ bir LISP diyalektidir )

1971 yılında Sussman ve bir grup Profesoumlr Micro-plannerı geliĢtirdiler

Ardından Conniver adında yine LISP tabanlı bir programlama dili geliĢtirdiler( ama bu ccedilalıĢmaların sonuccedillarını pek uumlretken bulamadılar ve farklı yollara youmlneldiler Steele oumlğrenimi suumlresinde dıĢarıdaki geliĢmeleri duumlzenli olarak takip ediyordu

Steele mezun olmasının ardından Sussman ile birlikte MacLisp programlama dilini kullanarak kendilerine ait LISPlerini geliĢtirdi

Daha sonra bu mekanizmayı geliĢtirerek kendi modellerini actor oluĢturabilecek ve mesaj goumlnderebilecek duumlzeye getirmeyi baĢardılar

GeliĢtirdikleri modelleme ccedilalıĢmaları iyiye gidince bu modele Schemer adını verdiler ama daha sonra ana sistem uumlzerine kurulmuĢ ITS dosya sisteminin 6 karakter limitine uymak iccedilin adını Scheme olarak değiĢtirdiler

1973 yılında MIT profesoumlrlerinden Carl Hewitt eĢzamanlı hesaplamada actor model adında matematiksel bir model geliĢtirdi

Sussman ve Steele bu modele daha iyi bir anlam kazandırmak amacıyla Scheme programlama dilini oluĢturdular

Sussman ve Steelein ccedilalıĢmalarıyla kuumlccediluumlk ve yeterli bir LISP diyalekti ortaya ccedilıkmıĢ oldu

1980 den beri geliĢtirilmiyor

IEEE tarafından 1978ndash1990 ile standartlaĢtırılmıĢtır

ġu anda R6RS (Revised6 Report on the Algorithmic Language Scheme) en son kabul edilen rapordur

MITlsquo de lisans oumlğrencilerine ilk programlama dersi olarak verilmekteydi

MIT profesoumlrlerinden Harold Abelson ve Gerald Jay Sussman tarafından yazılmıĢ ve ilk baskısı 1984 yılında oluĢturulmuĢ

Structure ve Interpretation of Computer Programs kitabı derslerde kullanılmaktadır Orta Doğu Teknik Uumlniversitesinde de boumlluumlme giren oumlğrenciler programlama duumlnyasındaki ilk adımlarını Scheme programlama dilini oumlğrenerek baĢlamaktadır

Ders kitabı olarak zamanın MIT profesoumlrlerinden Biran Harvey(UC Berkeley) ve Matthew Wright tarafından yazılmıĢ Simply Scheme adlı kitap kullanılmaktadır

KISACA

1 Ġlk ccedilıkıĢı 1975 2 TASARIMCISI Guy L Steele ve Gerald Jay Sussman 3 SUumlRUumlMUumlR6RS (onaylı standart) (2007) 4 TIP SĠSTEMĠ guumlccedilluuml dinamik

5 ETKĠLENDĠKLERI DĠL Lisp ALGOL MDL 6 ETKILEDIĞI DIL Common Lisp EuLisp JavaScript R Ruby Dylan

Lua Hop Racket 7 DOSYA UZANTISIscm ss 8 PARADĠKMASI fonksiyonel meta yordamsal

Scheme dili fonksiyonel bir dildir

Nesneye dair hiccedil bir Ģey yoktur Yorumlayıcı tarafından yorumlanan

fonksiyonel bir dildir

Yani programlar matematiksel fonksiyonlar tarafından yapılır

Fonksiyonların aldıkları girdi ve ccedilıktı sabittir

Programa girilen değere goumlre fonksiyonda bir değiĢiklik yapmadan

fonksiyonu aynen uygular Atama deyimleri bulunmaz

DeğiĢken değerleri bir defa atanır ve bir daha değiĢmez Fonksiyonel

programların artılarından biri bir fonksiyonu ccedilağırmanın kendi sonucunu

geriye doumlnduumlrmekten baĢka bir sonucu olmadığından bug oluĢumunu

engeller

EDİTOumlR KURULUMU

Bu linkten ldquo httpracket-langorgdownload ldquo editoumlruuml indirilebilir

Next diyoruz

Next diyoruz

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 5: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

BaĢlangıccedilta Sussman ve Hewitt birlikte MDL(MIT Design Language) uumlzerinde bir ccedilalıĢma yaptılar ( MDL Carl Hewittin Planner adlı projesi iccedilin geniĢletilmiĢ bir LISP diyalektidir )

1971 yılında Sussman ve bir grup Profesoumlr Micro-plannerı geliĢtirdiler

Ardından Conniver adında yine LISP tabanlı bir programlama dili geliĢtirdiler( ama bu ccedilalıĢmaların sonuccedillarını pek uumlretken bulamadılar ve farklı yollara youmlneldiler Steele oumlğrenimi suumlresinde dıĢarıdaki geliĢmeleri duumlzenli olarak takip ediyordu

Steele mezun olmasının ardından Sussman ile birlikte MacLisp programlama dilini kullanarak kendilerine ait LISPlerini geliĢtirdi

Daha sonra bu mekanizmayı geliĢtirerek kendi modellerini actor oluĢturabilecek ve mesaj goumlnderebilecek duumlzeye getirmeyi baĢardılar

GeliĢtirdikleri modelleme ccedilalıĢmaları iyiye gidince bu modele Schemer adını verdiler ama daha sonra ana sistem uumlzerine kurulmuĢ ITS dosya sisteminin 6 karakter limitine uymak iccedilin adını Scheme olarak değiĢtirdiler

1973 yılında MIT profesoumlrlerinden Carl Hewitt eĢzamanlı hesaplamada actor model adında matematiksel bir model geliĢtirdi

Sussman ve Steele bu modele daha iyi bir anlam kazandırmak amacıyla Scheme programlama dilini oluĢturdular

Sussman ve Steelein ccedilalıĢmalarıyla kuumlccediluumlk ve yeterli bir LISP diyalekti ortaya ccedilıkmıĢ oldu

1980 den beri geliĢtirilmiyor

IEEE tarafından 1978ndash1990 ile standartlaĢtırılmıĢtır

ġu anda R6RS (Revised6 Report on the Algorithmic Language Scheme) en son kabul edilen rapordur

MITlsquo de lisans oumlğrencilerine ilk programlama dersi olarak verilmekteydi

MIT profesoumlrlerinden Harold Abelson ve Gerald Jay Sussman tarafından yazılmıĢ ve ilk baskısı 1984 yılında oluĢturulmuĢ

Structure ve Interpretation of Computer Programs kitabı derslerde kullanılmaktadır Orta Doğu Teknik Uumlniversitesinde de boumlluumlme giren oumlğrenciler programlama duumlnyasındaki ilk adımlarını Scheme programlama dilini oumlğrenerek baĢlamaktadır

Ders kitabı olarak zamanın MIT profesoumlrlerinden Biran Harvey(UC Berkeley) ve Matthew Wright tarafından yazılmıĢ Simply Scheme adlı kitap kullanılmaktadır

KISACA

1 Ġlk ccedilıkıĢı 1975 2 TASARIMCISI Guy L Steele ve Gerald Jay Sussman 3 SUumlRUumlMUumlR6RS (onaylı standart) (2007) 4 TIP SĠSTEMĠ guumlccedilluuml dinamik

5 ETKĠLENDĠKLERI DĠL Lisp ALGOL MDL 6 ETKILEDIĞI DIL Common Lisp EuLisp JavaScript R Ruby Dylan

Lua Hop Racket 7 DOSYA UZANTISIscm ss 8 PARADĠKMASI fonksiyonel meta yordamsal

Scheme dili fonksiyonel bir dildir

Nesneye dair hiccedil bir Ģey yoktur Yorumlayıcı tarafından yorumlanan

fonksiyonel bir dildir

Yani programlar matematiksel fonksiyonlar tarafından yapılır

Fonksiyonların aldıkları girdi ve ccedilıktı sabittir

Programa girilen değere goumlre fonksiyonda bir değiĢiklik yapmadan

fonksiyonu aynen uygular Atama deyimleri bulunmaz

DeğiĢken değerleri bir defa atanır ve bir daha değiĢmez Fonksiyonel

programların artılarından biri bir fonksiyonu ccedilağırmanın kendi sonucunu

geriye doumlnduumlrmekten baĢka bir sonucu olmadığından bug oluĢumunu

engeller

EDİTOumlR KURULUMU

Bu linkten ldquo httpracket-langorgdownload ldquo editoumlruuml indirilebilir

Next diyoruz

Next diyoruz

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 6: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

5 ETKĠLENDĠKLERI DĠL Lisp ALGOL MDL 6 ETKILEDIĞI DIL Common Lisp EuLisp JavaScript R Ruby Dylan

Lua Hop Racket 7 DOSYA UZANTISIscm ss 8 PARADĠKMASI fonksiyonel meta yordamsal

Scheme dili fonksiyonel bir dildir

Nesneye dair hiccedil bir Ģey yoktur Yorumlayıcı tarafından yorumlanan

fonksiyonel bir dildir

Yani programlar matematiksel fonksiyonlar tarafından yapılır

Fonksiyonların aldıkları girdi ve ccedilıktı sabittir

Programa girilen değere goumlre fonksiyonda bir değiĢiklik yapmadan

fonksiyonu aynen uygular Atama deyimleri bulunmaz

DeğiĢken değerleri bir defa atanır ve bir daha değiĢmez Fonksiyonel

programların artılarından biri bir fonksiyonu ccedilağırmanın kendi sonucunu

geriye doumlnduumlrmekten baĢka bir sonucu olmadığından bug oluĢumunu

engeller

EDİTOumlR KURULUMU

Bu linkten ldquo httpracket-langorgdownload ldquo editoumlruuml indirilebilir

Next diyoruz

Next diyoruz

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 7: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

EDİTOumlR KURULUMU

Bu linkten ldquo httpracket-langorgdownload ldquo editoumlruuml indirilebilir

Next diyoruz

Next diyoruz

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 8: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

Install diyoruz

Bu boumlluumlm bittikten sonra editoumlruumlmuumlzuumln kurulumu tamamlanmış olacaktır

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 9: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

EDİTOumlR TANITIMI

FILE MENUumlSUuml

mdashNEW yeni sayfa accedilar

mdashNEW TAB yeni bir sekme accedilar

mdashOPEN oumlnceden yapılmıĢ dosyayı accedilar

mdashOPEN RECENT en son accedilılmıĢ olan sayfayı accedilar

mdashINSTALL PLT FILE buna tıkladığımızda WEB ve FILE diye 2 kısım

karsımıza ccedilıkar

WEB de web den dosya yuumlklemek iccedilin (URL) giriyoruz

FILE da ise bilgisayarda bulunan herhangi bir DrScheme projesini accedilmak

iccedilin kullanıyoruz

mdashREVERT projeyi en son derlenmiĢ haline doumlnduumlruumlr Yani derlendikten

sonraki değiĢiklikleri siler

mdashSAVE DEFINITIONS projeyi kaydeder

mdash SAVE DEFINITIONS AS projeyi farklı isimde kaydetmek iccedilin kullanılır

mdashPRINT DEFINITIONS projeyi yazıcıdan ccedilıkarmak iccedilin kullanılır

mdashPRINT INTERACTION projenin ccedilıktısını yazıcıdan ccedilıkarmak iccedilin kullanılır

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 10: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

EDIT MENUumlSUuml

mdashUNDO (ctrl+z) geri alma goumlrevini yapar

mdashREDO (ctrl+y) ileri alma goumlrevini yapar

mdashOVERWRITE MODE C dilindeki INSERT gibi yeni harfi eski harfin uumlzerine

yazar Bir ya da birkaccedil harfi değiĢtirir(Biz uumlzerine gelip tıkladıktan sonra

yazarken değiĢtirir)

mdashWRAP TEXT kod satırları uzadığında kodlar otomatik alt satıra geccediler

mdashFIND ekranda yazılanları değiĢtirmek iccedilin kullanılır FIND a tıkladığımızda alt

kısımda ccedilıkan alana değiĢtirmek istediğimiz yeni değeri yazdığımızda editoumlr

bulduğu kelimeleri yuvarlak iccediline alınır

mdashREPLACE değiĢtirmek istenen yeri yazıyoruz(Ccedilıkan iki kutudan birine nereyi

değiĢtireceğimizi diğerine neyle değiĢtireceğimizi yazarız)

mdashHĠDE REPLACE atadığımız yeni değeri gizler

mdashKEY BINDING anahtar kelimeler

mdashPREFERENCES buradan oumlzellikleri ayarlıyoruz Oumlrneğin

FONT SĠZE yazının buumlyuumlkluumlğuumlnuuml

FONT NAME yazının ismini

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 11: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

COLORS da Background Color arka plan rengini ayarlar

SCHEME symbol keyword string vb yazının rengi tipi koyuluğunu

değiĢtirmek iccedilin kullanılır

FIND CASE SENSTĠVE kuumlccediluumlk buumlyuumlk harfe duyarlı olup olmadığını

goumlsterir Ġstersek ayarlayabiliriz

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 12: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

VIEW MENUumlSUuml

mdashHIDE DEFINITION kodların yazıldığı ekranı gizler(uumlst kısım)

mdashHIDE INTERACTION ccedilıktıların yazılı olduğu ekranı gizler(alt kısım)

mdashUSE HORIZONTAL LAYOUT editoumlruumlmuumlzdeki alttaki kısmı yanda goumlsterir

mdashSHOW PROGRAM COUNTER definition kısmındaki kodların toplu

goumlruumlnduumlğuuml ekranı getirir

mdashTOOLBAR

mdash TOOLBAR ON LEFT toolbarı solda goumlsterir mdash TOOLBAR ON RIGHT toolbarı sağda goumlsterir mdash TOOLBAR ON TOP toolbarı tepede goumlsterir mdash TOOLBAR ON HIDDEN toolbarı tamamen saklar mdashSHOW LĠNE NUMBERS sol tarafta satırlara sıra no verir

mdashSPLIT ekranın uumlst kısmını 2 ye ayırır(alt alta)

mdashCOLLAPSE ekranı eski haline getirir

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 13: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

LANGUAGE MENUumlSUuml

mdashCHOOSE LANGUAGE dil seccedilimi yapmayı sağlar Kullanıcı seviyesine goumlre dili seccediler Bazı

komutlar her dilde ccedilalıĢmamaktadır Oumlrnegin

BEGINNING STUDENT seccedilildiğinde Display komutu ccedilalıĢmaz

PRETTY BIG seccedilildiğinde ccedilalıĢır

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 14: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

RACKET MENUumlSUuml

mdashRUN programı ccedilalıĢtırır

mdashLIMIT MEMORY -unlimited

mdashlimited

Bu oumlzellikle varsayılan limit(128mb) olan bu hafızayı

değiĢtirebiliyoruz Boumlylece proje bize lazım olan hafıza kadar yer tutuyor

fazlasını tutmuyor

mdashCREATE EXECUTABLE Exe oluĢturmamızı sağlar

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 15: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

mdashCOMMENT OUT WĠTH A BOX kutu iccedilinde yorum satırı oluĢturmamızı

sağlar

mdashCOMMENT OUT WĠTH SEMĠCOLONS ( ) noktalı virguumll kullanarak yorum

satırı oluĢturmamızı sağlar

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 16: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

INSERT MENUumlSUuml

mdashINSERT COMMENT BOX kutu iccedilinde yorum satırı eklemeyi sağlar

mdashINSERT IMAGE resim eklenir

mdashINSERT FRACTION kesirli sayı oluĢturmak iccedilin kullanılır

mdashCHECK SYNTAX yazım hatalarını kontrol eder

mdashMACRO STEPPER kodu satır ccedilalıĢtırarak ilerler C taki F11 tuĢu gibi

ccedilalıĢır

Editoumlr uumlzerinde ise

Sağ alttaki ccedilarpı alt ekranı kapatmamızı sağlar

Sağ alt koumlĢedeki sayılar imlecin bulunduğu satır ve suumltunu goumlsterir

Sol altta seccediltiğimiz dil yazılıdır Uumlzerine tıkladığımızda daha oumlnceden

kullandığımız dillerin listesi goumlruumlnuumlr

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 17: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

DOSYA İŞLEMLERİ

Open-input-file Okunacak dosyayı accedilar

Open-output-file Yazılacak dosyayı accedilarDosya oumlnceden oluĢturulmamıĢsa oluĢturur

Close-input-port Input dosyasını kapatır

Close-output-port Output dosyasını kapatır

Read-char Dosyadan bir karakter okuduktan sonra imleci diğer karaktere taĢır Peek-char read-charlsquodan farkı imleci taĢımaz

Read-string Belirtilen sayı kadar karakter okur

Read-line Satır okur

Write Dosyaya string ifadeyi tırnak iĢaretleriyle birlikte yazar

Display Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar

Write-string Dosyaya string ifadeyi tırnak iĢaretleri olmadan yazar ayrıca karakter saysını

alt ekranda goumlsterir

With-input-from-file with-output-to-file Dosya accedilma kapatma iĢlemini otomatik yapıp

verilen proseduumlruuml uygular

Oumlrnek kodlar

Dosyadan okuma

Dosyada Scheme is fun

Write with Schemelsquo yazılıdır

(define p (open-input-file testtxt)) (read p)

(read-line p)

(read-string 300 p)

(close-input-port p) Ccedilıktısı Scheme is funr

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 18: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

Write with Scheme

----------------------

(with-input-from-file testtxt

(lambda ()

(read) ))

Ccedilıktısı Scheme

Dosyaya yazma

(define y merhaba)

(define p (open-output-file testtxt))

(write y p)

(display y p)

(write ifade p )

(write-char k p)

(close-output-port p)

-------------------------

(with-output-to-file test2txt

(lambda ()

(display Hello world) ))

---------------------------

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 19: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

KULLANICI ETKİLEŞİMİ

Bu dilde fonksiyonlar değiĢkenlere değer olarak atanan veya fonksiyonlara

delil olarak geccedilirilebilir Schemelsquode Scheme kodunu oluĢturan ve

yorumlanmasını(interpretation) isteyen bir fonksiyon tanımlamak muumlmkuumlnduumlr

Bu muumlmkuumlnduumlr ccediluumlnkuuml yorumlayıcı(interpreter) kullanıcı tarafından

eriĢilebilen(user-available) bir fonksiyondur Fonksiyonel dillerin tasarımı

Matematiksel Fonksiyonlara dayalıdır

Kullanıcıya da yakın olan sağlam bir teorik temel fakat nispeten programların

koĢacağı makinelerin mimarileriyle ilgisizdir

Schemelsquoi ayrıca diğer dillerden ayıra en oumlnemli oumlzelliklerden biri de ccedilalıĢma

esnasında uygulamaya muumldahale edebilme iznini vermesidir Bu oumlzellik

sadece oumlnceden derlenmiĢ ve ağır plug-inler aracılığı ile geniĢletilen

uygulamalara kıyasla ccedilok daha buumlyuumlk bir avantaj

FONKSİYONLAR

Bu dilde fonksiyonlar birinci-sınıf varlıklardır(entities)

ndashĠfadelerin(expressions) değerleri ve listelerin elemanları olabilirler

ndashDeğiĢkenlere(variables) atanabilirler ve parametrelere geccedililebilirler

Scheme dilindeki formlar ikiye ayrılır

Temel Formlar define lambda if quote unquote unquote-splicing

quasiquote define-syntax let-syntax letrec-syntax syntax-rules set

( 5 4) sonuccedil olarak karĢımıza ccedilikacaktir

Ifadesi de yorum satırı haline getirir kodu

Ġf deyimini oumlrnekle accedilıklayalım

(If lsaquo expr rsaquo lsaquoexpr rsaquo lsaquoexpr rsaquo)

(If (= (+ 4 5) 9) t f)

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 20: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

Burada ilk verdiğimiz arguumlman (= (+ 4 5) 9) iĢleminin doğru olup

olmadığına bakar Eğer iĢlem doğruysa ccedilıktı olarak t yanlıĢsa f doumlner

Anlayacağınız uumlzere bu oumlzel durum proseduumlruuml koĢul gerektiren bir proseduumlr

bu durumda ilk verdiğimiz arguumlman da koĢulu belirleyen parccedila oluyor Oumlnce

o koĢulu inceleyen yorumlayıcı da daha sonra verdiğimiz diğer arguumlmanları

koĢula goumlre seccedilerek bize gereken ccedilıktıyı veriyor

Cond deyimi( cond[ltİfadegt ltİfadegt] )

Bir soruya dayalı alternatif cevapları seccedilmek istiyorsanız cond ifadesi kullanılır

ġart ifadesidir

Cond Ģeklinde koumlĢeli parantez maddeler dizisi iccedilerir

(Cond

((ltSıcaklık 50) Soğuk)

((gt Sıcaklık 90) Ccedilok sıcak )

(else Sorun yok))

Ayrıca else Scheme dilinde cond ifadesiyle kullanılır diğer dillerde olduğu gibi if

le değil Else ifadesi ise diğer koĢullar olmadığında else koĢulu olacaktır

Do ifadesi

(do ((i 0 (+ i 1))) ((gt i 2)) (display i) (newline))

Programın ccedilıktısı

0

1

2 dir Ġlk oumlnce i ye 0 atıyor ve i yi 1 er 1 er artırarak i 2 den buumlyuumlk olana

kadar doumlnduumlruumlyor display ile de ekrana yazdırıyornewline satırı ilede bir alt

satıra geccediliyor

While ifadesi

(While (koĢul ))

(Deyim1)

(Deyim2)

)

Let ifadesi

(let ((x 5)) ( x 2))

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 21: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

Ekran ccedilıktısı ise 10 olurLet yanındaki ilk koĢul ifadesinde değer ataması

yapılır ve diğer ifadede de matematiksel iĢlemi gerccedilekleĢtirir

Listeler

List fonksiyonu herhangi bir sayı alır ve değerlerini iccedileren bir liste doumlnduumlruumlr

gt(listKırmızı YeĢil Mavi)

(Kırmızı yeĢilmavi)

gt(list 1 2 3 4 5)

(1 2 3 4 5)

LIST

ndash Herhangi bir sayıda parametre alır elemanları bu parametreler olan bir liste

doumlnduumlruumlr

Ayrıca Bizim listelerde bulmak iccedilin uğraĢtığımız problemler iccedilin direk

fonksiyonlar var Mesela

first listenin ilk elemanını alır

Rest listenin ilk elemanı haricindekileri alır

gt (first (list 1 2 3 ))

1

gt(rest (list 1 2 3 ))

2 3

Listeler iccedilin bir oumlrnek daha

gt( list ( list 1 2 3 ) 5 (list a b c) )

((1 2 3) 5 (a b c))

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 22: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

Hello World Uygulaması

Programlamaya ilk baslayan herkesin yaptığı gibi bizde scheme dilinde

ekrana ―hello world yazdiralimScheme dilinde farkli seviyelerde farklı kodlar

kullanilirPretty Big de hemen hemen buumltuumln kodlar ccedilalıĢtığı iccedilin biz genelde bu

level ı kullaniyoruz

Display ―Hello World

(write Hello World )

―Hello World

Yukarı da goumlruumllen kodlar ccedilalıĢtırıldığında aynı ekran ccedilıktısına sahip

olurlarGoumlruumllduumlğuuml gibi ne noktalı virguumll nede fazla kelimeye gerek kalmıyor

Matematik Fonksiyonları

(Exp x) e^x in sonucunu doumlnduumlruumlr

(Log x) x sayısının logaritma değerini doumlnduumlruumlr

(sqrt x) x koumlkuumlnuumln karesini doumlnduumlruumlr

(max x1 x2) verilen listeden en buumlyuumlk sayıyı doumlnduumlruumlr

(min x1 x2) verilen listeden en kuku sayıyı doumlnduumlruumlr

(quotient x1 x2) x1x2 kesrinin boumlluumlmuumlnuuml doumlnduumlruumlr

(remian x1 x2) x1x2 kesrinin kalanini doumlnduumlruumlr

(modula x1 x2) x1 in x2 ye moduumlluuml sonucunu doumlnduumlruumlr

(gcm num1 num2 ) Verilen listenin en buumlyuumlk ortak boumlleni doumlnduumlruumlr

(lcm num1 num2 ) Verilen listenin en kuku ortak ccedilarpanı doumlnduumlruumlr

(Ceiling x) x ten kuku olmayan en kuku değeri doumlnduumlruumlr

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 23: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

( turn cate x) Mutlak değeri x in mutlak değerinden buumlyuumlk olmayan Xlsquo en

yakın değeri doumlnduumlruumlr

(round x) xe en yakın değere yuvarlıyor

İlişkisel Operatoumlrler

(=x 1) x 1 ise true doumlnduumlruumlr

(ltx y) x yden kuumlccediluumlkse true doumlnduumlruumlr

(gtx y) x y den buumlyuumlkse true doumlnduumlruumlr

(lt=x y) x yden kuku veya eĢitse true doumlnduumlruumlr

(gt=x y) x yden buumlyuumlk veya eĢitse true doumlnduumlruumlr

(eq x y) x ve y aynı ise true doumlnduumlruumlr

(equal x y) x ve y aynı yapıda olup aynı iccedileriğe sahipse true doumlnduumlruumlr

Tip Yuumlklemeleri

(procedure x)X fonksiyon ise true doumlnduumlruumlr

(null x) X boĢ bir liste ise true doumlnduumlruumlr

(zero x )X sıfır ise true doumlnduumlruumlr

(odd x) X tek ise true doumlnduumlruumlr

(even x) X tek ise true doumlnduumlruumlr

(symbolx) X tek ise true doumlnduumlruumlr

Asal Sayı Bulma Programı

(Define (divides m n)

(Cond

[(zero m) true]

[(amplt m n) false]

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 24: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

[else (divides (- m n) n)]

))

(Define (check-prime prime-cand divisor)

(cond

[(= 1 divisor) true]

[(divides prime-cand divisor) false]

[else (check-prime prime-cand (sub1 divisor))]))

(define (prime x)

(cond

[(= x 0) false]

[(= x 1) false]

[else (check-prime x (- x 1))]

))

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 25: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

KAYNAKLAR

wwwbilgisayarkavramlaricom

httpe-bergicom2010OcakScheme

httpwwwhtdporg2003ndash09ndash26Bookcurriculum-Z-H-1html

httptranslategooglecomtrtranslatehl=tramplangpair=en7Ctrampu=http httpprogramming-musingsorg20091223scheme-lectures-mostly httptranslategooglecomtrtranslatehl=trampsl=enampu=http3A2F2Fw

httpblogyollucomtagscheme

httpwwwschemecomtspl4 httpracket-langorgdownload

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 26: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

PROJE KONUSU SCHEME DİLİNİN OZELİKLERİNİ TAŞIYAN VE BU PDF DE

ANLATILAN KONULAR İLGİLİ 10 SORU HAZIRLANIP BUNLARIN CEVAPLARINI

KULANICIDAN İSTENİLMESİ

PROJEDE KULANILANLAR

LİSTE

FONKSİYON

KOŞUL CUumlMLESİ

DEĞER ATAMALARI

PROJE KODU

(define k 0)

(define doğrular 0)

(define yanlışlar 0)

sorular

(define a 1soru Lamda nedir)

(define A1 1 isimsiz fonksiyonları belirler)

(define B1 2 değer ataması yapar)

(define C1 3 pointer goumlrevi yapar)

(define b 2soru hangisi aritmetik fonksiyon değildir)

(define A2 1 SQRT )

(define B2 2 MIN )

(define C2 3 QUOTE )

(define c 3soru=list kulanımı nasıldır)

(define A3 (1 LIST (A) (B) (C) (D)))

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 27: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

(define B3 (2 LIST A B C D) )

(define C3 (3 LIST A B C D) )

(define d 4soru=equalsimp ne demek)

(define A4 1 iki basit liste alır ve eşitliğini kontrol eder)

(define B4 2 listeleri birbirine atar)

(define C4 3 listeleri eşitler)

(define e1 5soru=append ne işe yarar)

(define A5 1 İki listeyi peş peşe ekler)

(define B5 2 iki listeyi ccedilıkarır)

(define C5 3 iki listeyi ccedilarpar)

(define f 6soru set isimlere değer atar doğrumudur)

(define A6 1 doğru)

(define B6 2 yanlis)

doğru cevap listesi

(define DListe (list 1 1 1 2 3 1) )

şıkları yazdırma

(define (Cevaplar cevapListesi)

( cond [(null cevapListesi) 0]

[else (Cevaplar (rest cevapListesi))

(display (first cevapListesi))

(display n)

]))

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 28: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

doğru yanlış kontroluuml

(define kon

(lambda (k FDL)

(cond ((= k FDL) (display Tebrikler )nn)(set dogrular (+ 1 dogrular)))

else ( display Maalesef olmadı (nn)(set yanlislar (+ 1 yanlislar))])))

soru ve şıkları yazdırıp cevap kontroluumlnuuml ccedilağırma

(define (Sorular soruListesi cevpListesi DListesi )

( cond [(null soruListesi) 0]

[else

(Sorular (rest soruListesi) (rest cevpListesi) (rest DListesi ))

(display (first soruListesi))

(display n)

(Cevaplar (first cevpListesi)) (set k (read)) (kon k (first DListesi)) ]))

şık listesi

(define CListe (list(list B6 A6) (list C5 B5 A5) (list C4 B4 A4) (list C3 B3 A3) (list C2 B2

A2)(list C1 B1 A1)))

Sorular fonksiyonunu ccedilağırma

(Sorular (list f e1 d c b a) CListe DListe )

yapılan doğru ve yanlış sayısını goumlsterme

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 29: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim

(display Doğru cevap sayısı )

dogrular

(display Yanlış cevap sayısı )

yanlislar

EMEĞİ GECcedilEN BUumlTUumlN HERKESE TEŞEKUumlRLERİMİZİ SUNUYORUZhellip

Page 30: YALOVA ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİYalova-2012 ÖNSÖZ. Bilgisayar ve yazılım dünyasına olan insanlar bilgisayar ile iletiĢim kurmak zorundalar Bu iletiĢim