Numarası : CEVAP Adı Soyadı : ANAHTARI Açıklamalar: 1. 2. 3. 4. 5. 6. Toplam 20 15 15 20 15 15 100 Bu alanı boş bırakınız. Sınavda ders notlarının kullanımı serbest ancak alış-verişi yasaktır. Sınav esnasında cep telefonu, bilgisayar, hesap makinası, vb. araçların kullanılması yasaktır. Cep telefonları kapalı konumda olmalıdır. Cep telefonu açık durumda olanların sınavları geçersiz sayılacaktır. Sınav süresi 90 dakikadır. Başarılar dilerim. SORULAR 1. Bir zar 1000 kez atıldığında her bir sayının kaçar kez geldiğini yandakine benzer olarak bilgisayarın c:/data/zar.txt dosyası içerisine PrintWriter veri tipini kullanarak kaydeden programı Java programlama dilinin yazım kurallarına dikkat ederek aşağıya yazınız. import java.io.printwriter; zar.txt 1 167 2 177 3 150 4 168 5 172 6 166 try { PrintWriter yaz = new PrintWriter("c:/data/zar.txt"); int[] zar = new int[6]; for(int i=0;i<1000;i++) { int j = (int) (Math.random()*6); zar[j]++; for(int i=0;i<6;i++) yaz.println( (i+1) + " " + zar[i]); yaz.close(); catch (Exception e) { System.out.println("Hata oldu"); 1
2. 2-boyutlu vektörler için aşağıda tanımı verilen Vector2D veri tipini oluşturunuz. Not: x = (x 1, x 2 ) ve y = (y 1, y 2 ) vektörlerinin iç çarpımı x, y = x 1 y 1 + x 2 y 2 şeklinde tanımlanır. public class Vector2D Vector2D(double x1, double x2) Vector2D plus(vector2d b) b vektörünü bu vektöre ekle Vector2D minus(vector2d b) b vektörünü bu vektörden çıkart double dot(vector2d b) b vektörünün bu vektörle iç çarpımı String tostring() vektörün (x1,x2) biçiminde String gösterimi public class Vector2D { private double x; private double y; public Vector2D(double x1,double x2) { x=x1; y=x2; public Vector2D plus(vector2d b) { return new Vector2D(x+b.x,y+b.y); public Vector2D minus(vector2d b) { return new Vector2D(x-b.x,y-b.y); public double dot(vector2d b) { return x*b.x + y*b.y; public String tostring() { return "(" + x + "," + y + ")"; 2
3. 2. soruda tanımlanan Vector2D veri tipini kullanarak, her bir bileşeni [ 1, 1] aralığında olan Vector2D veri tipinde rastgele iki vektör oluşturup, hem bu vektörleri, hem de bu vektörlerin toplamını, farkını ve iç çarpımını ekranda görüntüleyen bir istemci (client) programını Java programlama dilinin yazım kurallarına dikkat ederek aşağıya yazınız. Örnek çıktı: x=(-0.17809712743564599,-0.6330298154994949) y=(0.974976345506483,0.506536567922915) x+y=(0.7968792180708371,-0.12649324757657987) x-y=(-1.153073472942129,-1.13956638342241) x.y=-0.49429323658839874 double x1 = Math.random()*2-1; double x2 = Math.random()*2-1; double y1 = Math.random()*2-1; double y2 = Math.random()*2-1; Vector2D x = new Vector2D(x1,x2); Vector2D y = new Vector2D(y1,y2); System.out.println("x=" + x.tostring() ); System.out.println("y=" + y.tostring() ); System.out.println("x+y=" + x.plus(y).tostring() ); System.out.println("x-y=" + x.minus(y).tostring() ); System.out.println("x.y=" + x.dot(y) ); 3
4. Aşağıdaki satırların çıktılarını yandaki boşluklara yazınız. String s = "KELEBEK"; s = s.substring(0,1) + s.substring(1, s.length()).tolowercase(); System.out.println(s); Kelebek String s = "KALABAK"; System.out.println( s.indexof("k") + s.indexof("a")); 1 String t=""; String s="matematik"; for(int i=s.length()-1;i>=0;i--) t=t+s.charat(i); System.out.println(t); String s="kalabak"; while (s.contains("a")) s=s.replace("a", ""); System.out.println(s); kitametam klbk 5. Bilgisayarda kayıtlı c:/data/resim.jpg resim dosyasının rastgele seçilen iki pikselini 1000 kez karşılıklı olarak değiştirip (piksellerden biri mavi diğeri kırmızı ise mavi piksel kırmızı, kırmızı piksel de mavi olacak), oluşan yeni resmi ekranda görüntüleyen programı Java programlama dilinin yazım kurallarına dikkat ederek aşağıya yazınız. import java.awt.color; Picture resim = new Picture("c:/data/resim.jpg"); for(int k=0;k<1000;k++) { int i=(int) (Math.random()*resim.width()); int j=(int) (Math.random()*resim.height()); int x=(int) (Math.random()*resim.width()); int y=(int) (Math.random()*resim.height()); Color renk1 = resim.get(i, j); Color renk2 = resim.get(x, y); resim.set(i, j, renk2); resim.set(x, y, renk1); resim.show(); 4
6. Bilgisayarda kayıtlı c:/data/isimler.txt metin dosyasının her bir satırında bir kişinin ismi yer almaktadır (bazı kişiler iki ya da daha fazla isimli de olabilir). Bu dosya içerisinde toplam kaç isim olduğunu ve bunların kaçının 5 harfli olduğunu bulup, ekranda görüntüleyen programı Java programlama dilinin yazım kurallarına dikkat ederek aşağıya yazınız. import java.util.scanner; import java.io.file; File dosya = new File("c:/data/isimler.txt"); try { Scanner giris = new Scanner(dosya); int toplam=0; int say=0; while(giris.hasnextline()) { String isim = giris.nextline(); toplam++; if(isim.length()==5) say++; giris.close(); System.out.println(toplam + " isimden " + say + " tanesi 5 harfli"); catch (Exception e) { System.out.println("hata"); 5