Ara Sınav (Vize) 2025 20 soru

Algoritmalar ve Programlamaya Giriş 2025 Ara Sınav (Vize)

Kaynak: https://lolonolo.com/2025/10/26/algoritma-ve-programlamaya-giris-2025-vize-deneme-guz/

📖 Konu özeti (sınav öncesi tekrar)

Algoritma ve Programlamaya Giriş 2025 Vize Deneme (Güz)

Algoritma Temelleri ve Performans

Algoritma, belirli bir problemi çözmek veya bir görevi yerine getirmek için tasarlanan adım adım yönergeler bütünüdür. Her algoritmanın sonlu sayıda adımdan oluşması ve belirli bir sürede tamamlanması gerekir. Algoritmalar temel kontrol yapılarını kullanır:

“Sonlu yapı” bir kontrol yapısı türü değildir.

Algoritma performansı, algoritmanın ne kadar hızlı çalıştığı ve ne kadar bellek kullandığı ile ilgilidir. Performans genellikle O-Notasyonu (Big O Notation) ile ifade edilir. Bu notasyon, girdi boyutu (n) büyüdükçe algoritmanın çalışma süresinin veya bellek kullanımının nasıl arttığını gösterir. Daha düşük büyüme hızı, daha yüksek performans demektir. Performans sıralaması (yüksekten düşüğe): O(1) (sabit) > O(log n) (logaritmik) > O(n) (lineer) > O(n log n) > O(n2) (karesel) > O(n3) (kübik) … şeklindedir. Dolayısıyla O(1) en yüksek performansı ifade eder.

Koşullu Yapılar ve Mantıksal Operatörler

Seçimli yapılar, mantıksal koşullara dayanır. Bu koşullar birleştirilirken mantıksal operatörler kullanılır:

Örneğin, `a=5, b=8` için `a > 10 VE b < 5` koşulu yanlıştır (çünkü 5>10 yanlış). `a > 10 VEYA b < 5` koşulu da yanlıştır (çünkü hem 5>10 hem de 8<5 yanlış). String (metin) karşılaştırmaları yapılırken genellikle çift tırnak içinde değer kontrol edilir (örn: `ders_adı = “algoritma”`).

Tekrarlı Yapılar (Döngüler)

For Döngüsü: Belirli sayıda tekrar için kullanılır. Genellikle bir sayaç değişkeni, başlangıç değeri, bitiş koşulu ve artış/azalış miktarından oluşur. Örneğin, 10’dan 0’a kadar sayıları yazdırmak için başlangıç değeri 10, bitiş koşulu `>= 0` ve sayaç birer birer azaltılmalıdır. Artış miktarı negatif olabilir (azaltma). Artış miktarı kısmı bazı dillerde isteğe bağlı olabilir.

Alt Programlar (Fonksiyonlar)

Kod tekrarını önlemek ve programı modüler hale getirmek için kullanılan kod bloklarıdır. Bir ana programdan çağrılırlar. Parametre alabilir ve bir değer döndürebilirler (`return` komutu ile).

Veri ve Bilgi

Ham, işlenmemiş gerçekler Veri’dir. Verinin işlenip anlamlı hale getirilmesiyle Enformasyon oluşur. Enformasyonun yorumlanıp hedeflere ulaşmak için kullanılabilen anlayışa dönüşmesiyle Bilgi elde edilir.

Diziler (Arrays)

Aynı veri tipindeki elemanların bellekte ardışık olarak saklandığı veri yapısıdır. Elemanlara indis numarasıyla (genellikle 0’dan başlar) erişilir. Diziler string, char, sayısal gibi farklı tiplerde elemanlar tutabilir, ancak bir dizinin tüm elemanları aynı veri tipinde olmak zorundadır. Dizinin eleman sayısı programcı tarafından belirlenir. İki boyutlu diziler (matrisler) satır ve sütun indisleri ile kullanılır (örn: `matris[satir_indisi, sutun_indisi]`).

Arama ve Sıralama Algoritmaları

C Programlama Dili Notları

Algoritma ve Programlamaya Giriş 2025 Vize Deneme Sınavı

20 soru
Şıkka dokun, anında açıklamasını gör — ya da çalışma modunda tüm cevapları aç.
Soru 1
Aşağıdakilerden hangisi ile ifade edilen bir algoritma performansı diğerlerine göre daha yüksektir?
DDoğru cevap
Açıklama
Algoritma performansında O-notasyonu, algoritmanın çalışma süresinin girdi boyutuna göre nasıl arttığını gösterir. Daha düşük büyüme hızı, daha yüksek performans anlamına gelir. O(1) sabit zamanlıdır ve girdi boyutundan bağımsızdır, bu nedenle en yüksek performansı temsil eder. Sıralama (en iyiden en kötüye): O(1) > O(log n) > O(n) > O(n log n) > O(n³).
Soru 2
Aşağıdakilerden hangisi bir algoritmada olabilecek kontrol yapılarından değildir?
EDoğru cevap
Açıklama
Algoritmaların temel kontrol yapıları şunlardır: Sıralı yapı (Sequential), Seçimli/Koşullu yapı (Selection/Conditional – if/else), Tekrarlı yapı (Iteration – for/while). “Sonlu yapı” bir kontrol yapısı türü değildir; algoritmanın kendisinin sonlu sayıda adımdan oluşması bir özelliktir.
Soru 3
Basit algoritma yapısında hiçbir koşul veya döngü olmadığı durumda işlemler birbirini nasıl takip eder?
ADoğru cevap
Açıklama
Sıralı yapı olarak da bilinen basit algoritma yapısında, komutlar yazıldığı sırayla, ardışık olarak yukarıdan aşağıya doğru çalıştırılır.
Soru 4
AND mantıksal operatöründe sonucun doğru (TRUE) döndürülmesi için aşağıdaki koşullardan hangisinin sağlanması gerekir?
CDoğru cevap
Açıklama
AND (VE) mantıksal operatörü, birleşik koşulun sonucunun doğru (TRUE) olabilmesi için, birleştirdiği her iki durumun da ayrı ayrı doğru (TRUE) olmasını gerektirir.
Soru 5
Bir algoritmada değer artışının ifade edilmesi için aşağıdakilerden hangi kullanılmaz?
EDoğru cevap
Açıklama
A, B, C ve D şıkları bir değişkenin değerini bir artırmak için kullanılan farklı yöntemlerdir (atama, ön artırma, son artırma). E şıkkındaki `a+-1` ifadesi ise geçerli bir artırma operatörü veya ifadesi değildir, genellikle sözdizimi hatası verir.
Soru 6
“Test notu 65’ten düşükse, testi yapan kişi başarısız olmuş demektir.” Yukarıdaki ifadenin tersi şıklardan hangisinde doğru ifade edilmiştir?
BDoğru cevap
Açıklama
Orijinal ifade “Not < 65 ise Başarısız” şeklindedir. Verilen şıklar, orijinal ifadenin doğrudan mantıksal tersini veya eşdeğerini sormaktan ziyade, benzer bir başarısızlık koşulunu farklı değerlerle ifade etmektedir. Sorunun kurgusu ve şıklar arasındaki ilişki net olmamakla birlikte, “40’tan düşük almak” da bir başarısızlık durumu olarak yorumlanabilir ve orijinal ifadedeki mantığa benzer bir koşul sunar.
Soru 7
Aşağıdaki seçeneklerden hangisi “ders_adı” string değişkeni değerinin “algoritma” olmasını kontrol eder?
DDoğru cevap
Açıklama
Çoğu programlama dilinde ve pseudocode’da, bir string değişkeninin belirli bir değere eşit olup olmadığını kontrol etmek için `==` (karşılaştırma operatörü) veya bazı durumlarda `=` (atama operatörü yerine karşılaştırma anlamında da kullanılabilir) kullanılır. String değerler genellikle çift tırnak (`” “`) içinde belirtilir. D şıkkı bu yapıya en uygun olanıdır.
Soru 8
a=5, b= 8
EĞER a > 10 VE b < 5 ise YAZ(“a 10’dan büyük ve b 5’ten küçüktür.”)
EĞER a > 10 VEYA b < 5 ise YAZ(“Ya a 10’dan büyüktür ya da b 5’ten küçüktür.”)
DEĞİLSE EĞER YAZ(“Ne a 10’dan büyük ne de b 5’ten küçüktür.”)
Yukarıda verilen kaba kodun çıktısı aşağıdaki şıklardan hangisinde doğru verilmiştir?
CDoğru cevap
Açıklama
İlk EĞER koşulu (a > 10 VE b < 5) yanlıştır (5>10 Yanlış). İkinci EĞER koşulu (a > 10 VEYA b < 5) da yanlıştır (5>10 Yanlış, 8<5 Yanlış, Yanlış VEYA Yanlış = Yanlış). Bu nedenle DEĞİLSE EĞER (ELSE IF gibi düşünülebilir ama burada sadece ELSE anlamında kullanılmış) bloğu çalışır ve ekrana “Ne a 10’dan büyük ne de b 5’ten küçüktür.” yazar.
Soru 9
Bir for döngüsünde sayaç değişkeninin artması gerektiğini ifade etmek için hangi eleman kullanılır?
EDoğru cevap
Açıklama
Bir `for` döngüsünün tipik yapısı `for(başlangıç; koşul; artış/azalış)` şeklindedir. Sayaç değişkeninin her adımda nasıl değişeceğini (artacağını veya azalacağını) belirten kısım Artış Miktarı (increment/decrement) kısmıdır.
Soru 10
10-0 arasındaki sayıları for döngüsü kullanarak (10’dan 0’a doğru) yazdırılmak isteniliyorsa aşağıdakilerden hangisi bu yapı ile ilgili doğru bir ifade olur?
DDoğru cevap
Açıklama
10’dan 0’a doğru geri sayım yapmak için döngünün başlangıç değeri 10, koşulu sayacın 0’a eşit veya büyük olması (>=0) ve her adımda sayacın birer birer azaltılması (`–` veya `-1`) gerekir.
Soru 11
for döngüsü ile ilgili aşağıdakilerden hangisi yanlıştır?
EDoğru cevap
Açıklama
Çoğu programlama dilinde `for` döngüsünde artış miktarı kısmı isteğe bağlıdır. Belirtilmezse genellikle varsayılan olarak +1 artış yapılır veya döngü içinde manuel artış sağlanabilir. Ancak başlangıç ve bitiş koşulları genellikle gereklidir. Artış miktarı negatif de olabilir (azaltma). Akış diyagramında döngüler genellikle altıgen veya koşul (eşkenar dörtgen) ve işlem (dikdörtgen) kombinasyonlarıyla gösterilir, tek başına altıgen standart değildir.
Soru 12
Kendini çağıran fonksiyonlara ne ad verilir?
EDoğru cevap
Açıklama
Bir fonksiyonun kendi tanımı içerisinde yine kendisini çağırması işlemine özyineleme (recursion), bu tür fonksiyonlara da Özyinelemeli Fonksiyon (Recursive Function) denir.
Soru 13
Aşağıdaki kaba kodda kullanıcı tarafından girilen sayıya göre faktöriyel hesabı yapılmaktadır.
Ana programdan alt programın çağrılması için boş bırakılan yere gelmesi gereken doğru cevap, şıklardan hangisinde verilmiştir?
Alt Program
int Faktoriyel (int n)
BAŞLA
IF (n == 0) THEN
return 1
ELSE
return (n * Faktoriyel (n - 1))
END IF
BİTİR
Ana Program
BAŞLA
OKU ("Sayı giriniz:", sayı)
_______
YAZ (sonuç)
BİTİR
BDoğru cevap
Açıklama
`Faktoriyel` alt programı bir `int` (tamsayı) değer döndürmektedir (`return`). Ana programda bu alt program çağrılırken, kullanıcıdan alınan `sayı` değişkeni argüman olarak gönderilmeli ve alt programdan dönen değer, `sonuç` gibi bir değişkene atanmalıdır. Bu nedenle `int sonuç = Faktoriyel(sayı)` doğru çağrımdır.
Soru 14
Alt programların kullanımı ile ilgili aşağıdaki şıklardan hangisi yanlıştır?
CDoğru cevap
Açıklama
Değer döndürmeyen (void) alt programlar, bir hesaplama sonucu döndürmek için tasarlanmamıştır. `return` komutu bu tür fonksiyonlarda sadece fonksiyonun çalışmasını sonlandırmak için (değersiz olarak) kullanılabilir, bir değer döndürmek için kullanılamaz. Değer döndürmek için fonksiyonun tanımının (örn: `int`, `float` vb.) değer döndürecek şekilde yapılması gerekir.
Soru 15
Diziler ile ilgili olarak aşağıdakilerden hangisi yanlıştır?
DDoğru cevap
Açıklama
Geleneksel dizilerin (array) temel özelliği, tüm elemanlarının aynı veri tipinde olmasıdır (örn: hepsi tamsayı, hepsi karakter, hepsi string). Farklı veri tiplerini bir arada tutmak için genellikle yapılar (struct) veya nesneler (object) kullanılır. Bu nedenle D şıkkı yanlıştır.
Soru 16
Aşağıda verilen kaba kod ile ilgili olarak verilen şıklardan hangisi yanlıştır?
BAŞLA
FOR i = 0 TO 3
FOR j = 0 TO 4
YAZ (matris[i, j])
NEXT j
NEXT i
BİTİR
DDoğru cevap
Açıklama
Verilen kod, iki boyutlu (`i` ve `j` indisleri) bir matrisin elemanlarını yazdırmaktadır. Dış döngü `i = 0 TO 3` (yani 0, 1, 2, 3 indisleri – 4 satır), iç döngü `j = 0 TO 4` (yani 0, 1, 2, 3, 4 indisleri – 5 sütun) çalışır. Kod sadece matrisin elemanlarını yazdırır, elemanların değerinin ne olduğu hakkında bilgi vermez. Bu nedenle “Dizinin tüm elemanları 1’dir” ifadesinin doğruluğu bilinemez ve yanlıştır. Ayrıca A şıkkı (3 satır değil 4 satır) ve B şıkkı (4 sütun değil 5 sütun) da yanlıştır. Ancak D şıkkı, kodun içeriğiyle ilgili kesin olarak yanlışlanabilecek bir ifadedir.
Soru 17
Aşağıda verilen iki boyutlu sayılar isimli dizideki, 8, 9 ve 3 elemanlarına sırasıyla erişilmek isteniyor.

Buna göre aşağıdaki şıklardan hangisi bu işlemlerin yapılmasını sağlar?
BDoğru cevap
Açıklama
İki boyutlu dizilerde elemanlara `dizi_adı[satır_indisi, sütun_indisi]` (veya bazı dillerde `dizi_adı[satır_indisi][sütun_indisi]`) şeklinde erişilir. İndisler genellikle 0’dan başlar.
Bu tabloya göre:
  • 8 elemanı: i=2, j=1 indisindedir (sayılar[2,1])
  • 9 elemanı: i=2, j=2 indisindedir (sayılar[2,2])
  • 3 elemanı: i=0, j=2 indisindedir (sayılar[0,2])
Soru 18
Aşağıdaki algoritmalardan hangisinde sıralama yaparken bir pivot eleman seçilir?
DDoğru cevap
Açıklama
Hızlı Sıralama (Quick Sort) algoritması, diziyi sıralamak için bir pivot eleman seçer ve diğer elemanları bu pivottan küçükler ve büyükler olarak iki alt diziye ayırır. Bu işlem özyinelemeli olarak alt dizilere uygulanır.
Soru 19
İkili arama algoritmasının ön şartı nedir?
DDoğru cevap
Açıklama
İkili Arama (Binary Search) algoritmasının çalışabilmesi için temel ön şart, arama yapılacak dizinin elemanlarının sıralanmış (sorted) olmasıdır. Algoritma, diziyi sürekli ortadan ikiye bölerek arama yaptığı için sıralama zorunludur.
Soru 20
Hızlı sıralama algoritması ile ilgili olarak aşağıdakilerden hangisi doğrudur?
EDoğru cevap
Açıklama
Hızlı Sıralama (Quick Sort) algoritması; böl ve fethet mantığını kullanır (A doğru), sıralama için bir pivot eleman seçer (B doğru), ortalama zaman karmaşıklığı O(n log n)’dir (C doğru) ve genellikle özyinelemeli (recursive) olarak uygulanır (D doğru). Bu nedenle hepsi doğrudur.