LOLONOLO Ana Sayfa » blog » Algoritma ve Programlamaya Giriş » Algoritma ve Programlamaya Giriş 2025 Vize Deneme (Güz)
Algoritmalar ve Programlamaya GirişauzefBilgisayar ProgramcılığıYönetim Bilişim Sistemleri

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

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

 
LOLONOLO Ana Sayfa » blog » Algoritma ve Programlamaya Giriş » Algoritma ve Programlamaya Giriş 2025 Vize Deneme (Güz)

#1. Aşağıdakilerden hangisi bir algoritmada olabilecek kontrol yapılarından değildir?

Cevap : E) Sonlu yapı
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.

#2. Kendini çağıran fonksiyonlara ne ad verilir?

Cevap : E) Özyinelemeli fonksiyon
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.

#3. Alt programların kullanımı ile ilgili aşağıdaki şıklardan hangisi yanlıştır?

Cevap : C) Değer döndürmeyen alt programlarda sonucu döndürmek için return komutu kullanılırsa değer döndürülebilir.
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.

#4. 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?

Cevap : D) Sayaç birer birer azaltılmalıdır.
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.

#5. Aşağıdaki seçeneklerden hangisi “ders_adı” string değişkeni değerinin “algoritma” olmasını kontrol eder?

Cevap : D) ders_adı = “algoritma”
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.

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

BAŞLA
FOR i = 0 TO 3
FOR j = 0 TO 4
YAZ (matris[i, j])
NEXT j
NEXT i
BİTİR

#6. Yukarıda verilen kaba kod ile ilgili olarak verilen şıklardan hangisi yanlıştır?

Cevap : D) Dizinin tüm elemanları 1’dir.
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.

#7. Aşağıdaki algoritmalardan hangisinde sıralama yaparken bir pivot eleman seçilir?

Cevap : D) Hızlı sıralama
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.

#8. Basit algoritma yapısında hiçbir koşul veya döngü olmadığı durumda işlemler birbirini nasıl takip eder?

Cevap : A) Ardışık olarak
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.

#9. Hızlı sıralama algoritması ile ilgili olarak aşağıdakilerden hangisi doğrudur?

Cevap : E) Hepsi
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.

#10. for döngüsü ile ilgili aşağıdakilerden hangisi yanlıştır?

Cevap : E) Artış miktarı mutlaka belirtilmelidir.
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.

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

#11. 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?

Cevap : C) Her iki durumun doğru olması
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.

Algoritma ve programlamaya giriş soru 17

#12. 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?

Cevap : B) sayılar[2,1] sayılar[2,2] sayılar[0,2]
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.
8 elemanı: 2. satır, 1. sütun -> `sayılar[2,1]`
9 elemanı: 2. satır, 2. sütun -> `sayılar[2,2]`
3 elemanı: 0. satır, 2. sütun -> `sayılar[0,2]`
Doğru sıra B şıkkında verilmiştir.

#13. İkili arama algoritmasının ön şartı nedir?

Cevap : D) Dizinin sıralanmış olması gerekir.
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.

#14. Bir for döngüsünde sayaç değişkeninin artması gerektiğini ifade etmek için hangi eleman kullanılır?

Cevap : E) Artış Miktarı
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.

#15. “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?

Cevap : B) EĞER Deniz testten 40’dan düşük alırsa YAZ(“Deniz başarısızdır.”)
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.

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

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

#16. Yukarı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?

Cevap : B) int sonuç = Faktoriyel(sayı)
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.

#17. Bir algoritmada değer artışının ifade edilmesi için aşağıdakilerden hangi kullanılmaz?

Cevap : E) a+-1
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.

#18. 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?

Cevap : C) “Ne a 10’dan büyük ne de b 5’ten küçüktür.”
Açıklama : İlk EĞER koşulu (a > 10 VE b 10 Yanlış). İkinci EĞER koşulu (a > 10 VEYA b 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.

#19. Diziler ile ilgili olarak aşağıdakilerden hangisi yanlıştır?

Cevap : D) Bir dizinin elemanları aynı veri tipinde olmak zorunda değildir.
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.

#20. Aşağıdakilerden hangisi ile ifade edilen bir algoritma performansı diğerlerine göre daha yüksektir?

Cevap : D) O(1)
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³).

Öğrenme Yönetim Sistemi Öğrenci Dostu LOLONOLO bol bol deneme sınavı yapmayı önerir.

Öncesi
TESTi BiTiR, PUANINI GÖR

SONUÇ

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

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

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

Algoritma ve Programlamaya Giriş – Temel Kavramlar Özeti

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:

  • Sıralı Yapı: Komutların yazıldığı sırayla, **ardışık** olarak çalıştırılmasıdır. Koşul veya döngü içermeyen basit algoritmalarda işlemler bu şekilde ilerler.
  • Seçimli (Koşullu) Yapı: Belirli bir koşulun doğru (TRUE) veya yanlış (FALSE) olmasına göre farklı komut bloklarının çalıştırılmasıdır (örn: EĞER…İSE…DEĞİLSE).
  • Tekrarlı Yapı (Döngü): Bir komut bloğunun belirli bir koşul sağlandığı sürece veya belirli sayıda tekrar edilmesidir (örn: FOR, WHILE).

“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:

  • AND (VE): Sonucun doğru (TRUE) olması için birleştirilen **her iki koşulun da doğru** olması gerekir.
  • OR (VEYA): Sonucun doğru (TRUE) olması için birleştirilen koşullardan **en az birinin doğru** olması yeterlidir.
  • NOT (DEĞİL): Bir koşulun mantıksal değerini tersine çevirir (Doğru ise Yanlış, Yanlış ise Doğru yapar).

Ö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).

  • Bir fonksiyonun kendi tanımı içinde tekrar kendini çağırmasına **özyineleme (recursion)**, bu tür fonksiyonlara **özyinelemeli fonksiyon** denir (örn: faktöriyel hesabı).
  • Değer döndüren bir fonksiyon çağrıldığında, dönen değer bir değişkene atanmalıdır (örn: `sonuç = Faktoriyel(sayı)`).
  • Bir alt program içinde tanımlanan değişkenler genellikle yereldir (local) ve dışarıda geçersizdir.
  • Değer döndürmeyen (`void`) fonksiyonlar, `return` komutu ile değer döndüremez, sadece çalışmayı sonlandırabilir.

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ı

  • İkili Arama (Binary Search): Verimli bir arama algoritmasıdır ancak çalışabilmesi için dizinin önceden **sıralanmış olması gerekir**. Diziyi sürekli ikiye bölerek arama yapar.
  • Hızlı Sıralama (Quick Sort): Etkili bir sıralama algoritmasıdır. **Böl ve fethet** mantığıyla çalışır, bir **pivot eleman** seçer ve diziyi bu elemana göre ikiye ayırır. Genellikle **özyinelemeli** olarak uygulanır ve ortalama zaman karmaşıklığı **O(n log n)**’dir.

C Programlama Dili Notları

  • C’de dinamik bellek ayırmak için `malloc()` fonksiyonu kullanılır.
  • Ayrılan belleği geri vermek için `free()` fonksiyonu kullanılır.
  • Çok satırlı açıklamalar `/* … */` arasına yazılır. Tek satır açıklamalar `//` ile başlar.
@lolonolo_com

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

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

1. Aşağıdakilerden hangisi ile ifade edilen bir algoritma performansı diğerlerine göre daha yüksektir?

A) O(n³)
B) O(n log n)
C) O(log n)
D) O(1)
E) O(n)

Cevap : D) O(1)

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³).

2. Aşağıdakilerden hangisi bir algoritmada olabilecek kontrol yapılarından değildir?

A) Sıralı yapı
B) Seçimli yapı
C) Tekrarlı yapı
D) Koşullu yapı
E) Sonlu yapı

Cevap : E) Sonlu yapı

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.

3. Basit algoritma yapısında hiçbir koşul veya döngü olmadığı durumda işlemler birbirini nasıl takip eder?

A) Ardışık olarak
B) Bazı adımları atlayarak
C) Bazı adımları tekrarlayarak
D) Sondan başa doğru
E) Hiçbiri

Cevap : A) Ardışık olarak

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.

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?

A) Durumlardan sadece birinin doğru olması
B) Durumlardan en az birinin doğru olması
C) Her iki durumun doğru olması
D) Her iki durumun yanlış olması
E) Durumlardan en az birinin yanlış olması

Cevap : C) Her iki durumun doğru olması

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.

5. Bir algoritmada değer artışının ifade edilmesi için aşağıdakilerden hangi kullanılmaz?

A) c = c + 1
B) C = ++a
C) b = a++
D) a = a + 1
E) a+-1

Cevap : E) a+-1

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.

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?

A) EĞER Deniz testten 40’dan yüksek alırsa YAZ(“Deniz başarısızdır.”)
B) EĞER Deniz testten 40’dan düşük alırsa YAZ(“Deniz başarısızdır.”)
C) EĞER Deniz testten 70’den yüksek alırsa YAZ(“Deniz başarısızdır.”)
D) EĞER Deniz sınavdan 70’den düşük alırsa YAZ(“Deniz başarısızdır.”)
E) Hiçbiri

Cevap : B) EĞER Deniz testten 40’dan düşük alırsa YAZ(“Deniz başarısızdır.”)

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.

7. Aşağıdaki seçeneklerden hangisi “ders_adı” string değişkeni değerinin “algoritma” olmasını kontrol eder?

A) ders_adı <> algoritma
B) dersadı = algoritma
C) Dersimin_adı = “algoritma”
D) ders_adı = “algoritma”
E) Ders “algoritma”

Cevap : D) ders_adı = “algoritma”

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.

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?

A) “a 10’dan büyük ve b 5’ten küçüktür.
B) “Ya a 10’dan büyüktür ya da b 5’ten küçüktür.”
C) “Ne a 10’dan büyük ne de b 5’ten küçüktür.”
D) Kod çıktısı yoktur.
E) Kodda hata vardır.

Cevap : C) “Ne a 10’dan büyük ne de b 5’ten küçüktür.”

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.

9. Bir for döngüsünde sayaç değişkeninin artması gerektiğini ifade etmek için hangi eleman kullanılır?

A) Koşul
B) Başlangıç Değeri
C) Bitiş Değeri
D) Döngü Gövdesi
E) Artış Miktarı

Cevap : E) Artış Miktarı

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.

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?

A) Başlangıç değeri 0 olmalıdır.
B) Bitiş değeri 10 olmalıdır.
C) Sayaç birer birer arttırılmalıdır.
D) Sayaç birer birer azaltılmalıdır.
E) Kullanılacka sayaç, döngüde tanımlanmamalıdır.

Cevap : D) Sayaç birer birer azaltılmalıdır.

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.

11. for döngüsü ile ilgili aşağıdakilerden hangisi yanlıştır?

A) Başlangıç değeri belirlenmelidir.
B) Bitiş değeri belirlenmelidir.
C) Artış miktarı negatif olabilir.
D) Akış diyagramında altıgen eleman ile gösterilir.
E) Artış miktarı mutlaka belirtilmelidir.

Cevap : E) Artış miktarı mutlaka belirtilmelidir.

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.

12. Kendini çağıran fonksiyonlara ne ad verilir?

A) Değer döndüren fonksiyon
B) Değer döndürmeyen fonksiyon
C) Tekrarlı fonksiyon
D) Değersiz fonksiyon
E) Özyinelemeli fonksiyon

Cevap : E) Özyinelemeli fonksiyon

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.

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

A) Faktoriyel (int n)
B) int sonuç = Faktoriyel(sayı)
C) Faktoriyel (sayı)
D) sayı = Faktoriyel (sayı)
E) call Faktoriyel (int n)

Cevap : B) int sonuç = Faktoriyel(sayı)

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.

14. Alt programların kullanımı ile ilgili aşağıdaki şıklardan hangisi yanlıştır?

A) Bir değişken alt program içerisinde tanımlanırsa, alt programın dışında geçersiz olur.
B) Bir alt program içerisinde farklı bir alt program tanımlanamaz.
C) Değer döndürmeyen alt programlarda sonucu döndürmek için return komutu kullanılırsa değer döndürülebilir.
D) Alt programın ismi, farklı bir alt program veya bir değişken ismi ile aynı olmamalıdır.
E) Değer döndüren alt programlarda, dönen değerin türü ile ana programda o fonksiyonu çağırırken kullanılan parametre türü birbiri ile uyuşmalıdır.

Cevap : C) Değer döndürmeyen alt programlarda sonucu döndürmek için return komutu kullanılırsa değer döndürülebilir.

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.

15. Diziler ile ilgili olarak aşağıdakilerden hangisi yanlıştır?

A) Dizilerde string tipinde değerler tutulabilir.
B) Dizilerde char tipinde değerler tutulabilir.
C) Dizilerde sayısal değerler tutulabilir.
D) Bir dizinin elemanları aynı veri tipinde olmak zorunda değildir.
E) Bir dizinin eleman sayısı programcı tarafından belirlenir.

Cevap : D) Bir dizinin elemanları aynı veri tipinde olmak zorunda değildir.

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.

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

A) Dizide üç satır vardır.
B) Dizide dört sütun vardır.
C) Dizi iki boyutludur.
D) Dizinin tüm elemanları 1’dir.
E) Dizi elemanları ardışık değerlerden oluşmak zorunda değildir.

Cevap : D) Dizinin tüm elemanları 1’dir.

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.

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?

A) sayılar(8) sayılar (3) sayılar(9)
B) sayılar[2,1] sayılar[2,2] sayılar[0,2]
C) sayılar [2,1] sayılar [1,2] sayılar[2,0]
D) sayılar(8, 3, 9)
E) sayılar [8,2] sayılar [9,2] sayılar[3,2]

Cevap : B) sayılar[2,1] sayılar[2,2] sayılar[0,2]

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])

Bu nedenle doğru cevap B şıkkıdır.

18. Aşağıdaki algoritmalardan hangisinde sıralama yaparken bir pivot eleman seçilir?

A) Lineer sıralama
B) Yerleştirmeli sıralama
C) Birleştirmeli sıralama
D) Hızlı sıralama
E) Doğrusal sıralama

Cevap : D) Hızlı sıralama

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.

19. İkili arama algoritmasının ön şartı nedir?

A) Dizinin string değerlerden oluşması gerekir.
B) Dizide aranan elemanın olması gerekir.
C) Herhangi bir ön şartı yoktur.
D) Dizinin sıralanmış olması gerekir.
E) Dizinin sayısal değerlerden oluşması gerekir.

Cevap : D) Dizinin sıralanmış olması gerekir.

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.

20. Hızlı sıralama algoritması ile ilgili olarak aşağıdakilerden hangisi doğrudur?

A) Böl ve fethet mantığına göre çalışır.
B) Sıralama için dizide bir pivot eleman seçilir.
C) Bu algoritmada işlem yapmanın zaman karmaşıklığı O(n log n) ile ifade edilir.
D) Özyinelemeli olarak çalışan bir algoritmadır.
E) Hepsi

Cevap : E) Hepsi

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.

@lolonolo_com
Auzef Bilgisayar Programcılığı-min Açık Lise Telegram Grubu

Auzef sınav soruları, çıkmış sorular, deneme sınavları hepsi lolonolo’da ücretsiz.

 

Editor

Editör