You are on page 1of 14

ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

1. Girilen iki sayıdan büyük olanı bulan “BuyukSayi” isimli MATLAB fonksiyon
dosyasını yazınız ve bu “BuyukSayi” fonksiyonunu kullanarak girilen üç sayıdan
en büyük olanını bulan “EnBuyukSayi” isimli MATLAB fonksiyon dosyasını
yazınız.

CEVAP:
function buyukSayi=BuyukSayi(sayi1,sayi2)
if sayi1<sayi2
buyukSayi=sayi1;
else
buyukSayi=sayi2;
end
end

function enBuyukSayi=EnBuyukSayi(sayi1,sayi2,sayi3)
buyukSayi=BuyukSayi(sayi1,sayi2);
enBuyukSayi=BuyukSayi(buyukSayi,sayi3);
end

2. Aşağıda yer alan program çalıştırıldığında ekran çıktısını yazınız.

b=-1;
toplam=5;
for x = 2:2:4
if x < 3
toplam=toplam+x^2*b;
else
toplam=toplam+sqrt(x);
end
end
k=toplam*2;
fprintf('Sonuçlar :%g %g\n', k,toplam);
disp('Program tamamlandı')

CEVAP:

Sonuçlar :6 3

1. Verilen bir açıyı radyansa dereceye, dereceyse radyana çeviren bir MATLAB
programını, if yapısını kullanarak yazınız. Fonksiyonun girdileri açı ve açının
cinsi, çıktısı ise hesaplanan değer ve bir izah cümlesi olmalıdır.
𝑑𝑒𝑟𝑒𝑐𝑒 ∗ 𝜋
𝑟𝑎𝑑𝑦𝑎𝑛 =
180
CEVAP:
aci_cinsi=input('radyan için 1 derece için 2 giriniz');
aci=input('açı değerini giriniz=');
if aci_cinsi==1
derece=aci*180/pi
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

else
radyan=aci*pi/180
end
3. Aşağıda verilen sayı dizisinde 51 ile 111 (sınır değerler dahil) arasındaki
sayıların ortalamasını veren bir MATLAB programı yazınız. (Döngü başlangıcı 1
olacaktır) Sayı dizisi: 1:5:150
CEVAP:
t=0;k=2;
for i=1:5:150
if i>=51 && i<=111
t=t+i;
k=k+1;
end
end
ort=t/k
4. Dışardan girilen herhangi bir tarih değeri için, yılbaşından bu tarihe kadar geçen
gün sayısını hesaplayıp ekrana yazdıran bir MATLAB programı yazınız. (Örnek:
girilen tarih 2.nci ayın 5’i ise toplam gün=31+5=36 gün).
CEVAP:
gun=input('Gunu giriniz');
ay=input('Ay giriniz');
x=[31 28 31 30 31 30 31 31 30 31 30 31];
toplam=0;
for i=1:ay-1
toplam=toplam+x(i);
end
toplam=toplam+gun
5. Aşağıda verilen A dizinin tüm elemanları ana programdan alt programa
gönderilerek, alt programda bu dizinin negatif değerli elemanlarının toplamı
bulunacaktır. Bu bulunan değeri ana programa gönderecek ve ana programda
ekrana yazdıracak bir MATLAB programı yazınız.
𝐴 = [2 −5 8 −3 4 5 −7 9 −10 12]

CEVAP:
Ana program:
clear all
clc
A=[2 -5 8 -3 4 5 -7 -10 12];
ytop=negatif(A);
fprintf('negatif sayıların
toplamı=%g',ytop)
Alt program:
function ytop=negatif(A)
ytop=0;
for i=1:length(A)
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

if A(i)<0
ytop=ytop+A(i);

6. Bir maddesel noktanın hareketi 𝑠 = 4𝑡 3 − 15𝑡 2 + 36𝑡 − 10 bağıntısı ile


tanımlanmıştır. t=10 ile 200 saniye arasında (artım miktarı 5 saniye olacak
şekilde) hız ve ivme değerlerini alt programda hesaplayıp ana programda
aşağıda verilen formatta yazdıracak bir MATLAB programı yazınız.
t V A
10 .. ..
.. .. ..

CEVAP:
Ana Program:
t=10:5:200
[hiz ivme]=madde(t);
fprintf('t v a\n')
for i=1:length(t)
fprintf('%g %g %g\n',t(i),hiz(i),ivme(i))
end
Alt program:
function [h a]=madde(t)
h=12*t.^2-30*t+36;
a=24*t-30;
7. Dışardan girilen bir x değeri için aşağıdaki Y fonksiyonunu MATLAB’de
hesaplayan programı yazınız.
−𝑥−1
𝑒
, 1 ≤ 𝑥 < 10
log 𝑥 + ln 𝑥
𝑌= sin 3𝑥
, 𝑥 ≥ 10
√3𝜋
{ 𝑥 −𝑒+𝑥 + √𝑥 3 |𝑥|, 𝑥<1
CEVAP:
x=input('x=');
if 1<=x&x<10
y=exp(‐x‐1)/(log10(x)+log(x))
elseif x>=10
y=sin(3*x)/sqrt(3*pi)
elseif x<1
y=x^(‐exp(1)+x)+sqrt(x^3)*abs(x)
end
8. Aşağıda verilen fonksiyonu 0≤x≤15 aralığında 0.5 artımla değerini hesaplayıp
sonuçlardan sadece pozitif değerli olanları bir dizi değişkenine atayan bir
MATLAB programı yazınız.
𝑓(𝑥) = 𝑥 2 𝑒 −3𝑥
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

CEVAP:
k=1;
for x=0:0.5:15
f=x^2‐exp(‐3*x)
if f>=0
y(k)=f;
k=k+1;
end
end
9. Dışarıdan girilen bir x ve y değeri için aşağıda verilen bağıntıyı hesaplayan bir
MATLAB programı yazınız. i=1,3,5,...,45 tek sayı değeri almaktadır.

45
𝑒 𝑥−𝑖 𝑒 𝑥−1 𝑒 𝑥−3 𝑒 𝑥−45
∑ = + + ⋯+
2𝑖 + 𝑦 2 ∗ 1 + 𝑦 2 ∗ 3 + 𝑦 2 ∗ 45 + 𝑦
𝑖=1
CEVAP:
clear all
clc
x=input('x=');
y=input('y=');
t=0;
for i=1:2:45
t=t+exp(x-i)/(2*i+y);
end
t
10. 𝜋 değeri aşağıda verilen seri ifadesi ile yaklaşık olarak bulunabilmektedir:
1 1 1 1 1
𝜋 = 4 ∗ (1 − + − + + ⋯ + )
3 5 7 9 99
𝜋 değerini 1/99 terimine kadar olan terimleri dikkate alarak hesaplayan bir
MATLAB programı yazınız.
Not: i=1,3,5… değeri almak kaydıyla bir eksi bir artı işlemi aşağıdaki ifadeyle elde
edilebilir:(−1)(𝑖−1)⁄2

CEVAP:
clear all
clc
t=0;
for i=1:2:99
k=(-1)^((i-1)/2);
t=t+4*(k*1/i);
end
t
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

11. x=2 değerinden başlayıp aşağıda verilen fonksiyonun değerinin 1500 veya daha
fazla olana kadar x’in değerini 2 katına çıkaran ve tüm adımlardaki x ve y’nin
değerlerini ekrana aşağıda belirtildiği gibi yazan bir MATLAB programı yazınız.
𝑦 = 𝑦 + 𝑥 3 − 2𝑥
Ekran çıktısı:
X=2 ve y=4
CEVAP:
clear all;clc
x=2;
y=0;
while y<=1500
y=y+x^3-2*x;
fprintf('x=%g ve y=%g\n',x,y)
x=2*x;
end
12. x=10 den başlayarak 3 artımla 54' e (sınır değerler dahil) kadar değerler
𝑥
almaktadır. 𝑦 = 2 − 10 olarak tanımlandığında aşağıdaki şartlar için z
fonksiyonunu hesaplayıp sadece y’nin pozitif değerleri için, ekrana aşağıda
belirtildiği gibi yazan bir MATLAB program yazınız.
log10 𝑥 + 𝑒 𝑥+2
, 𝑦 > 10
√𝑥 3 − |𝑥|
𝑌=
−𝑥 2 + √𝑥 3
, 𝑦≤0
{ −𝑒 𝑥 − 𝑥 2
Ekran çıktısı:
y=.. ve z=..
CEVAP:
clear all;clc
for x=10:3:54
y=x/2-10;
if y>0
z=(log10(x)+exp(x+2))/sqrt(x^3-abs(x));
fprintf('y=%g için z=%g\n',y,z)
else
z=(-x^2+sqrt(x^3))/(-exp(x)-x^2);
end
end
13. Aşağıda verilen A vektörün pozitif elemanların ve negatif elemanlarının
toplamını ve ikisinin oranı ekrana aşağıda verilen formatta yazan bir MATLAB
programı yazınız.
𝐴 = [−4 7 −3 4 6 −12]
Pozitif elemanların toplamı=…
Negatif elemanların toplamı=…
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

Oran=….
CEVAP:
A=[4 7 -3 4 6 12];
neg_toplam=0;
poz_toplam=0;
for i=1:length(A)
if A(i)<0
neg_toplam =neg_toplam +A(i);
else
poz_toplam =poz_toplam +A(i);
end
end
oran=neg_toplam /poz_toplam;
fprintf('Pozitif elemanların toplamı=%g\n',poz_toplam)
fprintf('Negatif elemanların toplamı=%g\n',neg_toplam)
fprintf('Oran=%g\n',oran)

14. Klavyeden girilen pozitif x ve y sayıları arasında kalan ardışık sayıların (y x’den
büyük olmalı, aksi durumda ekrana herhangi bir uyarı mesajı yazmalı) toplamını
ve ortalamasını hesaplayan bir matlab programı yazınız.

CEVAP:
clear all;clc
x=input('x=');
y=input('y=');
k=1;t=0;
if y>x
for i=x:y
t=t+i;
k=k+1;
end
ort=t/k;
else
disp('y x den büyük olmalı')
end
15. Kenar uzunluğu dışardan girilen bir eşkenar üçgenin alanın ve çevresini alt
programda hesaplayıp ana programda aşağıda belirtilen formatta ekrana yazan
bir MATLAB programı yazınız. Kenar=….. Çevre=…. Alan=….

CEVAP:
clear all;clc
k=input('kenar=');
[a c]=alt_alan(k)
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

fprintf('Kenar=%g Çevre=%g Alan=%g',k,a,c)

function [a c]=alt_alan(k)
a=k^2*sqrt(3)/4;
c=3*k;
16. 20 ile 200 derece arasındaki açıların (10 artımlı) radyan karşılığını, sinüs ve
kosinüs değerlerini aşağıda verilen formatta ekrana yazan bir MATLAB programı
yazınız.
Derece Radyan Sin Cos
20 .. .. ..
30 .. .. ..
.. .. .. ..

CEVAP:
clear all;clc
fprintf('Derece Radyan Sin Cos\n')
for x=20:10:200
rad=x*pi/180;
fprintf('%g %g %g %g\n',x,rad,sind(x),cosd(x))
end
17. Dışarıdan girilen bir x değeri 5 ile 15 arasında ise aşağıda verilen bağıntının
sonucunu bulup yazdıran değilse yanlış giriş yaptınız mesajını ekrana yazdıran
bir MATLAB programı yazınız.
5
𝑥2 + 𝑖

2∗𝑖
𝑖=1
𝑖𝑓𝑎𝑑𝑒𝑛𝑖𝑛 𝑎ç𝚤𝑙𝚤𝑚𝚤
5
𝑥2 + 𝑖 𝑥2 + 1 𝑥2 + 2 𝑥2 + 5
∑ = + + ⋯+
2∗𝑖 2∗1 2∗2 2∗5
𝑖=1
CEVAP:
clear all;clc
x=input('x=');
if x>5 && x<15
t=0;
for i=1:5
t=t+(x^2+i)/2*i;
end
fprintf('t=%g',t)
else
disp('yanlış giriş yaptınız')
end
18. Dışarıdan girilen sayı;
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

a. 200’den büyük ise, girilen sayıdan 200’e kadar (200 dahil) sayıların
kareköklerinin toplamını,
b. girilen sayı 200’den küçük ise, 1’den başlayarak girilen sayıya kadar
ardışık sayıları karelerin toplamını hesaplayan bir MATLAB programı
yazınız.
CEVAP:
x=input('x=');
t=0;
if x>200
for i=x:-1:200
t=t+sqrt(i);
end
elseif x<200
for i=1:1:x
t=t+(i)^2;
end
end
19. Verilen fonksiyonu aşağıda verilen formatta ekrana, fonksiyonun değeri 100
aşıncaya kadar yazan (100’u aştığında yazmayan) bir MATLAB programı yazınız.
𝑓(𝑥) = 𝑥 2 − 2𝑥
CEVAP :
clear all;clc
for x=1:10000
fx=x^2-2*x;
if fx<100
fprintf('x=%g f(x)=%g\n',x,fx)
end
20. Ekrana aşağıdaki gibi çıktı verecek bir MATLAB programı yazınız.
Sayı Log10(Sayı)
12 1.079
10 1
8 0.903
.. ..
2 0.301

CEVAP :
fprintf('SAYI LOG10(SAYI)\n')
for i=12:-2:2
a=log10(i);
fprintf('%g %g\n',i,a)
end
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

21. 1’den başlayarak birer birer artan x değişenine karşılık aşağıda verilen
fonksiyonu belirtilen formatta ekrana, fonksiyonun değeri 95 aşıncaya kadar
yazan (95’i aştığında yazmayan) bir MATLAB programı yazınız.
𝑓(𝑥) = 2𝑥 2 − 10𝑥
CEVAP :
clear all;clc
for x=1:10000
fx=2*x^2-10*x;
if fx<95
fprintf('x=%g f(x)=%g\n',x,fx)
end
end
22. Ekrana aşağıdaki gibi çıktı verecek bir MATLAB programı yazınız.
Sayı exp(Sayı)
1 2.718
3 20.085
5 148.413
.. ..
21 1.31882e+009

CEVAP:
fprintf('SAYI EXP(SAYI)\n')
for i=1:2:21
a=exp(i);
fprintf('%g %g\n',i,a)
end
23. Aşağıda verilen toplama işlemini yapan ve ekrana aşağıdaki sonucu yazan bir
MATLAB programı yazınız.
4 6 100
2
+ 2 +. . + 2
4 −2∗4 6 −2∗6 100 − 2 ∗ 100
Toplamın sonucu=…
CEVAP :
t=0;
for i=4:2:100
t=t+i/(i^2-2*i)
end
fprintf('Sonuç%g',t)

24. Dışardan girilen bir x ve y değerleri için aşağıdaki fonksiyonunu MATLAB’de


hesaplayan FONKSİYONU yazınız.
𝑥+𝑦 𝑥 ≥ 0 𝑣𝑒 𝑦 ≥ 0
2
𝑥+𝑦 , 𝑥 ≥ 0 𝑣𝑒 𝑦 < 0
𝑓(𝑥, 𝑦) = 2
𝑥 + 𝑦, 𝑥 < 0 𝑣𝑒 𝑦 ≥ 0
2 2
{𝑥 + 𝑦 𝑥 < 0 𝑣𝑒 𝑦 < 0
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

CEVAP:
function sonuc=formul(x,y)
if x>=0 && y>=0
sonuc=x+y;
elseif x>=0 && y<0
sonuc=x+y^2;
elseif x<0 && y>=0
sonuc=x^2+y;
elseif x<0 && y<0
sonuc=x^2+y^2;
end

25. x=[ 45, 23, 17, 34, 85, 33 ] dizisindeki kaç tane sayı 30 dan büyüktür?

CEVAP 1:
x = [ 45,23,17,34,85,33];
count=0;
for k=1:length(x)
if x(k)>30
count = count+1;
end
end
fprintf('The are %4.0f values greater than 30 \n',count)
CEVAP 2:
x = [ 45,23,17,34,85,33];
k=1;
count = 0;
while k<=length(x)
if x(k)>=30;
count = count +1;
end
k=k+1;
end
fprintf('There are %4.0f values greater than 30 \n',count)

26. 1/1, -1/2, 1/3, -1/4, 1/5,... -1/10 harmonic serisinin ilk 10 elemanını oluşturan matlab
kodlarını yazınız.
CEVAP 1:
for k=1:10
x(k)=(-1)^(k+1)/k
end
CEVAP 2:
k=1;
while k<=10
x(k) = (-1)^(k+1)/k;
k = k+1;
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

end
x
27. Başlangıçta ve her yıl sonunda bankaya 500 TL yatırılmaktadır. Banka her yıl %5
faiz oranıyla hesapta para biriktirmektedir. Kaç yıl sonra hesapta toplam 10.000
TL para birikeceğini hesaplayan matlab programını yazınız.

CEVAP:
clc,clear
n=1;
total=500;
while total<10000
new=total*(1+0.05)^n
total=500 + new
n=n+1;
end
disp(n)
28. Kendisine parametre olarak aldığı satır vektörü formundaki tek boyutlu bir
dizinin içerisindeki negatif tek sayıların toplamını hesaplayrak geriye döndüren
bir matlab fonksiyonu yazınız.

CEVAP:
function toplam=DizidekiNegatifTeklerinToplami(A)
toplam=0;
for i=1:length(A)
if A(i)<0 && mod(A(i),2)==1
toplam=toplam+A(i)
end
end
29. Kendisine parametre olarak aldığı satır vektörü formundaki tek boyutlu bir
dizinin içerisinde yine kendisine parametre olarak aldığı bir sayıdan en az bir
tane mevcut ise geriye 1 değerini aksitakdirde 0 değerini döndüren bir matlab
fonksiyonu yazınız.

CEVAP:
function bulundu=DizideMevcutmu(A,aranan)
bulundu=0;
for i=1:length(A)
if aranan==A(i)
bulundu=1;
break; % daha fazla aramaya gerek yok, döngüden çıkılır.
end
end
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

30. Kendisine parametre olarak aldığı satır vektörü formundaki tek boyutlu bir A
dizisi ile bir B dizisibirbirine eşite 1 değilse 0 değerini döndüren matlab
fonksiyonunu yazınız.
CEVAP:
function sonuc=DizilerEsitmi(A,B)
diziboyutuA=length(A);
diziboyutuB=length(B);
if diziboyutuA== diziboyutuA
sonuc=1;
for i=1: diziboyutuA
if A(i)~=B(i)
sonuc=0;
break;
end
end
else
sonuc=0;
end
31. 10 elemanlı bir dizinin elemanlarını kullanıcı klavyeden girsin ve istediği
sıradaki dizi elemanını ekrana yazdıracağı bir matlab programı yazınız.
dizi=[];
for i=1:10
fprintf(‘dizi elemani gir :’);
dizi(i)=input(‘’);
end
fprintf(‘hangi siradaki dizi elemanini gormek istiyorsunuz ?’);
aranan=input(‘’);
fprintf("%d",dizi(aranan));

32. Bir yol yapım şirketi 10 iş makinası ile çalışmaktadır ve iş makinalarına yaptıkları
km ye göre belli bir ücret ödemektedir. İş makinalarının yaptıkları km başına ücret
öderken belli koşullar vardır.

İş makinası eğer ;

0 -50 arası yol yaparsa km başına 5 lira

50-100 arası yol yaparsa km başına 10 lira

100 den fazla yol yaparsa km başına 20 lira

Para alacaktır. 10 iş makinası için toplam maliyeti hesaplayınız.

CEVAP:
toplam=0;
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

maliyet=0;
for i=1:10
fprintf(‘%d. İş makinası km bilgisini giriniz :’,i);
kmbilgi)=input(‘’);
if 0<kmbilgi && kmbilgi<50
maliyet = kmbilgi*5;
elseif 50<=kmbilgi && kmbilgi<100
maliyet = kmbilgi*10;
else maliyet = kmbilgi*20;
toplam=toplam+maliyet;
end
end
fprintf(‘iş makinalarına toplam borcunuz :%d dir’,toplam);
33. Klavyeden alacağınız kitabın fiyatını ve almak istediğiniz miktarı giriniz. Sipariş
miktarınız 50 den az ise %10 fazla ise %30 indirim toplam maliyete
uygulanacaktır. Tüm istenilenleri gerçekleştiren matlab programı yazınız.
CEVAP:
toplam=0;
fprintf(‘kitabın fiyatını giriniz :’);
fiyat=input(‘’);
fprintf(‘kaç tane kitap sipariş etmek istiyorsunuz ? :’);
smiktar=input(‘’);
if smiktar<50

toplam=fiyat*smiktar*0.9;
fprintf(‘toplam borcunuz : %f lira’,toplam);

else

toplam=fiyat*smiktar*0.7;
fprintf(‘toplam borcunuz : %0f lira’,toplam);
end
34. 3 ödev 1 vize 1 final olacaktır. 1. Ödev sadece vizeye %10, 2. Ve 3. Ödev ise
sadece final e %10ar etki edecektir. Ödev notları ve vize final kullanıcı tarafından
girilecektir. Ortalamasını bulan matlab programını yazınız.
 Vize+1.ödev hesaplanırken = vizenin %90ı 1. Ödevin %10 u alınacaktır.
 Final+2.ödev ve 3. ödev hesaplanırken = finalin %80i 1. Ödevin %10 u ve 2.
Ödevin %10 u alınacaktır.
CEVAP:
vizesonuc=0;
finalsonuc=0;
ortalama=0;
fprintf(‘vize notunu giriniz:’);
ALGORİTMA VE PROGRAMLAMAYA GİRİŞ DERSİ ÇALIŞMA SORULARI

vize=input(‘’);
fprintf(‘final notunu giriniz :\n’);
final=input(‘’);
fprintf(‘odevleri sirasi ile giriniz.\n’);
odev1= input(‘’);
odev2= input(‘’);
odev3= input(‘’);
vizesonuc=(vize*0.9)+(odev1*0.1);
finalsonuc=(final*0.8)+(odev2*0.1)+(odev3*0.1);
ortalama = (vizesonuc*0.4)+(finalsonuc*0.6);
fprintf(‘ogrencinin ortalamasi : %f dir’,ortalama);

35. Kendisine parametre olarak verilen satır vektörünün her bir elemnının bir
sağındaki pozisyona kaydırdıktan sonra geriye döndüren matlab fonksiyonunu
yazınız.

CEVAP:
function A=ElemanSagaKaydir(A)
diziboyutu=length(A);
dizininSonelemani=A(diziboyutu);
for i=diziboyutu:-1:2
A(i)=A(i-1);
end
A(1)= dizininSonelemani;

You might also like