İşleç Düzey Yön ^ Yüksek Sağdan sola ( ) * Orta Soldan sağa ( ) + Alçak Soldan sağa ( )

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

Download "İşleç Düzey Yön ^ Yüksek Sağdan sola ( ) * Orta Soldan sağa ( ) + Alçak Soldan sağa ( )"

Transkript

1 Mühendislik Fakültesi Güz Yarıyılı Derleyici Tasarımı 1. Arasınav Soruları 14 Kasım 2008 Cuma Aşağıda toplama (+), çıkarma (*) ve üs alma (^) işleçlerini içeren aritmetik ifadeler için gramer kuralları ile bu işleçlerin öncelik düzeyleri ve birleşme yönleri verilmiştir. E E "+" E E E "*" E E E "^" E E "(" E ")" E id num (AddExp) (MulExp) (PowExp) (ParExp) (Id, Num) İşleç Düzey Yön ^ Yüksek Sağdan sola ( ) * Orta Soldan sağa ( ) + Alçak Soldan sağa ( ) Burada E simgesi bir sonsuz veriyi (nonterminal), çift tırnak içindeki simgeler de sonlu verileri (terminals, tokens) göstermektedir. Her bir üretim kuralının temsil edileceği sözdizim sınıfı (syntax class) parantez içinde verilmiştir. a) Bu gramer tarafından üretilen, ancak parantez simgelerini içermeyen bütün mümkün aritmetik ifadeleri için bir düzenli ifade (regular expression) yazınız. İfade içinde id ve num kelimelerini kullanabilirsiniz. Birkaç mümkün aritmetik ifade aşağıda verilmiştir. (10p) id+id*num^id num^id*num*id+id id^id^num*num+id b) Gramerde bulunan sonlu kelimelerin (terminals, tokens) JavaCC notasyonunda tanımlamasını yapınız. (5p) c) Bu gramer ile "a*(b+c)^d" ifadesinin soldan sağa doğru türetimini (leftmost derivation) gösteriniz ve ayrıştırma ağacını (parse tree) oluşturunuz. (10p) d) Gramerin belirsiz yada çok anlamlı (ambiguous) olup olmadığını açıklayınız, varsa belirsizliği düzelterek grameri yeniden yazınız. (10p) e) Yeni gramer için FIRST ve FOLLOW kümelerini (sets) hesaplayınız. (10p) f) Yeni gramer için ayrıştırma tablosunu (parsing table) oluşturunuz ve gramerin bir LL(1) olup olmadığını belirleyiniz. (10p) g) Yeni gramerde olması muhtemel soldan özçağrı (left-recursion) içeren ifadeleri ortadan kaldıracak şekilde üretim kurallarını yeniden düzenleyiniz. (10p) h) Yeni gramerin JavaCC notasyonunda tanımlamasını yapınız. (5p) i) Gramere ait sözdizim sınıflarından (syntax classes) PowExp ve ParExp sınıflarını nesneye dayalı bir dilde yazınız. Bir Exp soyut sınıfının tanımlandığını varsayınız. (10p) public abstract class Exp { public class PowExp extends Exp {... public class ParExp extends Exp {... j) "2*(3+4)^5" ifadesi için sözdizim ağacını (syntax tree) sözdizim sınıflarını kullanarak oluşturunuz. (10p) Exp exp = new... k) Bu gramer ile üretilen ifadeleri değerlendirecek bir eval metodu tanımlayınız. (10p) int eval(exp e) {... Sınav süresi 120 dakikadır. BAŞARILAR.

2 Mühendislik Fakültesi Güz Yarıyılı Derleyici Tasarımı Final Sınavı Soruları 26 Ocak 2008 Pazartesi 1. Derleyiciler kaynak kodu arakod dönüşümünden sonra temel bloklarına neden ayırırlar? Kısaca açıklayınız. (10p) 2. Aşağıda verilen C kodu için bir CFG (bağlam ilintisiz gramer) yazınız. (20p) int t = 0; while (n > 0) { t += n % 10; n /= 10; 3. Yukarıdaki kod için bir kelimesel çözümleyicinin (scanner) üreteceği token ları belirleyiniz. (10p) 4. Her bir gramer kuralı için birer sözdizim sınıfı (syntax classes) belirleyerek yukarıdaki kodun sözdizim ağacını nesneye dayalı bir dilde yazınız. Sözdizim dizim sınıflarını sadece isimlendiriniz, tanımlamayınız. (20p) 5. Kodu if/goto ifadeleri ile yeniden yazınız. (10p) 6. Tree dili işlev ve değişmezlerini kullanarak yeni kodun ara kod dönüşümünü yapınız. (20p) 7. Ara kodu temel bloklarına ayırınız. (10p) Sınav süresi 120 dakikadır. BAŞARILAR. abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE;

3 Bahar Yarıyılı Derleyici Tasarımı 1. Ara Sınavı Tarih: 8 Kasım 2009 Pazar Sınav süresince cep telefonları kapalı tutulmalı ve sıranın üzerine bırakılmamalıdır. 1. Derleyicilerin sözdizim analizi aşamasında oluşturdukları soyut sözdizim ağaçlarının (abstract syntax tree) sonraki aşamalar açısından önemini ve kullanım alanlarını açıklayınız. (15p) 2. 4 ile tam bölünebilen bütün ikili (iki tabanındaki) sayılar için bir L dili tanımlanıyor. Örneğin, 000, 0000, 100 ve sayılarının her biri L dilinin bir kelimesidir. Bu dildeki bütün kelimeleri üretebilen bir düzenli ifade (regular expression), bir DFA (deterministic finite automata) ve bir CFG (context-free grammar) oluşturunuz. (25p) 3. Aşağıdaki gramerin niçin LL(1) olmadığını açıklayınız ve eşdeğeri olan bir LL(1) grameri tanımlayınız. (30p) S X X Y Y a X Y b Z Z Z b Z c ε 4. Aşağıda verilen gramerdeki token sınıflarını belirleyiniz ve S kuralı için C++ yada Java dilinde bir parser yazınız. Token ların gettoken() fonksiyonu ile alınabildiğini varsayınız. (30p) S if C then S ; while C do S ; id = num id ++ C id == num id > num

4 Güz Yarıyılı Derleyici Tasarımı Dönem Sonu Sınavı Tarih: 15 Ocak 2010 Cuma Süre: 100 dakika 1. Arakod dönüşümünün önemini açıklayınız. Aşağıdaki kod parçasını Tree dilinde yazınız. (25p) int s=0; do { s++; while ((n /= 2) > 0); 2. Derleme süreçlerinde sembol tabloları niçin kullanılır? Sembol tabloları hangi durumlarda programların EXE koduna eklenir? Aşağıdaki kodun sembol tablosunu oluşturunuz. (25p) class A { int a; int m(int x) { a = a x; if (a > 0) return n(a-2); return a; int n(int x) { a = 2*a - x; if (a < 100) m(a-5); return a; 3. Bir kodun aktivasyon kayıtlarının yönetimi nasıl gerçekleştirilir? Aşağıdaki koda ait aktivasyon kayıtlarının bellek görüntülerini çiziniz. (25p) int f(int a[]) { int x = a[0]; for (int i=1; i<x.length; i++) if (a[i] > x) x = a[i]; return x; 4. En az 2 nonterminal ile CFG notasyonunda bir dil tanımlaması yapınız. Bu dil için sözdizim sınıflarını ve sözdizim ağacını girdi verisi olarak kullanan (yani, bu veri ile herhangi bir hesaplama yapan) bir yorumlayıcı yazınız. (25p) abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE;

5 Güz Yarıyılı Derleyici Tasarımı 1. Ara Sınavı Tarih: 8 Kasım 2010 Pazartesi Süre: 100 dakika 1. Bir programlama dilinde operatör (işleç) önceliklerinin ve birleşme yönlerinin gramer yazımına etkisini açıklayınız. Öncelik düzeyleri ve birleşme yönleri farklı olan iki C operatörünü içeren ifadeleri üretebilen bir gramer yazınız. Grameri yazarken söz konusu iki operatör ile birlikte id ve num token larını kullanabilirsiniz. (25p) 2. C dilinde yazılan fonksiyonların tanımlama başlıklarını üretebilen bir LL(1) grameri yazınız. Fonksiyon tanımlamalarının temel türleri ve formal parametreleri herhangi bir sıra ve sayıda içerebildiğine dikkat ediniz. Aşağıda bazı fonksiyonların tanımlama başlıkları örnek olarak verilmiştir. (25p) void f0 (); int g2 (int a, char c2); double seta (short s, float s0, int k); 3. Soru 2 de belirtilen gramer için JavaCC de bir token üretici (scanner) tanımlayınız. (25p) 4. Aşağıda iki tabanındaki bütün sayıları üretebilen bir CFG grameri ve gramerin her bir kuralı için sözdizim sınıflarının (syntax classes) isimleri verilmiştir. Bu sınıfların tanımlamalarını C++ yada Java dilinde veriniz ve 1011 ikili sayısı için sözdizim ağacını (syntax tree) tanımladığınız sınıflar yardımıyla oluşturunuz. (25p) B D B (Bin) B ε (End) D 0 1 (Bit)

6 Güz Yarıyılı Derleyici Tasarımı Final Sınavı Tarih: 10 Ocak 2011 Pazartesi 1. Tamsayılar ve x değişkeni üzerinde toplama, çarpma ve faktöriyel alma işlemlerinin tanımlanabildiği matematiksel ifadeleri üretebilen bir gramer ve sözdizim (syntax) sınıfları aşağıdaki tabloda veriliyor. Token'ların çift tırnak içerisinde gösterildiğine dikkat ediniz. Gramer kuralları E E "+" E E E "*" E E "(" E ")" E "(" E ")" "!" E "x" E ["0"-"9"]+ Sözdizim sınıfları (Plus) (Times) (Paren) (Fact) (Var) (Num) Bu gramer ve sınıflara göre aşağıdaki soruları cevaplayınız. (80p) a) Bu gramer aşağıda verilen üç ifadeden hangilerini üretebilir? (10p) 32*x+5!*x x*x+(x+21)*(x+2)! x+((x*3)!+x+2)! b) Grameri LL(1) gramerine dönüştürünüz. (10p) c) Paren ve Fact kurallarını javacc'de tanımlayınız. (10p) d) Fact sınıfını tanımlayınız. (10p) e) Sözdizim ağacının Paren ve Fact düğümlerini üretecek şekilde javacc tanımlamalarına nesne üretim ifadeleri (semantic actions) ekleyiniz. (10p) f) Paren ve Fact düğümlerini değerlendiren visit() metotlarını tanımlayınız. (10p) g) Aşağıdaki ifade için soyut sözdizim ağacını (abstract syntax tree) bir nesne biçiminde oluşturunuz. (10p) x+5*(x+2)! h) g) de verilen ifadeyi Tree diline dönüştürünüz. (10p) 2. Değişkenlerin canlılık analizi (liveness analysis) niçin yapılır? Uygun kod blokları oluşturarak kısaca açıklayınız ve nasıl yapıldığını gösteriniz. (20p) abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE; Canlılık hesaplama algoritması:

7 Güz Yarıyılı Derleyici Tasarımı 1. Ara Sınavı Tarih: 18 Kasım 2011 Cuma 1. Derleyicilerin kaynak verinin analizi ile ilgilenen aşamalarının görevlerini kısaca açıklayınız. Bir C dili derleyicisinde bu aşamaların aşağıda verilen kaynak kod için hangi tür hataları göstereceğini belirleyiniz (x++ ifadesindeki işlecin ++x ifadesindeki işleçten daha yüksek önceliğe sahip olduğuna dikkat ediniz). (20p) int a, b=10; if (b=10) a:=2+++b%3.0; 2. Aşağıda postfix notasyonunda yazılan aritmetik ifadeler için bir CFG grameri tanımlanmıştır. Bu grameri LL(1) gramerine dönüştürünüz ve yeni gramerin ayrıştırma tablosunu (parsing table) FIRST/FOLLOW setleri yardımıyla oluşturunuz. (30p) E E E "+" E E E "-" E E E "*" E E E "/" E id num 3. Haskell programlama dilinin desteklediği aritmetik dizi üretim ifadelerini girdi verisi (kaynak veri) olarak alan ve değerlendiren bir yorumlayıcı yazılmak isteniyor. Aşağıda verilen örnekler üzerinden aritmetik dizi üretim ifadelerinin çeşitleri ve değerlendirme sonuçları gösterilmiştir. Girdi verisi Çıktı verisi (değerlendirme sonucu) [2..] [2,3,4,5,6,7,8,9,10,11, biçiminde devam eder. [2..13] [2,3,4,5,6,7,8,9,10,11,12,13] [3,5..] [3,5,7,9,11,13,15,17,19, biçiminde devam eder. [3,7..25] [3,7,11,15,19,23] a) Bu çeşit ifadeler üretebilen bir LL(1) grameri yazınız. (10p) b) Gramere ait sözdizim sınıflarını accept() metotlarını da ekleyerek nesneye dayalı bir dilde yazınız. (10p) c) İfadelerin sözdizim analizini yapabilecek bir ayrıştırıcıyı (parser) JavaCC notasyonunda tanımlayınız ve bu tanımlamaya sözdizim ağacı (syntax tree) üretebilen ifadeler ekleyiniz. (15p) d) "[2,5..30]" ifadesi için sözdizim ağacını (b)'de tanımladığınız sözdizim sınıflarını kullanarak oluşturunuz. (5p) e) İfadeleri sözdizim ağacı üzerinden değerlendirebilecek bir yorumlayıcıyı Visitor tasarım desenini kullanarak yazınız. (10p)

8 Güz Yarıyılı Derleyici Tasarımı Final Sınavı Tarih: 18 Ocak 2012 Çarşamba 1. Birinci dereceden bir bilinmeyenli denklem üreten bir gramer veriliyor. a) Gramerin bir kuralı aşağıdaki gibi tanımlanmış ise bu tanımlama için JavaCC'nin göstereceği uyarıyı belirleyiniz ve düzeltiniz. (10p) Exp E() : { Exp a=null, b; { (a=t() <PLUS> b=e() {a=new Plus(a, b);)* {return a; b) Bir denklemden oluşan girdi verisini ayrıştırma işlemi aşağıda verilen parse() metodu ile yapılmaktadır. Bu metodu iki ve daha fazla sayıda denklemden oluşan girdi verilerini de ayrıştırabilecek şekilde yeniden düzenleyiniz. (10p) Exp parse() : { Exp a; { a=e() (<EOF> <EOL>) {return a; 2. Haskell programlama dilinde aritmetik ifadeler prefix notasyona dönüştürülürken işleçler parantez içerisinde yazılır. İşlece ilaveten işlenenlerden biri de parantez içerisine alınabilmektedir. Aşağıdaki tabloda bu çeşit ifadeler için örnekler gösterilmiştir. Girdi verisi Değeri 7 7 (+) (3*) 4 12 (+((*) 3 4)) 5 17 (*) 4 ((+) 3 2) 20 (+2) ((*) 3 4) 14 (+) ((*) 3 4) ((+) 5 6) 23 Yukarıda belirtilen ve sadece + ile * işlecini içeren ifadeleri için a) Bir LL(1) grameri yazınız. (15p) b) Gramer için bir ayrıştırıcıyı (parser) sözdizim ağacını (syntax tree) üreten ifadelerle birlikte JavaCC notasyonunda tanımlayınız. (10p) c) intanceof işlecini kullanarak soyut sözdizim ağacını değerlendiren (ifadenin değerini hesaplayan) bir eval() metodu yazınız. (15p) 3. Aşağıda verilen ifadeyi Tree diline dönüştürünüz ve temel bloklarına ayırınız. (25p) int x = b <= 0? 1 : b*2; 4. Temel bloklarına ayrılmış bir veri üzerinde hedef makine diline ait emirler nasıl seçilir? Kısaca açıklayınız ve Soru 3'deki Tree verisi üzerinde gösteriniz. (15p) abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE;

9 Güz Yarıyılı Derleyici Tasarımı 1. Ara Sınavı Tarih: 23 Kasım 2012 Cuma 1. C programlama diline ait gramer kuralları göz önüne alındığında aşağıda verilen ifade için C derleyicisinin üreteceği hataları ve üretildikleri bileşenleri belirleyiniz. (10p) char 2c = 2c ; 2. Aşağıda verilen gramerin FIRST/FOLLOW setleri yardımıyla ayrıştırma tablosunu (parsing table) oluşturunuz ve LL(1) grameri olup olmadığını belirleyiniz. Bu gramer ile üretilen girdi ifadeleri için el yordamıyla bir ayrıştırıcı yazınız. (25p) E ("+" "-" "*" "/") E E E id num 3. Polinomlarda çarpma ve sadeleştirme işlemlerini yapabilen bir yorumlayıcı JavaCC aracı kullanılarak yazılmak isteniyor. Çarpım biçiminde girilen polinomlar için önce çarpma ardından sadeleştirme işlemi yapılacaktır. Aşağıdaki tabloda bazı girdi verisi örnekleri ve yorumlama sonuçları gösterilmiştir. Polinomların parantez içerisinde girildiğine dikkat ediniz. No Girdi verisi Çıktı verisi (yorumlama sonucu) 1 (-x^2+5+x^2-3) 2 2 (x^2-1)(x^2+1) -1+x^4 3 (x-2)(x^2-2x-3) 6+x-4x^2+x^3 4 (x+1)(x+2)(x-3) -6-7x+x^3 5 (x^2-3)(3-x+x^2) -9+3x-x^3+x^4 6 (x-1)(x-1)(x-1)(x-1) 1-4x+6x^2-4x^3+x^4 a) Bu çeşit girdi verilerini üretebilen bir LL(1) grameri yazınız. (10p) b) Gramere ait sözdizim sınıflarını nesneye dayalı bir programlama dilinde tanımlayınız. (10p) c) Girdi verilerinin sözdizim analizini yapabilecek bir ayrıştırıcıyı (parser), sözdizim ağacı (syntax tree) oluşturan ifadeleri de ekleyerek JavaCC notasyonunda yazınız. (15p) d) Tabloda gösterilen 3 no'lu girdi verisi için sözdizim ağacını (b)'de tanımladığınız sözdizim sınıflarını kullanarak oluşturunuz. (5p) e) Girdi verisini sözdizim ağacı üzerinden değerlendirebilmek için en az iki sözdizim sınıfına eklenecek eval() metodunu tanımlayınız. (10p) 4. Bir programlama dili derleyicisi aynı isimli bir fonksiyonun her bir çağrımına aynı aktivasyon kaydını tahsis ediyor ise bu dile modern programlama dillerinde bulunan hangi özellikler eklenemez? Kısaca açıklayınız. (15p)

10 Güz Yarıyılı Derleyici Tasarımı Final Sınavı Tarih: 16 Ocak 2013 Çarşamba Süre: 100 dakika 1. Aşağıda bir gramer kuralının JavaCC sözdizimiyle yapılan tanımlamasının LL(1)'e uygun olup olmadığını belirleyiniz ve uygun değilse yeniden düzenleyiniz. (15p) void E() : { { E() ("!" "=")? "=" T() T() 2. Matematiksel ifadelerin limitini hesaplayan bir yorumlayıcı JavaCC aracıyla yazılmak isteniyor. İfadelerin sadece ln, e, sin ve cos fonksiyonlarını, çıkarma (-), bölme (/) ve üs alma (^) işleçlerini, x değişkenini, tamsayıları ve açma/kapama parantezlerini içerebilecektir. Yorumlayıcının girdi verisi olacak bazı örnek limit ifadeleri aşağıda verilmiştir. lim[x->2][e^(x-2)-4], lim[x->1][(x-1)/ln(x)], lim[x->0][sin(x)^(2x)] Limit hesaplamalarında 0/0 ve 0 0 gibi iki belirsizlik ile karşılaşıldığında aşağıda verilen yöntemler uygulanacaktır; f ( a) = 0 ve g ( a) = 0 ise, lim f ( x) x > a g ( x) = e ln f ( x) lim x > a1/ g ( x) veya ' f ( x) f ( x) lim = lim x > a ' g( x) x > a g ( x) İfadeleri, verilen bir x için değerlendiren (EvalVisitor) ve türevlerini (DeriveVisitor) hesaplayan sınıfların Visitor tasarım deseni ile tanımlandığını varsayarak, a) Limit ifadelerini üretebilen bir LL(1) gramerini, işleç öncelik düzeyi ve birleşme yönlerine uygun olarak yazınız. (10p) b) Gramerin / ve ^ işleçlerini içeren iki kuralını, sözdizim ağacını (syntax tree) üreten ifadelerle birlikte JavaCC sözdizimiyle tanımlayınız. (10p) c) Bu iki işleci içeren düğümler için limiti hesaplayan visit() metotlarını yazınız. (15) x 3. Soru 2'de yer alan yorumlayıcının sözdizim sınıfları ile lim (sin( x)) 2 ifadesinin soyut x > 0 sözdizim ağacını (abstract syntax tree) oluşturunuz, Tree diline dönüştürünüz ve temel bloklarına ayırınız. Trigonometrik fonksiyon değerlendirmelerinde Maclaurin serisinin ilk 100 terimini kullanabilirsiniz. (30p) 4. Derleyicilerde ara dilden makine diline yapılacak dönüşümlerde kod performansını iyileştirmek için hangi konular göz önüne alınır? Maddeler halinde kısaca açıklayınız. (20p) abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE;

11 Güz Yarıyılı Derleyici Tasarımı Ara Sınavı Soruları Tarih: 18 Kasım 2013 Pazartesi 1. Bir kelime ayrıştırıcının (scanner, lexer) aynı karakter(ler)le başlayan işleçleri nasıl ayrıştırdığını kısaca açıklayınız ve aşağıdaki ifadeyi token dizisine ayrıştırınız. (15p) x += x +++ x; 2. Aşağıdaki örnekte görüldüğü gibi tamsayı dizilerinin oluşturduğu bir kaynak verideki 5 ile tam bölünebilen sayıları gösteren bir kelime ayrıştırıcıyı JavaCC notasyonunda tanımlayınız. Sayılar üzerinde herhangi bir hesaplama (örneğin, sayının son rakamına dayalı karşılaştırma, % işlecinin kullanımı gibi) yapmayınız. (20p) /(1+...(1+1/x)...) biçiminde girilen bir ifadeyi yanda gösterilen kesirli matematik ifadesi gibi değerlendiren bir yorumlayıcı JavaCC aracı kullanılarak yazılmak isteniyor. a) Bu çeşit girdi verilerini üretebilen bir LL(1) grameri geliştiriniz. (15p) b) Gramere ait sözdizim sınıflarını en az sayıda olacak şekilde nesneye dayalı bir programlama dilinde yazınız. (10p) x c) Girdi verilerinin sözdizim analizini yapabilecek bir ayrıştırıcıyı (parser), sözdizim ağacı (syntax tree) oluşturan ifadeleri de ekleyerek JavaCC notasyonunda yazınız. (15p) d) 1+1/(1+1/x) girdi verisi için sözdizim ağacını (b)'de tanımladığınız sözdizim sınıflarını kullanarak oluşturunuz. (5p) 4. Soru 3'de belirtilen biçimdeki (en az bir kesir çizgisi olan) girdi verilerini rasgele üretebilen bir programı, el yordamıyla aşağıya yinelemeli ayrıştırıcı (recursive-descent parser) tanımlama yöntemini kullanarak yazınız. (20p) Hatırlatma: Bu yöntemde LL(1) gramerinin her bir kuralı bir fonksiyon olarak kodlanır.

12 Güz Yarıyılı Derleyici Tasarımı Final Sınavı Tarih: 9 Ocak 2014 Perşembe 1. 2 ile 10 arasındaki sayı tabanları üzerinde dönüşüm işlemi (taban aritmetiği) yapabilen bir yorumlayıcı, JavaCC aracı kullanılarak yazılmak isteniyor. Belirli bir taban için hesaplanması istenen sayı "?" ile girilecektir. Aşağıdaki tabloda bazı girdi verisi örnekleri ve yorumlama (dönüşüm) sonuçları gösterilmiştir. Sayı ve tabanının "," ile ayrılarak aynı parantez içerisinde girildiğine, 10 tabanındaki sayı bildirimleri için parantez kullanılmadığına dikkat ediniz. No Girdi verisi Çıktı verisi (yorumlama sonucu) 1 (2010,3)=(?,5) (?,6)=(3201,4) =(?,7) (1065,7)=? (?,2)= a) Bu çeşit veriler için en az sayıda non-terminal içeren bir LL(1) grameri yazınız. (10p) b) Girdi verilerinin sözdizim analizini yapabilen ve sayı-taban uyumsuzluğu ile "?" karakteri girme durumunu anlayabilen bir ayrıştırıcıyı (parser), sözdizim ağacı (syntax tree) oluşturan ifadeleri de ekleyerek JavaCC notasyonunda yazınız. (15p) c) Gramere ait sözdizim sınıflarını, nesne ağacı üzerinden değerlendirme yapabilen eval() metotlarını ekleyerek tanımlayınız. (10p) 2. Java programlama dilinde tanımlaması yapılan bir metot yan tarafta gösteriliyor. a) Bu metot için bellekte oluşturulacak bir aktivasyon kaydının görüntüsünü çiziniz. (10p) b) Metot gövdesini düzenleyerek Tree diline dönüştürünüz ve temel bloklarına ayırınız. (15p) int foo(int[] a, int n) { int t = 0; for (int i=0; i<n; i++) t += a[i]; return t; c) Tree dilindeki ana kod bloğunu optimal desenlerle kaplayarak Jouette emir seti yardımıyla makine diline dönüştürünüz. (10p) 3. Fibonacci sayı dizisini hesaplayan kod bloğu yan tarafta veriliyor. a) Kontrol akış çizgesini (graph) çiziniz ve i, a, b ve c değişkenlerinin hangi çizge kenarları üzerinde canlı olduklarını belirtiniz. (10p) b) Bu değişkenlerin kaydedici (register) tahsisi için çizge renklendirmesinin nasıl yapılacağını a=0; b=1; i=0; L1: if (i<100) then goto L2; print a; c=a+b; a=b; b=c; i++; goto L1; L2: return b; kısaca açıklayınız ve en az kaç kaydedici gerekeceğini belirtiniz. (10p) c) 3 kaydedicili bir sistem için çizge renklendirmesini gerçekleştiriniz. (10p) abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE; ADD r i r j + r k MUL r i r j * r k SUB r i r j - r k Jouette aritmetik ve bellek emirleri DIV r i r j + r k ADDI r i r j + c SUBI r i r j c [x] notasyonu x adresindeki bir kelimeyi temsil eder. LOAD r i M[r j +c] STORE M[r j +c] r i MOVEM M[r j ] M[r i ]

13 Güz Yarıyılı Derleyici Tasarımı Ara Sınavı Soruları Tarih: 8 Kasım 2014 Cumartesi 1. Bir derleyicinin aşağıda verilen kaynak kod için AST (sözdizim ağacı) oluşturup oluşturamayacağını değerlendiriniz ve kodun içerdiği hataların ilgili oldukları bileşenleri belirtiniz. (15p) void f(int a) { char a; if (;) =3--; 2. Girdi verisini bir metin dosyasından okuyan ve sadece harflerden oluşan en uzun kelimeyi gösterebilen derleyici bileşenlerinin her birini aşağıda belirtildiği gibi tanımlayınız. Bir String str verisinin uzunluğu str.length() ile hesaplanır. a) JavaCC'yi kullanarak kelime ayrıştırıcıyı (scanner) (10p) b) JavaCC'yi kullanarak bir sözdizim ayrıştırıcısını (parser) (10p) c) C yada Java dilini kullanarak aşağı yinelemeli ayrıştırıcıyı (recursive-descent parser) (10p) 3. Aşağıda verilen gramerin yan yana 1'ler içermeyen bütün ikili sayıları üretip üretemeyeceğini açıklayınız ve gerekli ise grameri düzelterek LL(1) gramerine dönüştürünüz ve FIRST/FOLLOW setlerinin uygunluğunu değerlendiriniz. (20p) B -> B 0 B -> B 0 1 B -> 4. 1+(2+++3)+++5 ifadesini aşağıda gösterildiği gibi hesaplayan bir programlama dili veriliyor (İfadelerin herhangi bir sayıda parantez içerebileceğine dikkat ediniz). 1+(2+++3)+++5 = 1+(3+3)+++5= = =1+12 = 13 a) Bu çeşit ifadeler üretebilen bir LL(1) grameri yazınız. (10p) b) Gramere ait sözdizim sınıflarını nesneye dayalı bir programlama dilinde tanımlayınız. (10p) c) Bu sınıfların yardımı ile yukarıda verilen ifade için sözdizim ağacını oluşturunuz. (5p) d) Böyle ifadeleri Visitor tasarım desenini kullanarak değerlendirebilen bir yorumlayıcı yazınız. (10p)

14 Güz Yarıyılı Derleyici Tasarımı Final Sınavı Tarih: 7 Ocak 2014 Çarşamba 1. Birinci dereceden polinomlar üzerinde kalan bulma işlemleri yapabilen bir yorumlayıcı yazılmak isteniyor. Genel olarak p(x)%g(x) biçiminde girilecek olan girdi verisinde; a, b ve c tamsayılar olmak üzere, p(x) fonksiyonu ax ve/veya b terimlerini herhangi bir sayı yada sırada içerebilen ifadelerden, g(x) fonksiyonu ise x+c ifadesinden meydana gelecektir. Aşağıdaki tabloda bazı girdi verisi örnekleri ve yorumlayıcı çıktısı gösterilmiştir. No Girdi verisi Çıktı verisi 1 3x-2 % x-3 p(3)=7 2 3-x+4+2x % x+1 p(-1)=6 3-2x+5-3+x % x+2 p(-2)=4 4 -x+3x % x-1 p(1)= x+2-2x+3+6 % x-2 p(2)=8 a) Bu çeşit girdiler için en az sayıda non-terminal içeren bir LL(1) grameri yazınız. (10p) b) Gramer kurallarına ait sözdizim sınıflarını, Visitor arayüzü için accept() metotları ekleyerek tanımlayınız. (10p) c) Girdi verilerinin sözdizim analizini yapabilen bir ayrıştırıcıyı (parser), sözdizim ağacı (syntax tree) oluşturan ifadeleri de ekleyerek JavaCC notasyonunda yazınız. (10p) d) Yorumlayıcıyı Visitor tasarım desenini kullanarak kodlayınız. (10p) 2. Bir derleyicide kaynak verinin Tree diline dönüşümü, SEQ ve ESEQ işlevlerini ifade ağacından çıkarmak için yeniden düzenlenir ve temel bloklara ayrılır. Bu düzenlemenin sebebini kısaca açıklayarak, aşağıdaki kaynak veri üzerinde Tree diline dönüşüm, SEQ ve ESEQ düğümlerini çıkarma ve bloklara ayırma işlemlerini gösteriniz. (20p) x = 2 + (x = 3); 3. Aşağıda verilen Tree dili ifadesini en uygun optimal desenlerle kaplayarak Jouette emir seti yardımıyla makine diline dönüştürünüz. (20p) MOVE(MEM(BINOP(PLUS, BINOP(PLUS, CONST(100), MEM(TEMP(tx))), TEMP(fp))), CONST(2)) 4. Yan tarafta gösterilen programa göre aşağıdaki soruları cevaplayınız. a) Kontrol akış grafiğini çiziniz. (5p) b) Değişkenlerin canlı oldukları çizge kenarlarını belirtiniz ve karışım grafiğini çiziniz. (10p) c) Değişkenler için kaç adet kaydediciye ihtiyaç olduğunu belirleyiniz. (5p) 1: if a < 0 goto 8 2: b = 1; 3: goto 7 4: c = a * b 5: a = a - 1 6: b = c 7: if a > 1 goto 4 8: return b abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE; Jouette aritmetik ve bellek emirleri ([x]: x adresindeki kelimeyi temsil eder.) ADD r i r j + r k MUL r i r j * r k SUB r i r j - r k DIV r i r j + r k ADDI r i r j + c SUBI r i r j c LOAD r i M[r j +c] STORE M[r j +c] r i MOVEM M[r j ] M[r i ]

15 Güz Yarıyılı Derleyici Tasarımı Ara Sınavı Soruları Tarih: 13 Kasım 2015 Cuma 1. İkili sayılar üzerinde üç token sınıfı aşağıdaki gibi tanımlanıyor. R1: 2 adet 0 içeren ikili sayılar (TZ) R2: 2 ile tam bölünebilen ikili sayılar (TN) R3: 2 basamaklı ikili sayılar (TB) a) Bu sınıfları düzenli ifadeleri (regular expressions) kullanarak tanımlayınız. (10p) b) Aşağıda verilen düzenli ifade yardımıyla token ayrıştırması yapan bir kelimesel ayrıştırıcının (lexical analyser) girdi verisi için üreteceği token dizisini belirleyiniz. (10p) R = R1 R2 R3 2. Aşağıda terminallerin çift tırnak içerisinde yazıldığı bir gramer veriliyor. E -> E "!" "(" E ")" T T -> "1" "2" "3" c) Bu grameri LL(1) gramerine dönüştürünüz. (10p) d) Yeni gramerin FIRST ve FOLLOW setlerini belirleyiniz. (10p) e) Gramer ile üretilen ifadeler için bir aşağı yinelemeli ayrıştırıcı (recursive-descent parser) yazınız. (10p) 3. Tamsayılar ve, &, ^ işleçlerini içeren ifadeler C dilindeki anlamları ile değerlendirilmek isteniyor. Ayrıştırıcı içerisinde sırasıyla Or, And ve Exor sözdizim sınıflarıyla temsil edilen bu işleçler soldan birleşme yönüne sahip olup değerlendirme sıraları aşağıdaki örnek ifadede gösterilmiştir. 2 3 & 5 ^ 7 = 2 1 ^ 7 = 2 6 = 6 a) Bu ifadeleri üretebilen bir LL(1) grameri yazınız. (10p) b) And sınıfını nesneye dayalı bir programlama dilinde tanımlayınız. (5p) c) Ayrıştırıcının (parser) And metodunu JavaCC notasyonunda yazınız. (10p) d) Nesne ağacındaki And düğümünü değerlendirecek eval() metodunu yazınız. (10p) 4. Java programlama dilinde aşağıda verilen sınıf tanımlamasının yapılabilmesinin sembol tablosu ile ilişkisini (tablo organizasyonu üzerindeki etkisini) açıklayınız ve sembol tablosuna eklenecek verileri belirleyiniz. (15p) class Exp { Exp Exp; Exp Exp(Exp Exp) { return Exp(Exp);

16 Güz Yarıyılı Derleyici Tasarımı Final Sınavı Tarih: 3 Ocak 2016 Pazar 1. Özyinelemeli tanımlamaya sahip fonksiyonları (recurrence functions), verilen bir (formal) parametreye dayalı olarak değerlendiren bir yorumlayıcı yazılmak isteniyor. Bu türden iki fonksiyon örneği aşağıda gösterilmiştir. T(0) = 1 T(0) = 0 T(n) = n * T(n-1) T(n) = T(n-1) + n Yorumlayıcı içerisinde fonksiyonun formal parametresini ve değerini tutmak için yanda gösterilen tablo kullanılacaktır. Tabloda, parametre isimleri (her bir fonksiyon aktivas- class Table { int n = 0; Hashtable table = new Hashtable(); public void inc() { ++n; public void dec() { --n; public void put(string id, int d) { table.put(id+n, new Integer(d)); public int get(string id) { return ((Integer)table.get(id+n)).intValue(); yonunun kendi formal parametresine erişebilmesini sağlamak için) bir tamsayı ile birleştirilerek saklanır. a) Bu fonksiyonlar için en az sayıda non-terminal içeren bir LL(1) grameri yazınız. (15p) b) Gramer kurallarına sözdizim sınıfları atayarak, yukarıda verilen faktöriyel fonksiyonu için en uygun nesne tanımlamasını yapınız. (15p) Eq f = new... c) Gramer kurallarından birinin aşağıdaki gibi tanımlandığını varsayarak, FuncEQ düğümünü değerlendiren ve ara çağrım sonuçlarını gösterebilen bir visit() metodu yazınız. (10p) S -> "T" "(" E ")" "=" E (FuncEQ) 2. Yanda verilen Tree dili ifadesinden SEQ, ESEQ ve iç içe bulunan CALL düğümleri çıkarılarak doğrusallaştırma yapılmak isteniyor. Bu ifadeyi, a) Doğrusallaştırma işlemine imkan verecek biçime dönüştürünüz (10p) b) Temel bloklarına ayırınız. (10p) Örnek: MOVE(TEMP(t),CALL(ESEQ(s,e),as)) ifadesi SEQ(s,MOVE(TEMP(t),CALL(e,as))) biçiminde doğrusallaştırılır. MOVE(TEMP(a),CALL(NAME(f), [CALL(NAME(g), [ESEQ(SEQ(MOVE(TEMP(b), CONST(0)),SEQ(CJUMP(EQ,TEMP(c), CONST(6),tr,fl),SEQ(LABEL(tr), SEQ(MOVE(TEMP(b),CONST(1)), LABEL(fl)))),TEMP(b)) ]) ])) 3. Aşağıdaki ifadeyi, i'nin kaydedicide ve a'nın aktivasyon kaydında bulunduğunu varsayarak, a[i]++; a) Tree diline dönüştürünüz. (10p) b) Maximal munch algoritmasını kullanarak Jouette emirlerine göre optimal desenlerle kaplayınız. (10p) 4. Değişkenlere kaydedici atama sürecinde, karışım grafikleri (interference graphs) renklendirilirken MOVE emirlerinin iki çeşit değerlendirmesi yapılabilir; grafikten çıkarılmaları yada kaynak ile hedef düğümlerinin birleştirilmesi. Bu değerlendirmelerde, a ve b düğümlerinin ab olarak birleştirilebilmesi için iki strateji kullanılır: Briggs stratejisi: ab düğümünün K ve üzerinde dereceye sahip K'dan daha az sayıda komşu düğümü olacaksa George stratejisi: a düğümünün her bir komşu düğümü, ya b'ye de komşu yada derecesi K'nın altında ise MOVE emirleri kesikli çizgilerle gösterilen yukarıdaki karışım grafiğinde; a) Sadeleştirme işlemlerine başlamadan önce, hangi MOVE emirlerinin hangi strateji ile birleştirilebileceğini açıklayınız (10p) b) 3 kaydediciye sahip (K=3) bir sistem için R, G, B harflerini kullanarak (örneğin a->g gibi) grafiğin renklendirmesini yapınız. (10p) Yardımcı tablolar arka sayfadadır ->

17 abstract class Exp CONST(int value) NAME(Label label) TEMP(Temp.Temp temp) BINOP(int binop, Exp left, Exp right) MEM(Exp exp) CALL(Exp func, ExpList args) ESEQ(Stm stm, Exp exp) ExpList(Exp head, ExpList tail) Tree dili işlev ve değişmezleri abstract class Stm MOVE(Exp dst, Exp src) EXP(Exp exp) JUMP(Exp exp, Temp.LabelList targets) CJUMP(int relop, Exp left, Exp right, Label iftrue, Label iffalse) SEQ(Stm left, Stm right) LABEL(Label label) StmList(Stm head, StmList tail) final static int BINOP.PLUS, BINOP.MINUS, BINOP.MUL, BINOP.DIV, BINOP.AND, BINOP.OR, BINOP.LSHIFT, BINOP.RSHIFT, BINOP.ARSHIFT, BINOP.XOR; final static int CJUMP.EQ, CJUMP.NE, CJUMP.LT, CJUMP.GT, CJUMP.LE, CJUMP.GE, CJUMP.ULT, CJUMP.ULE, CJUMP.UGT, CJUMP.UGE; Jouette aritmetik ve bellek emirleri

Gramer Tabanlı Değerlendirme Yöntemleri

Gramer Tabanlı Değerlendirme Yöntemleri Gramer Tabanlı Değerlendirme Yöntemleri 1. Giriş Bir gramer biçimsel bir dilde karakter dizileri yada kelimeler oluşturabilen kurallar seti olarak ifade edilir. Kurallar, dil alfabesini kullanarak, dilin

Detaylı

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız. ÖDEV (Vize Dönemi) CEVAPLAR 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız. PROGRAM Soru1 PRINT Merhaba Dünya! ; 2. Klavyeden girilen negatif bir sayıyı

Detaylı

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

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

Detaylı

Lambda İfadeleri (Lambda Expressions)

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

Detaylı

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar

Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks ve semantik bir dilin tanımı sağlar PDP 3 1 Sentaks (Syntax): ifadelerin (statements), deyimlerin (expressions), ve program birimlerinin biçimi veya yapısı Semantik (Semantics): ifadelerin, deyimlerin, ve program birimlerinin anlamı Sentaks

Detaylı

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

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

Detaylı

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

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

Detaylı

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. 1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result

Detaylı

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

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

Detaylı

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ

Detaylı

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA 6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı

Detaylı

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No.

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013. Ad, Soyad Öğrenci No. Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü BLGM 318 Ara Sınavı 2012 2013 Đlkbahar Dönemi 13 Nisan 2013 Ad, Soyad Öğrenci No. : : Öğretim Üyesi: Doç. Dr. Zeki BAYRAM Süre: 100 dakika Talimatlar:

Detaylı

C Programlama Dilininin Basit Yapıları

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

Detaylı

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

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

Detaylı

Sunum İçeriği. Programlamaya Giriş 22.03.2011

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

Detaylı

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

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

Detaylı

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı

Algoritma ve Akış Diyagramları

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

Detaylı

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır. GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.

Detaylı

Nesne Yönelimli Programlama

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

Detaylı

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say İÇİNDEKİLER 1. Bilgisayarın Yapısı Ve Programlama Dilleri Giriş 1 Bilgisayar ve Programlamanın Kısa Bir Tarihçesi 2 Donanım ve Yazılım Kavramları 3 Bilgisayarın Donanımsal yapısı 4 Giriş Birimi (Input

Detaylı

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini

Detaylı

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK Giriş-Tanımlamalar Program Nedir? Tanımlanmış bir problemi bilgisayar ortamında çözen ürüne program denir. Programlama Nedir? Tanımlanmış

Detaylı

Algoritma ve Programlamaya Giriş

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

Detaylı

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

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

Detaylı

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki

Detaylı

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ 2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 7 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Java Programlama Dili ve Algoritmadan Kodlamaya Geçiş) Yrd. Doç. Dr. İbrahim Küçükkoç

Detaylı

PASCAL PROGRAMLAMA DİLİ YAPISI

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

Detaylı

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf İçindekiler 1. Giriş... 1 1.2. c++ Programı Yapısı... 2 1.3.Using Direktifi... 5 Bölüm 2. Veri türleri, değişken kavramı, sabit ve değişken bildirimleri ve c++ da kullanımı 7 2.1. Temel veri türleri...

Detaylı

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

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 6. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Veri Tipleri Yük. Müh. Köksal Gündoğdu 2 Veri Tipleri Tam sayı ve Ondalık sayı veri tipleri Veri Tipi Alt Sınıf Üst Sınıf Duyarlı

Detaylı

Algoritma ve Akış Diyagramları

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

Detaylı

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi

Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması. Mustafa Kemal Üniversitesi Algoritma Geliştirme ve Veri Yapıları 9 Ağaç Veri Modeli ve Uygulaması Ağaç, verilerin birbirine sanki bir ağaç yapısı oluşturuyormuş gibi sanal olarak bağlanmasıyla elde edilen hiyararşik yapıya sahip

Detaylı

Nesne Tabanlı Programlama

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

Detaylı

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

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

Detaylı

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

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

Detaylı

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.

Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır. I. GİRİŞ Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır. İnsanların elle yaptığı ve yapmakta olduğu bir çok

Detaylı

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı

-A Grubu- MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı KOCAELİ ÜNİVERSİTESİ 14.10.2016 MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ MKT103 Görsel Programlama 2015/2016 Güz Dönemi Final Sınavı Öğretim Üyesi: Prof. Dr. Hasan OCAK Sınav Süresi: 80 dakika. Her

Detaylı

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

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

Detaylı

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

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

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar:

Detaylı

C++ Operatörler (Operators)

C++ Operatörler (Operators) C++ Operatörler (Operators) Konular Operatörler o Aritmetiksel (Matematiksel) Operatörler o Karşılaştırma Operatörleri o Mantıksal Operatörler o Atama Operatörleri o Bit Düzeyinde Operatörler o Özel Amaçlı

Detaylı

Programlama Dillerinde Kullanılan Veri Tipleri

Programlama Dillerinde Kullanılan Veri Tipleri Programlama Dillerinde Kullanılan Veri Tipleri Taban/Biçim Basic Paskal C/C++/C#/Java 10 (Decimal ) - - - 16 (Hexadecimal) &hsayı veya &Hsayı $sayı 0xsayı veya 0Xsayı Üstel eüs veya Eüs eüs veya Eüs eüs

Detaylı

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

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

Detaylı

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği

Yrd. Doç. Dr. A. Burak İNNER Bilgisayar Mühendisliği Yrd. Doç. Dr. A. Burak İER Bilgisayar Mühendisliği Algoritma Analizi İçerik: Temel Kavramlar Yinelemeli ve Yinelemesiz Algoritma Analizi Asimptotik otasyonlar Temel Kavramlar Algoritma: Bir problemin çözümüne

Detaylı

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu https://zumrakavafoglu.github.io/

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu https://zumrakavafoglu.github.io/ BBS515 Nesneye Yönelik Programlama Ders 2 Zümra Kavafoğlu https://zumrakavafoglu.github.io/ print metodu System.out.print imleci aynı satırda tutar, System.out.println imleci bir alt satıra indirir Tamsayı

Detaylı

Veri Yapıları ve Algoritmalar

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

Detaylı

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

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

Detaylı

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

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

Detaylı

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R Atamalar int a ; a=4 ; // doğru bir atama 4=a ; // yanlış bir atama! Temel Tiplerde Atama Atama işlemi, temel (primitive) tipler için

Detaylı

PROGRAMLAMAYA GİRİŞ DERS 2

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

Detaylı

BM202 SAYISAL ÇÖZÜMLEME

BM202 SAYISAL ÇÖZÜMLEME BM202 SAYISAL ÇÖZÜMLEME DOÇ.DR. CİHAN KARAKUZU DERS-2 1 Ders2-Sayısal Hesaplamalarda Gerek Duyulabilecek Matlab İşlemleri MATLAB, çok paradigmalı (bir şeyin nasıl üretileceği konusunda örnek, model) sayısal

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Detaylı

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

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

Detaylı

YAZILI SINAV SORU ÖRNEKLERİ MATEMATİK

YAZILI SINAV SORU ÖRNEKLERİ MATEMATİK YAZILI SINAV SORU ÖRNEKLERİ MATEMATİK SORU 1: Aşağıdaki grafik, bir okuldaki spor yarışmasına katılan öğrencilerin yaşa göre dağılışını göstermektedir. Öğrenci sayısı 5 3 9 10 1 14 Yaş 1.1: Yukarıdaki

Detaylı

BİL-142 Bilgisayar Programlama II

BİL-142 Bilgisayar Programlama II BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Sınıflar, Nesneler, Fonksiyon ve Veri Üyeleri Sınıf ve Fonksiyon Üyeleri

Detaylı

Java String İşlemleri

Java String İşlemleri Java String İşlemleri Karakterler (Characters) "char" kelimesi bir karakter tanımlamak için kullanılır. Karakter tek tırnak içine alınmalıdır. Bir char'ın aralığı 0 ile 65536 arasındadır. Char türü işaretsiz

Detaylı

Tokenlarin Taninmasi

Tokenlarin Taninmasi Tokenlarin Taninmasi stmt t if expr then stmt if expr then stmt else stmt expr t term relop term term term t id num if, then, else, relop, id, ve num terminal (token), stmt, expr, term nonterminal olarak

Detaylı

Syntax Analysis. 4/5/2004 Formal Diller 4.1

Syntax Analysis. 4/5/2004 Formal Diller 4.1 Syntax Analysis Her programlama dilinin yazilan bir programin syntax olarak dogru olup olmadigini belirleyen kurallari vardir. Programlama dillerinin syntactic yapisi Contex-Free Grammer / BNF (Backus-Naur

Detaylı

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

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

Detaylı

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

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

Detaylı

BİLGİSAYAR PROGRAMLAMA MATLAB

BİLGİSAYAR PROGRAMLAMA MATLAB BİLGİSAYAR PROGRAMLAMA MATLAB Arş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi Bu hafta? 1. Matlab ve Programlama Ortamı 2. Matlab Komut Penceresi 3. Matlab de değişken tanımlama 4.

Detaylı

1. PROGRAMLAMAYA GİRİŞ

1. PROGRAMLAMAYA GİRİŞ 1. PROGRAMLAMAYA GİRİŞ Bilgisayardaki İşlem Akışı Hammadde İşletme Makine, Teçhizat vs. İnsan Ürün Veri Bilgisayar Program İnsan Sonuç Bilgisayarın Genel Bileşenleri Bilgisayar Yazılım Donanım Sistem Uygulama

Detaylı

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ DÖNEM SONU SINAVI GÜZ 2009-2010 13 Ocak 2010, Sınav Süresi: 120 dakika. İsim

Detaylı

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I 1 BLM 111 ALGORİTMA VE PROGRAMLAMA I DİZİLER (ARRAYS) Kullanıcıdan N tane tamsayı, xi, alalım ve 1. Bu sayıların ortalamasını hesaplamak isteyelim ort = 0; for (i=0; i

Detaylı

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur Python büyük-küçük harf ayrımı yapar. Pythonda kod yazarken girintiler kullanılır Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur Klavyeden girilen bir değeri okumak ad=input("adınızı giriniz")

Detaylı

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

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

Detaylı

11- FONKSİYONLAR (FUNCTIONS)

11- FONKSİYONLAR (FUNCTIONS) 1 Fonksiyon : Belirli bir işi yapan programın bir isim altına tanımlanarak, o isimle çağrılarak kullanılması. Fonksiyonun faydaları : Programın modülerliğini arttırır. Aynı işi yapan program parçası tekrar

Detaylı

Dr. Fatih AY Tel:

Dr. Fatih AY Tel: Bilgisayar Programlama Ders 5 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyonlar Fonksiyonlar Büyük programlar geliştirmenin en iyi yolu, onu orijinal programdan daha kolay

Detaylı

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN ESM-361 Mikroişlemciler 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN Bit operatörleri Bit operatörleri bit düzeyinde işlem yapan operatörlerdir; yani sayıları bir bütün olarak değil, bit bit

Detaylı

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

BMT 101 Algoritma ve Programlama I 7. Hafta. Yük. Müh. Köksal Gündoğdu 1 BMT 101 Algoritma ve Programlama I 7. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Program Denetimi Yük. Müh. Köksal Gündoğdu 2 Program Denetimi Bir program, belirli deyim satırlarından oluşur ve genellikle bu

Detaylı

Genel Programlama I

Genel Programlama I Genel Programlama I 30.09.2010 1 Genel Programlama I Ders İçeriği Programlamaya giriş ve algoritma kavramları Basit ve karmaşık veri tipleri Program kontrol komutları (Döngü ve şart yapıları) Diziler ve

Detaylı

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta Ön bilgi: Özyineli fonksiyon tanımlanabilmeli. Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli. 1. Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı

Detaylı

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA BÖLÜM-II ALGORİTMA I. GİRİŞ Bilgisayar dünyasında, insanın

Detaylı

Hafta 13 Fonksiyonlar

Hafta 13 Fonksiyonlar BLM111 Programlama Dilleri I Hafta 13 Fonksiyonlar Yrd. Doç. Dr. Caner ÖZCAN Fonksiyonlar Fonksiyonlar C de modüller Programlar kullanıcı tanımlı fonksiyonları ve kütüphane fonksiyonlarını birlikte kullanırlar.

Detaylı

Arasınav Örnek Soruları Bahar 2018

Arasınav Örnek Soruları Bahar 2018 Sayfa#1 Manisa Celal Bayar Üniversitesi Yazılım Mühendisliği Bölümü YZM 2116 Veri Yapıları Dersi Arasınav Örnek Soruları Bahar 2018 Süre: 75 Dakika Adı ve Soyadı YANIT ANAHTARI Öğrenci Numarası Grubu İmza

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

HSancak Nesne Tabanlı Programlama I Ders Notları METOTLAR Nesneye yönelik programlama dillerinde genellikle fonksiyonlar metot olarak isimlendirilirler. Metot ve fonksiyon olarak ifade edilecek kavramlar aynı anlamda kullanılacaktır. Her çalışan C# programı

Detaylı

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ Ana Main Kodları /*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/ package javaapplication1; public class JavaApplication1 public static void

Detaylı

Nesne Yönelimli Programlama

Nesne Yönelimli Programlama 1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya

Detaylı

Java da İşleçler, Ders #3 (4 Kasım 2009)

Java da İşleçler, Ders #3 (4 Kasım 2009) Java da İşleçler, Kontrol Akış ve Döngü Deyimleri BS-515 Nesneye Yönelik Programlama Ders #3 (4 Kasım 2009) İçerikç Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu

Detaylı

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu

Detaylı

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama İçerik Java da İşleçler, Kontrol Akış ve Döngü Deyimleri Geçen ders: Nesne ve Sınıf Kavramları Nesne ve Sınıf ın Java da gerçekleştirilmesi Bu ders: Java da işleçler ( operators ) Java da kontrol-akış

Detaylı

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları

Kocaeli Üniversitesi C Bilgisayar Programlama Ara Sınavı Test Soruları Kocaeli Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : 11.04.2018, 50 dak. Dikkat!!! Soru kitapçığında ve cevap

Detaylı

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri 49 Yrd. Doç. Dr. Yakup EMÜL, Bilgisayar Programlama Ders Notları (B02) Çalıştırılabilir C ifadeleri ya bir işlem gerçekleştirir ( girilen verilerin toplanması

Detaylı

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

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

Detaylı

ALGORİTMA VE PROGRAMLAMA I

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

Detaylı

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra

Detaylı

YZM 2116 Veri Yapıları

YZM 2116 Veri Yapıları YZM 2116 Veri Yapıları Yrd. Doç. Dr. Deniz KILINÇ Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Yazılım Mühendisliği Bu bölümde, BÖLÜM - 4 Stack (Yığın, Yığıt) Veri Yapısı Stack Çalışma

Detaylı

SAYILAR DOĞAL VE TAM SAYILAR

SAYILAR DOĞAL VE TAM SAYILAR 1 SAYILAR DOĞAL VE TAM SAYILAR RAKAM: Sayıları ifade etmek için kullandığımız 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 sembollerinden her birine rakam denir. Soru: a ve b farklı rakamlar olmak üzere a + b nin alabileceği

Detaylı

Java da Program Denetimi ve Operatörler

Java da Program Denetimi ve Operatörler Java da Program Denetimi ve Operatörler 1 Atamalar int a ; a=4 ; // doğru bir atama 4=a ; // yanlış bir atama! 2 Temel (Primitive) Tiplerde Atama int a, b ; a=4 ; b=5 ; a=b ; Sonuç : a=5, b=5 3 Nesneler

Detaylı

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN Yrd. Doç. Dr. Caner ÖZCAN Derse Giriş Ders Web Sitesi: www.canerozcan.net Ofis Saatleri: Salı 11:00-13:00 Perşembe 15:30-17:30 ya da email ile randevu alınız: canerozcan@karabuk.edu.tr Kaynak Kitaplar:

Detaylı

Nesne Tabanlı Programlama

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

Detaylı

HSancak Nesne Tabanlı Programlama I Ders Notları

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

Detaylı

LYS MATEMATİK DENEME - 1

LYS MATEMATİK DENEME - 1 LYS MATEMATİK DENEME - BU SORULAR FİNAL EĞİTİM KURUMLARI TARAFINDAN SAĞLANMIŞTIR. İZİNSİZ KOPYALANMASI VE ÇOĞALTILMASI YASAKTIR, YAPILDIĞI TAKDİRDE CEZAİ İŞLEM UYGULANACAKTIR. LYS MATEMATİK TESTİ. Bu testte

Detaylı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar BLM-112 PROGRAMLAMA DİLLERİ II Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/

Detaylı

YZM Biçimsel Diller ve Otomata Teorisi. Ders#06

YZM Biçimsel Diller ve Otomata Teorisi. Ders#06 YZM 3229- Biçimsel Diller ve Otomata Teorisi Ders#06 İçerikten Bağımsız Diller İçerikten Bağımsız Diller (Context-Free Languages) Şu ana değin Düzenli Dilleri İfade Etmek için Kullanılabilecek Yapıları

Detaylı

ELN1001 BİLGİSAYAR PROGRAMLAMA I

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

Detaylı

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer

Detaylı

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

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu BBS515 Nesneye Yönelik Programlama Ders 3 Zümra Kavafoğlu https://zumrakavafoglu.github.io/ Bağıntısal Operatörler operatör tanımı < küçüktür > büyüktür = büyük eşittir eşittir!= eşit

Detaylı

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM 2014) //Class (Sınıf) // Sınıf (class) soyut veri tipidir. // Nesne (object) sınıfın somutlaşan bir cismidir. // static : nesnesi oluşturulmaz.

Detaylı