A grubu Pamukkale Üniversitesi Bilgisayar Mühisliği Programlama Dilleri Ara Sınav Cevap Kağıdı 26.04.2016 Öğrenci Numarası : Adı Soyadı : Sınav çoktan seçmeli ve klasik olmak üzere iki kısımdan oluşmaktadır. Çoktan seçmeli kısmın cevapları optik okuyucuya uygun cevap kağıtları üzerine işaretlenecektir. İlk 30dk sonunda optik cevap kağıtları toplanacaktır. Kalan klasik soruları bu süreden sonra cevaplayabilirsiniz. Grubunuzu işaretlemeyi unutmayınız! Soru 26 27 28 29 30 Toplam Puan 10 10 10 10 10 50 Not 1. C dilinde değerlirilen 9*12-4*2-3*5 ifadesinin sonucu ne olacaktır?(what is the result when 9*12-4*2-3*5 expression is evaluated in C?) A. 115 B. 85 C. 101 D. 108 2. Prolog dilinde aritmetik bir ifadenin değerlirilmesi için aşağıdaki hangi komut kullanılır?(to force evaluation of an arithmetic term in Prolog, you must use the built-in predicate.) A. equals B. force C. is D. evaluate 3. Tip kontrolünü çalışma zamanına ötelemenin getirisi nedir?(the real benefit of deferring type checking until runtime is.) A. daha yüksek program güvenliği(higher program safety) B. daha iyi programcı verimliliği(greater programmer efficiency) C. daha iyi çalışma zamanı verimliliği(greater runtime efficiency) D. daha yüksek program güvenilirliği(higher program reliability) 4. Prolog dilinde bir liste aşağdaki hangi semboller ile çevrelenir?(a list is written in Prolog using to enclose the items.) A. (single quotes) B. [ ] (square brackets) C. { } (curly braces) D. (double quotes) 5. Aşağıdaki programlama dillerinden hangisi fonksiyonel paradigmaya uymaz?(which of the below is not a sample of functional programming languages?) A. Scheme B. Haskell C. Curry D. Ada 6. Prolog dilinde [X,Y Z] = [1,2,3] ifadesi çalıştırıldığında Y nin değeri ne olur?(what is the value of Y when [X,Y Z] = [1,2,3] is evaluated in Prolog?) A. [1,2,3] B. 2 C. 1 D. [2] 7. Fonksiyonel programlama için aşağıda bahsedilen ifadelerden hangisi yanlıştır?(which of the following statements about functional programming languages is incorrect?) A. Saf fonksiyonel programlamada döngüler özyinelemeli çağrılarla değiştirilir(in pure functional programming, loops are replaced by recursive calls.) B. Saf fonksiyonel programlamada atama işlemi yoktur.(in pure functional programming, there are no assignments.) Sınav Süresi: 90dk 1 / 6 Başarılar
C. Bir fonksiyonun değeri parametrelerinin değerlirme sırasına bağlıdır.(the value of a function deps on the order of evaluation of its parameters.) D. Saf fonksiyonel programlamada döngü yoktur.(in pure functional programming, there are no loops.) 8. C dilindeki 3-4*2-2-3 ifadesi Scheme dilinde nasıl ifade edilir?(which one of the below is the equivalent of 3-4*2-2-3 C expression in Scheme?) A. (- 3 (* 4 (- 2 (- 2 3)))) B. (- (- (- 3 (* 4 2)) 2) 3) C. 3 4 2 * - 2-3 - D. (- 3 (- (- 3 (* 4 2)) 2)) 9. Scheme dilinde içeriği ((x y) s (t)) olan L listesi için (cdr (car L)) çalıştırılınca geriye ne döner?(given a list L in Scheme with contents of ((x y) s (t)). What will be returned if the command (cdr (car L)) is executed?) A. (t) B. (x y) C. (y) D. (x) 10. Değişkenler, kullanarak bir isim ve tip kazanırlar.(variables are given names and data types using a.) A. paket(package) B. bildirim(declaration) C. yapı(structure) D. fonksiyon(function) 11. Prolog dilinde bir çözüm bulunsa bile döngüler oluşturmak için ve tekrarlı aramalar yapmak için hangi komut kullanılır?(to force Prolog to perform loops and repetitive searches, we must force backtracking even when a solution is found by using the built-in predicate.) A. fail B. parent C. is D. repeat 12. Scheme dilinde sembolleri veri tipleri olarak ifade etmek için aşağıdaki anahtar kelimelerden hangisi kullanılır?(to express symbols as a data type in Scheme, use the keyword.) A. exclamation B. form C. symbol D. quote 13. Aşağıdakilerden hangisi Scheme dilinde bir fonksiyon oluşturmak için kullanılır?(the is used in Scheme to create a function.) A. lambda özel biçimi(lambda special form) B. letrec özel biçimi(letrec special form) C. let özel biçimi(let special form) D. procedure özel biçimi(procedure special form) 14. Çoğu mantıksal programlama dilleri kilerini adı verilen, yüklem hesabının bir alt kümesi ile sınırlarlar.(most logic programming systems restrict themselves to a particular subset of predicate calculus called.) A. algoritmalar(algorithms) B. horn önermesi(horn clauses) C. kontrol önermesi(control clauses) D. aksiyomatik önerme(axiomatic clauses) 15. map aşağdakilerden hangisine bir örnektir?(a map is an example of a(n).) A. API B. yineleyici(iterator) C. üst seviye fonksiyon(higher-order function) D. yordam(procedure) 16. Aşağıdaki dillerin hangisinde statik tip tanımlaması yoktur?(all of the following languages are statically typed except.) A. C++ B. Ada C. C D. Python Sınav Süresi: 90dk 2 / 6 Başarılar
17. C++. A. kabul edilen standartları yoktur(does not have an accepted set of standards) B. nesne tabanlı bir dildir(is an object-oriented language) C. fonksiyonel bir dildir(is a functional type language) D. yagın kullanıma sahip değildir(is not widely used) 18. Aşağıdakilerden hangisi kaynak kodu girdi olarak alır ve çalıştırılabilir bir programa dönüştürür?(a(n) takes source code as input and translates it into a program that is executable.) A. yükleyici(loader) B. yorumlayıcı(interpreter) C. derleyici(compiler) D. bağlayıcı(linker) 19. Aşağıdaki dillerden hangisi statik tip tanımlamasına sahiptir?(of the following languages, which is a statically typed language?) A. Ada B. Smalltalk C. Lisp D. Python 20. Prolog dilinde cut(!) işlemi aşağıdakilerden hangisi için kullanılır?(in Prolog, the cut operator is used to.) A. ağaçtaki bir dalı başka bir ağaca taşımak(move a node from one tree to another) B. birbirinin kopyası olan dalları budamak(prune duplicates from a tree) C. ağaçtaki aramayı durdurmak için(stop a search of a tree) D. ağaçtan bir düğümü çıkarmak(remove a node from a tree) 21. Aşağıdaki ifadelerden hangisi iki değişkene değer atayıp bu değerleri çarpmak için kullanılan Scheme ifadesidir?(which of the following correctly assigns values to two variables and then multiplies them in the Scheme programming language?) A. (let (x 5) (y 3)) (* x y) B. (let (x 5 y 3) (* x y)) C. let (x 5) (y 3) (* x y) D. (let ((x 5) (y 3)) (* x y)) 22. Aşağıdaki programlama dili ikililerinden hangisinde liste tanımlaması aynıdır?(which of the programming language pairs below has the same list definition?) A. Scheme-Haskell B. Prolog-Scheme C. Haskell-Prolog D. ML-C 23. Python başlangıçta için tasarlanmıştır.(python was originally designed for.) A. geniş ölçekli sistemler(large scale systems) B. uzman programcılar(expert programmers) C. bilim adamları, mühisler ve programcı olmayan diğerleri(scientists and engineers and other non-programmers) D. zamanın önemli olduğu sistemler(time-critical systems) 24. Diziler aşağıdaki soyutlamalardan hangisidir?(an array is considered to be a.) A. basit kontrol soyutlaması(basic control abstraction) B. basit veri soyutlaması(basic data abstraction) C. yapısal veri soyutlaması(structured data abstraction) D. birim soyutlaması(unit abstraction) 25. Lisp programlama modeline dayanır(lisp is based on the model of computation.) A. fonksiyonel(functional) B. anlamsal(semantic) C. buyurucu(imperative) D. yorumlamalı(interpretive) Sınav Süresi: 90dk 3 / 6 Başarılar
26. (10P) Aşağıdaki metinde kaç defa work kelimesinin geçtiğini ve toplam kelime sayısını bulup sonucu ekrana yazdıran python kodunu yazınız.(write a python code that finds how many times does work appear in the text and total word count. Print the values to the screen.) t e x t = work work work work work work, he s a i d me h a f f i work work work work work work, he s e e me do me d i r t d i r t d i r t d i r t d i r t d i r t, So me put in work work work work work work, when you ah gon l e a r n l e a r n l e a r n l e a r n learn, meh nuh care i f him hurt hurt hurt hurt h u r t i n g worksayisi = 0 toplamkelimesayisi = 0 for kelime in t e x t. s p l i t ( ) : i f kelime == work : worksayisi += 1 toplamkelimesayisi += 1 print work k e l i m e s i s a y i s i : + str ( worksayisi ) print Toplam kelime s a y i s i : + str ( toplamkelimesayisi ) 27. (10P) Toplama, çıkarma ve çarpma işlemi yapmak için HesapMakinesi sınıfını ve bu sınıfın uygun metodlarını Ruby dilinde yazın. Yazdığınız sınıfı kullanarak 2*3+(3-4) işlemini yapıp sonucu ekrana yazdırın.(write the HesapMakinesi class that can do the addition, subtraction and multiplication operations in Ruby. Perform the2*3+(3-4) operation using HesapMakinesi class and print the output to screen.) class HesapMakinesi def t o p l a ( x, y ) return x+y def c i k a r ( x, y ) return x y def carp ( x, y ) return x y hesap = HesapMakinesi. new puts hesap. t o p l a ( hesap. carp ( 2, 3 ), hesap. c i k a r ( 3, 4 ) ) Sınav Süresi: 90dk 4 / 6 Başarılar
28. Prototipi aşağıda olan C fonnksiyonu ile dizideki elemanların toplamı hesaplanacaktır:(a function propotype, which calculates the sum of the values in an array, is given below) i n t t o p l a ( i n t d i z i [ ], i n t elemansayisi ) ; (a) (5P) Bu fonksiyonu mümkün olduğunca fonksiyonel biçimde yazın, çözümünüz döngü ve atama işlemleri içermesin.(write this function as functional as possible, your solution shall not include assignmets and loops.) int t o p l a ( int d i z i [ ], int es ) // es >eleman s a y i s i { i f ( es == 1) return d i z i [ 0 ] ; return d i z i [ es 1 ] + t o p l a ( d i z i, es 1 ) ; } (b) (5P) a. şıkkında bulduğunuz çözümü kuyruk özyinelemeli olarak yazın.(write the function, which you wrote in choice a., tail recursive.) int t o p l a ( int d i z i [ ], int es, int toplam ) { i f ( es == 0) return toplam ; return t o p l a ( d i z i, es 1, toplam + d i z i [ es 1 ] ) ; } 29. Aşağıdaki λ ifadelerini indirgemeleri adım adım göstererek hesaplayınız.(calculate the λ expressions below using the appropriate reductions.) (a) (5P) (λx.λy.x y)(+ 2) 3 (λx.λy.x y)(+ 2) 3 = (λy. + 2 y) 3 = + 2 3 = 5 (b) (5P) (λk. k k)((λx.λy.x y y) + 3) (λk. k k)((λx.λy.x y y) + 3) = ((λx.λy.x y y) + 3)((λx.λy.x y y) + 3) = ((λy. + y y) 3)((λy. + y y) 3) = (+ 3 3)(+ 3 3) = 6 6 = 36 Sınav Süresi: 90dk 5 / 6 Başarılar
30. (10P) Aşağıda verilen prolog kodu dikkate alındığında topla([3,6,5],t). sorgusu sonucunda oluşan arama ağacını çiziniz.(draw the search tree of topla([3,6,5],t). query using the Prolog code below.) ( 1 ) t o p l a ( [ ], 0 ). ( 2 ) t o p l a ( [B K],T): t o p l a (K, T1 ),T i s T1+B. Sınav Süresi: 90dk 6 / 6 Başarılar