Uygulama Notları: 6

FİZ219 - Bilgisayar Programlama I | 15/11/2019

    1. Ara Sınav Soru ve Çözümleri

Emre S. Tasci emre.tasci@hacettepe.edu.tr

1. Soru:

a) $\begin{bmatrix} 1 & 2 & 3 & 4 & 5 \\6 & 7 & 8 & 9 & 10\\ 11 & 12 & 13 & 14 & 15 \\16 & 17 & 18 & 19 & 20\end{bmatrix}$ ile verilen A matrisini Octave'da nasıl tanımlarsınız?

In [1]:
A = [1:5; 6:10; 11:15; 16:20] % Güzel cevap

A = [1:5
6:10
11:15
16:20] % Eşdeğer güzellikte cevap
A =

    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15
   16   17   18   19   20

A =

    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15
   16   17   18   19   20

In [2]:
A = [1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20] % Bariz cevap
A =

    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15
   16   17   18   19   20

In [3]:
A = [];
for satir = 1:4
    for sutun = 1:5
        A(satir,sutun) = (satir-1)*5 + sutun;
    endfor
endfor
A % İlginç cevap
A =

    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15
   16   17   18   19   20

In [4]:
A = reshape(1:20,5,4)' % Henüz görmediğiniz bir cevap ;)
A =

    1    2    3    4    5
    6    7    8    9   10
   11   12   13   14   15
   16   17   18   19   20

b) Bu matrisin $\begin{array}{cc} 8 & 9 \\ 18 & 19 \end{array}$ 'luk kesimine karşılık gelen kısmını B matrisi olarak nasıl atarsınız?

In [5]:
B = A([2,4],3:4) % Güzel cevap
B =

    8    9
   18   19

In [6]:
B = A([2,4],[3,4]) % Normal cevap
B =

    8    9
   18   19

In [7]:
B = [A(2,3) A(2,4); A(4,3) A(4,4)] % Zorlama cevap
B =

    8    9
   18   19

2. Soru

Aşağıdaki satırlar sırası ile girildiğinde, her bir satırdan sonraki çıktıyı yazınız:

In [8]:
m = 1:pi
m =

   1   2   3

In [9]:
[1:4].^2*2
ans =

    2    8   18   32

In [10]:
a = 2;
In [11]:
% a = 5
In [12]:
b = a + 4
b =  6

3. Soru

$-\pi\le\theta\le3\pi$ değer aralığında, en az 100 değer kullanarak $\sin{(\theta)}$ fonksiyonunun grafiğini çizdirin.

Bonus: $\sin{(\theta)}$ ile birlikte aynı grafikte $\cos{(\theta)}$ fonksiyonunu da çizdirin.

Bonusun bonusu: sin grafiğini sadece noktalı ve kırmızı; cos grafiğini ise kesikli çizgili ve mavi çizdirin.

In [13]:
%theta = -pi:0.125:3*pi; % Normal aralık tanımı
theta = linspace(-pi,3*pi,100); % Güzel aralık tanımı
sinler = sin(theta);
plot(theta,sinler)
In [14]:
koslar = cos(theta);
plot(theta,sinler,theta,koslar)
In [15]:
plot(theta,sinler,".r",theta,koslar,"--b")

4. Soru:

Aşağıdaki program çalıştığında ekrana neler yazılacaktır?

In [16]:
y = 0;
k = 2;
x = 19;
if(k<5)
    while(x<20)
        x = 30 - k.^2;
        y = x + 2;
    endwhile
else
    y = 6;
endif
y
y =  28

5. Soru:

[6, 30] (yani $6\le x\le30$) aralığındaki tam sayıları toplayan bir program yazın.

In [17]:
s = sum(6:30) % Güzel cevap
s =  450
In [18]:
s = 0;
for x = 6:30
    s = s + x;
endfor
s % Normal cevap
s =  450
In [19]:
s = 6+7+8+9+10+11+12+13+14+15+16+17+18+19+20+21+22+23+24+25+...
26+27+28+29+30 % Korkunç cevap (!!!)
s =  450

Bonus Soru:

$x_1 = 0$ ve $x_2 = 1$ ile başlayıp, sonraki elemanları $x_i = x_{i-2} + x_{i-1}$ şeklinde hesaplanan (0, 1, 1, 2, 3, 5, 8, 13, ...) sayı dizisine Fibonacci dizisi denmekte olup, doğada bu örüntü (pattern) sık sık karşımıza çıkar. İlk 100 Fibonacci sayısını hesaplayıp, onları fibonacci adındaki bir listede toplayan bir program yazın.

In [20]:
fibonacci = [0 1];
for i=3:100
    fibonacci(i) = fibonacci(i-2) + fibonacci(i-1);
endfor
fibonacci(1:10) % ilk 10 terim
fibonacci(98:100) % son 3 terim
ans =

    0    1    1    2    3    5    8   13   21   34

ans =

   8.3621e+19   1.3530e+20   2.1892e+20

İlerki derslerde fonksiyonları görünce, bu diziyi çok daha ince, güzel ve zarif bir yolla ("tekrarlı/rekürsif") hesaplamayı öğreneceğiz. ;)