Categories
Algorithms and Programming II

Grades

Categories
Algorithms and Programming II

Feedback

Ders hakkında geri bildirimleriniz önemlidir.

Kayıtlı öğrencilerin her hafta geri bildirimleri için LMS sistemi üzerinden “Geri Bildirim Formu” açılacaktır. 

Her doldurulan geribildirim için 0.5 puan sene sonu notuna eklenecektir.

Anonim olarak geri bildirimde bulunmak için aşağıdaki linki kullanabilirsiniz.

https://docs.google.com/forms/d/e/1FAIpQLSd23R8gvWSKOiA5h3YC6Cdgq9iZ-En9I-5Y1wR9AwKhAXGaTA/viewform?vc=0&c=0&w=1

Categories
Algorithms and Programming II

Projects

2019-2020 Yılı Verilen Projeler ve Öğrencilerin Hazırladığı Proje Teslim Dosyaları:

Yapay Sinir Ağları ile Covid-19 Sağkalım Öngörüsü
Covid-19 salgını nedeniyle enfekte olup iyileşen ve hayatını kaybeden kişilerin çeşitli özellikleri kullanılarak, hastalıklı kişilerin hastalığı atlatıp atlayamayacağının (sağkalım) öngörüsünü yapan bir sistem geliştirilecektir. Bu analizin yapılması için Yapay Sinir Ağları (Neural Networks) algoritması gerçeklenecektir. Geliştirilen sistemin başarımı ve hastalık özellikleri kombinasyonları sisteme beslenerek özelliklere göre sağkalım analizleri yapılacaktır.

Detaylı proje spesifikasyonları için;
http://levent.tc/files/courses/algorithms_and_programming_ii/projects/project1/BLM102_proje1_ysa_covid19.pdf

Görüntü İşleme Yöntemleri ile Üretim Hattı Analizi
Fabrikalarda üretim hatlarından çıkan ürünlerin analizi yüksek çözünürlüklü, yüksek FPS (Frame per Second) özellikli kameralar ile yapılmaktadır. Bir üretim hattından çıkan üç farklı tür ürünün, video kayıtı boyunca kaç’ar adet üretildiğinin tespit edileceği bir sistem geliştirilecektir. OpenCV (Open Computer Vision) kütüphanesi kullanılacaktır.

Detaylı proje spesifikasyonları için;
http://levent.tc/files/courses/algorithms_and_programming_ii/projects/project3/BLM102_proje3_gorunti_isleme_uretim_hatti.pdf

Evrim Arda Kalafat, Arda Alhan
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_uretim_hatti_rapor_arda_arda.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_uretim_hatti_sunum_arda_arda.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_uretim_hatti_kaynakkod_arda_arda.rar

Github: https://github.com/rhgod/Goruntu_isleme_projesi

Youtube: https://www.youtube.com/watch?v=82WAORLat_w

Ömer Sait Yorulmaz, Ahmet Hazar Haspolat, Mustafa Berk Taşkın, Alp Yılmaz
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_uretim_hatti_rapor_omer_ahmet_mustafa_alp.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_uretim_hatti_sunum_omer_ahmet_mustafa_alp.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_uretim_hatti_kaynakkod_omer_ahmet_mustafa_alp.rar

Github: https://github.com/fbuni/analysis-of-production-line

Youtube: https://www.youtube.com/watch?v=SSqTy6ABNVA

Telefon Kayit Sistemi

Bir telefon rehberinde bulunması gereken kayıt ekleme, kayıtları gösterme, kayıtları modifiye etme, kayıt arama ve silme kabiliyetlerine sahip olan bir sistem geliştirilecektir. Geliştirilen sistem, kullanıcıya komut satırı arayüzü sunarak rehberin kullanımını sağlayacaktır.

Detaylı proje spesifikasyonları için;
http://levent.tc/files/courses/algorithms_and_programming_ii/projects/project3/BLM102_proje2_telefon_kayit_sistemi.pdf

Ahmet Batuhan Yılmaz, Mert Meriç Karadeniz, Mehmet Rauf Füzun, Hayat Zehra Demir
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_rapor_ahmet_mert_rauf_hayat.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_sunum_ahmet_mert_rauf_hayat.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_kaynakkod_ahmet_mert_rauf_hayat.rar

Github: https://github.com/lashraelrx/phone-contact

Youtube: https://www.youtube.com/watch?v=Hi2wS61ALXs

Taha Yasin Öztürk, Alp Eren Gürle
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_rapor_alp_taha.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_sunum_alp_taha.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_kaynakkod_alp_taha.rar

Github: https://github.com/alpgurlee/Telefon-Kayit-Sistemi

Youtube: https://www.youtube.com/watch?v=S9s6NwReolg

Erdem Şentürk, Mehmet Çolak, Cüneyt Balcı, Ogün Berat Gürses
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_rapor_erdem_mehmet_cuneyt_ogun.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_sunum_erdem_mehmet_cuneyt_ogun.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_kaynakkod_erdem_mehmet_cuneyt_ogun.rar

Github: https://github.com/cuneytbalci/TelefonKayitSistemi

Youtube: https://www.youtube.com/watch?v=ReouQs6Xues

Hasan Demir, İlhan Ersoy, Berk Tunç
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_rapor_hasan_ilhan_berk.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_sunum_hasan_ilhan_berk.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_kaynakkod_hasan_ilhan_berk.rar

Github: https://github.com/hsndmr15/Telefon-Rehberi-CPP

Youtube: https://www.youtube.com/watch?v=3-zoX0flIlw

İrem Kalkanlı, Ayşen İpek Çakır, Deniz Uzun, Özlem Çalı
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_rapor_irem_aysen_deniz_ozlem.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_sunum_irem_aysen_deniz_ozlem.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_kaynakkod_irem_aysen_deniz_ozlem.rar

Github: https://github.com/iremkalkanli/BLM-102-Projesi-Telefon-Kayit-Sistemi

Youtube: https://www.youtube.com/watch?v=5ZdfOf9IghM

Serhat Erdoğan, Hüseyin Berk Işıldak
Rapor: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_serhat_huseyin.pdf

Sunum: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_sunum_serhat_huseyin.pdf

Kaynak Kodlar: http://levent.tc/files/courses/algorithms_and_programming_ii/projects/2019-2020-tamamlananlar/BLM102_telefon_rehber_kaynakkod_serhat_huseyin.rar

Github: https://github.com/serhaterdogan77/BLM102_Proje

Youtube: https://www.youtube.com/watch?v=nmkMN9w3jQw

Categories
Algorithms and Programming II

Homeworks

ÖdevKonuTarihSon Teslim TarihiTeslim YöntemiİndirmeÇözüm
1Vektörler17.2.202024.2.2020, Ders Saatleri İçerisindeYazılı Olarak Ders Sınıfında Teslim
2Sınıflar I (Classes)24.2.20202.3.2020, Ders Saatleri İçerisindeYazılı Olarak Ders Sınıfında Teslim 
3Sınıflar II (Classes)2.3.20209.3.2020, Ders Saatleri İçerisindeYazılı Olarak Ders Sınıfında Teslim 
4Kalıtım (Inheritance)9.3.202016.3.2020, Ders Saatleri İçerisindeYazılı Olarak Ders Sınıfında Teslim 
5Çok Biçimlilik13.3.202020.3.2020, Ders Saatleri İçerisindeYazılı Olarak Ders Sınıfında Teslim  
6Dosya Okuma/Yazma ve String İşleme20.3.202027.3.2020, Ders Saatleri İçerisindeYazılı Olarak Ders Sınıfında Teslim  
Categories
Algorithms and Programming II

Lecture Notes

HaftaKonuİndirme
1Giriş
2Sınıflar ve Objelere Giriş
3Vektörler
4Sınıflar I (Classes)
5Sınıflar II (Classes)
6Operatör Aşırı Yükleme
7Kalıtım (Inheritance)
8Vize
9Çok Biçimlilik (Polymorphism)
10Şablonlar (Templates)
11Stream IO ve İstisna İdaresi (Exception Handling)
12Resmi Tatil
13Dosya Okuma/Yazma ve String İşleme
14STL (Standard Template Library)
15Final ve Proje Sunumları
Categories
Algorithms and Programming II

Syllabus

HaftaKonuTarih
1Giriş6.2.2020
2Sınıflar ve Objelere Giriş13.2.2020
3Vektörler20.2.2020
4Sınıflar I (Classes)27.2.2020
5Sınıflar II (Classes)5.3.2020
6Operatör Aşırı Yükleme12.3.2020
7Kalıtım (Inheritance)19.3.2020
8Vize26.3.2020
9Çok Biçimlilik (Polymorphism)2.4.2020
10Şablonlar (Templates)9.4.2020
11Stream IO ve İstisna İdaresi (Exception Handling)16.4.2020
12Resmi Tatil23.4.2020
13Dosya Okuma/Yazma ve String İşleme30.4.2020
14STL (Standard Template Library)7.5.2020
15Final ve Proje SunumlarıSınav Haftası
   

Categories
Algorithms and Programming II

Detailed Course Description

Ders Açıklaması

Bu dersin amacı, nesneye yönelimli programlama ilkelerini ve C ++ ‘ı kullanan teknikleri kapsar. Konular arasında işaretçiler, sınıflar, opreratör aşırı yükleme, veri soyutlama, bilgi gizleme, enkapsülasyon, kalıtım, polimorfizm, dosya işleme, şablonlar, istisnalar, tasarım kalıpları ve düşük seviye dil özellikleri bulunur.

Ders Saatleri (Teorik + Lab)

Perşembe 9.00-13.00

Öğretim Elemanları ve Ofis Saatleri

Dr. Öğr. Üyesi Vecdi Emre Levent, Ofis 311 – Perşembe 15.00-17.00

Arş. Gör. Uğur Özbalkan, Ofis 311 –  Salı 16.00-17.00, Cuma 16.00-17.00

Ön Gereksinimler

Yok

Yardımcı Kaynaklar

Dersin referans kaynakları aşağıda listelenmektedir.

  • Thinking in C++: Introduction to Standard C++, Bruce Eckel, Pearson
  • C++ How to Program, Paul Deitel, Pearson
  • C++ Primer, Stanley Lippman, Addison-Wesley Professional
  • Effective Modern C++, Scott Meyers, Shroff Publishers & Distributors

Yazılımlar

C++ dili ile geliştirilecek olan uygulamalar, Visual Studio Community kullanılarak derlenecektir.

Dersler

Dersin haftalık 2 saat teorik, 2 saat laboratuvar bölümü bulunmaktadır. Öğretim üyesi tarafından verilen ders materyallerinin ders öncesi incelenip, ders sonrasında ise tekrar edilmesi beklenmektedir. 

Öğrenim Çıktıları

  • Okunabilir kodlar yazmak için standartları ve ilkeler
  • Bir programda hata tespiti ve hata ayıklama becerileri
  • Program modülü olarak hizmet veren bir sınıf tasarımı
  • Nesneye yönelik tasarım kavramlarını (kalıtım, polimorfizm ve bilgi gizleme) anlamak
  • C++ dili ile yazılmış uygulama ve sınıf kütüphanesi içeren projeler geliştirebilmek

Quizler

Dönem içerisinde iki adet quiz yapılacaktır. 30 dk süre verilecektir. Quiz tarihi bir hafta önceden duyurulacaktır. 

Notlandırma

Derslere %80 oranında devam zorunludur.

Dönem notu; vize, lablar, ödevler, proje ve final sınavı ile belirlenecektir. Değerlendirme yüzdeleri aşağıdaki tabloda verilmiştir.

FaaliyetlerOranlar
Vize%20
Ödev/Quiz%10
Lab%15
Proje%30
Final%25
Bonus5 Puan’a kadar

Ödev ve quizlerin teslim saati üzerinden her geçen saat için 5 puan kesilecektir.

Dönem sonu notunun karşılık geldiği ağırlık ve harf notu aşağıdaki tabloda verilmiştir.

Dönem NotuAğırlıkHarf Notu
90-1004.00AA
85-893.50BA
80-843.00BB
75-792.50CB
65-742.00CC
50-641.50DC
45-491.00DD
0 -440FF

Beklenen Efor

Öğrencinin dönem içinde göstermesi beklenen efor tablosu aşağıda verilmiştir.

İçerikSaatKaç DefaAra Toplam
Derse Hazırlık21428
Ders Tekrarı21428
Ödev4624
Proje48148
Sınıf Dersi41456
Ara Sınav ve Final326


Öğrenciler dersten başarılı olmak için dönem boyunca ortalama 190 saat harcamaları beklenmektedir.

Kodlama Ödevleri

Kodlama ödevlerinin notlandırılması, kodun doğruluğu, kalite ve algoritmik gerçeklemedeki detayları incelenerek yapılacaktır.

Doğruluk

Verilecek her bir ödev için test girişi ve beklenen çıkışlar paylaşılacaktır. Ancak ödev kontrolü yapılırken sizinle paylaşılmamış başka test durumları da denenecektir. Çalışma zamanı, beklenenden çok uzun süren kodlar yanlış olarak değerlendirilebilir.

Teori

Kod, istenen algoritmanın tasarımı olmalıdır. En optimum çözüm beklenmemektedir. Ancak bellek ve çalışma zamanı beklenenden çok fazla olmamalıdır.

Yazılı Ödevler

Ödev kendi el yazınız ile yazılmalıdır. Ödev cevap kağıtının üzerinde, dersin adı, öğrenci adı ve soyadı, öğrenci numarası ve tarih bulunmalıdır. 

Akademik Dürüstlük

Ödevin amacı, ders hakkında derinlemesine araştırma yapmayı öğrenmek ve pratik bilgiler kazanmayı sağlamaktır. Verilen ödevler hakkında, diğer öğrenciler ile birlikte çalışma teşvik edilmektedir. Çalışma grubu oluşturan öğrenciler, kendi başına çalışan öğrencilere göre sınavlarda daha başarılı olmaktadırlar. 

Ancak bir ödevi çözmek için başkaları ile birlikte çalışsanız bile, her bir sorunun çözümünü yardım almadan kendiniz yapmalısınız. Çözümünüzü bir araştırma yolu ile elde ederseniz (örn. bir internet araması), çözümü kendi cümle ve/veya kodunuz ile ifade etmelisiniz. Çözümü sözlü olarak sorulduğunda, öğrencinin açıklayabilmesi beklenmektedir. 

Verilen ödev bir kod ise, kendinizin yazması gerekmektedir. Hata ayıklamada başkalarından yardım alabilirsiniz. Kodda intihal tespiti için manuel ve otomatik mekanizmalar kullanılacaktır. İntihal, sınav içi kopya ve benzeri davranışlar disiplin yönetmeliğine göre cezalandırılır.

Categories
Courses

Algorithms and Programming II

Important Note: Some links may be broken, if you send me an e-mail I can send you the file.

Course Description: Bu dersin amacı, nesneye yönelimli programlama ilkelerini ve C ++ ‘ı kullanan teknikleri kapsar. Konular arasında işaretçiler, sınıflar, opreratör aşırı yükleme, veri soyutlama, bilgi gizleme, enkapsülasyon, kalıtım, polimorfizm, dosya işleme, şablonlar, istisnalar, tasarım kalıpları ve düşük seviye dil özellikleri bulunur.

Categories
Algorithms and Programming I

Final Sample Questions

Test ve Hata Ayıklama

  1. Aşağıdaki programların her biri 1’den 10’a kadar olan sayıların toplamını ekrana bastırmaya çalışıyor. Hata’ların nerede olduğunu ve nasıl düzeltileceğini açıklayınız.
  2. Aşağıdaki kod parçacıklarında derlenme hatasına neden olacak çeşitli hatalar bulunmaktadır. Sadece derlenme hatalarının nereden kaynaklandığı ve nasıl çözüleceğini yazınız. Tüm değişkenlerin tanımlanmış olduğunu varsayınız.
  3. Aşağıdaki uygulamada klavyeden alınan girişlerdeki bazı karakterleri filtreleyen bir uygulama verilmiştir. Bu filtrelemede yapılması istenen şey sadece alfabe karakterleri, rakamlar ve boşluk karakterleri geçsin, diğer karakterler filtrelenmelidir. Verilen uygulama çalışmamaktadır. Sorun(lar)’ı tespit ediniz. Örnek giriş “Saat 6:00 da bulusalim” için çıkış “Saat 600 da bululsalim”
    olmalıdır.

İşaretçiler

  1. Aşağıdaki kod parçacığının çıktısı nedir?
    #include 
    int main(){
        int i = 10;
        printf("%u",&i); 
        return 0;
    }
  2. Aşağıdaki kod parçacığının çıktısı nedir?
    #include 
    int main(){
        int i = 10;
        printf("%d",*(&i)); 
        return 0;
    }
  3. Tanımlanmış olan bir char işaretçisine malloc komutu ile 100 byte’lık bir alan tahsis ediniz. Bu 100 byte’lık alanın içerisine 0-3 arasında rasgele sayılar doldurunuz. Kullanıcıdan yeni bir giriş alınız (0-3) arasında. Alınan girişin bu alanda kaç adet olduğunu ekrana gösteriniz. Not: Dizilerin kullanımı yasaktır.
  4. Bir fonksiyona 4 int işaretçisi argüman olarak verilmektedir. Main’den kullanıcıdan alınan 3 sayı ve bir tanımlanmış tamsayıların adresleri bu fonksiyona verilmektedir. Fonksiyon tamsayı işaretçilerinin değerlerine bakarak ortanca sayıyı 4. tamsayı işaretçi argümanının içerisine yazmalıdır. Main’de içerisine yazılmış olan değişkenin değeri ekrana gösterilmelidir.

Diziler

  1. 10 elemanlı bir tamsayı dizisi oluşturunuz. Kullanıcıdan alınan girişler ile bu diziyi doldurunuz. Sonrasında kullanıcıdan bir sayı girişi daha alınız. Bu alınan son giriş sayısı dizi’nin elemanları içinde varsa ekrana “Bulundu” yoksa “Bulunamadı” yazdırılan bir uygulama geliştiriniz.
  2. 20 elemanlı bir tam sayı dizisi oluşturunuz. Dizinin elemanlarını rasgele doldurunuz. Diziyi bir fonksiyona arguman olarak gönderiniz. Fonksiyonda dizinin içerisindeki kaç adet pozitif, negatif, tek, çift ve sıfır olduğunu ekrana bastırınız.
  3. 20 elemanlı bir tam sayı dizisi oluşturunuz. Dizinin elemanlarını rasgele doldurunuz. Diziyi bir fonksiyona arguman olarak gönderiniz. Fonksiyon argüman olarak ayrıca 5 işaretçi daha almaktadır. Bunlar pozitif, negatif, tek, cift ve sifir tamsayı işaretçileridir. Fonksiyon kaç adet pozitif, negatif, tek, çift ve sıfır olduğunu bu işaretçiler ile geri döndürerek, fonksiyonun çağrıldığı main’de ekrana bastırılmalıdır.
  4. Dizideki tüm elemanları toplayıp sonucunu tamsayı olarak geri döndüren bir fonksiyon yazınız. Diziyi main’de 5 elemanlı tanımlayıp, içerisindeki değerleri 10, 20, 30, 5, 3 olarak giriniz. Dönen sonucu ekrana gösteriniz.
  5. 20 elemanlı bir dizinin elemanlarını rasgele doldurunuz. Bu dizinin en büyük, en küçük ve ortalama değerini ekrana bastıran bir uygulama geliştiriniz.
  6. 10 elemanlı bir dizi tanımlayıp içeriğini rasgele doldurunuz. Bu dizide aynı elemandan tekrar eden bir eleman veya elemanlar varsa ekrana yazdıran bir uygulama geliştiriniz.Örneğin; 3,4,5,6,7,7,8,8,1,1 dizi içeriklerine göre ekrana 7, 8 ve1 yazılmalıdır.
  7. 25 elemanlı bir dizinin bütün elemanlarını kaydıran bir uygulama geliştiriniz. Dizinin içeriğini rasgele oluşturunuz.Örnek dizi içeriği, 1, 2, 3 …. 25
    Program çalıştıktan sonraki dizi içeriği 25, 1, 2, 3 … 24
  8. İki boyutlu bir dizi oluşturunuz. Dizinin boyutları 3×3 olmalıdır.Örnek dizi içeriği1, 2, 3
    4, 5, 6
    7, 8, 9

    Bu dizi aslında bir matristir. Bu matrisin simetrik olup olmadığını bulan bir uygulama geliştiriniz. Ekrana simetrik veya simetrik değil uyarıları basmalıdır.

    Not: Transpozu kendisine eşit olan matrislere simetrik matris denir. Simetrik matris örnekleri

  9. Kullanıcıdan alınan sayılar ile doldurulan 3×3 boyutlu 2 adet matrisi toplayan ve çarpıp sonuçlarını ekrana gösteren bir uygulama geliştiriniz.
  10. 9 elemanlı bir dizi tanımlayıp, içeriğini rasgele oluşturunuz. Dizinin ortanca elemanını ekrana yazdırınız. Bu işlem için öncelikle dizinin elemanlarını değerlerine göre sıralamalısınız. Bunun için bir sıralama algoritması kullanılmalıdır. “Selection Sort” algoritmasını kullanarak işlemi gerçekleştiriniz (Selection sort algoritmasını araştırınız).

Özyinelemeli Fonksiyonlar: 

  1. Aşağıdaki özyinelemeli fonksiyon ile ifade edilmiş kod parçacığının, özyinelemesiz olan karşılığını yazınız.

    Fibonacci serilerinin N. elemanını bulan özyinelemeli olarak yazınız.
  2. Aşağıdaki özyinelemeli fonksiyon ile ifade edilmiş kod parçacığının, özyinelemesiz olan karşılığını yazınız.

  3. Aşağıdaki özyinelemeli fonksiyona göre;
    arg değerinin sonsuz döngüye sokabileceği bir değer var mıdır? Varsa nedir?

    func(10) değeri ne döndürmektedir?

Karakterler, Girdi/Çıktı Formatlama, Dosya Okuma ve Yazma

  1. Aşağıda yanında satır sayısı verilmiş C kodundaki;
    /*  1 */ #include 
    /*  2 */ int main() {
    /*  3 */    FILE *textfile;
    /*  4 */    int score;
    /*  5 */    int s[10];
    /*  6 */    int n = 0;
    /*  7 */    int i;
    /*  8 */    textfile = fopen("source.txt", "r");
    /*  9 */    if (textfile == NULL) {
    /* 10 */       printf("Can't open scores.txt");
    /* 11 */       exit(1);
    /* 12 */    }
    /* 13 */    for (;;) {
    /* 14 */       fscanf(textfile, "%i", &score);
    /* 15 */       if (score == -1) break;
    /* 16 */       s[n] = score;
    /* 17 */       n++;
    /* 18 */    }
    /* 19 */    close(textfile);
    /* 20 */    
    /* 21 */    s[n] = 99;
    /* 22 */    n++;
    /* 23 */    
    /* 24 */    textfile = fopen("source.txt", "w");
    /* 25 */    for (i = 0; i < n; i++) {
    /* 26 */       fprintf(textfile, "%i ", s[i]);
    /* 27 */    }
    /* 28 */    fprintf(textfile, "-1");
    /* 29 */ }
    
    8-12. satırlar arasında ne yapılmaktadır?
    13-19. satırlar arasında ne yapılmaktadır?
    21-22. satırlar arasında ne yapılmaktadır?
    24-28. satırlar arasında ne yapılmaktadır?
    source.text dosyasının içeriği
    90 87 56 78 -1
    
    ise, program çalıştıktan sonra ne olacaktır?
    Program değişmiş olan source.text ile tekrar çalıştırıldığında source.text dosyasının içeriği ne olacaktır?
  2. Bir dosyadaki içeriğin tamamını tersten diğer bir dosyaya yazdıran uygulamayı geliştiriniz.Örn giris dosyası içeriği abcdef
    Beklenen çıkış dosyası fedcba
  3. Bir kaç cümle içeren bir metin dosyası hazırlayınız. Tüm harler küçük olmalıdır. Hazırlanmış olan metin dosyasını alıp, her kelimenin ilk harfini büyük harf ile değiştirerek farklı bir dosyaya yazan bir uygulama geliştiriniz. (İpucu, kelimenin başı olup olmadığına, okunan bir önceki karakterin boşluk olup olmamasına göre karar verebilirsiniz)

C Yapıları

  1. insan isminde bir struct tanımlayıp, struct’ın elemanları olarak boy ve kilo floating point elemanları tanımlayın. Kullanıcıdan giriş olarak iki floating point sayı alıp bu elemanların üzerine yazınız. Sonrasında bu struct’ın elemanları ile BMI hesaplamasını ekrana gösteriniz.BMI  = kg / (boy * boy), Not: Boy mt cinsinden olmalıdır.
  2. Öğrencilerin fizik, kimya ve biyoloji derslerinin notlarını içeren ogrenci isminde bir struct tanımlayınız. Bu struct’tan 25 boyutunda bir dizi tanımlayıp, bu dizinin içeriğini rasgele doldurunuz. 25 öğrencinin ortalama fizik, kimya ve biyoloji notlarını ekrana gösteriniz.
  3. Tarih isimli bir stuct tanımlayıp elemanlarını tamsayı olarak gun, ay ve yil olarak tanımlayınız. İki struct tanımlayıp ilkine 3, 5,.2000 ikincisine ise 6, 11, 2020 tanımlayınız. Bir yılı 365 gün ve bir ayı 30 gün olarak kabul ederek, verilen iki struct arasındaki kaç gün fark olduğunu hesaplayıp ekrana bastırınız.
  4. Tarih isimli bir struct oluşturun. Elemanları tamsayı olarak gun, ay ve yil olsun. Main’de tarih struct’ı olarak tanımlanmış elemanın gun, ay ve yıl değerlerine 12, 10, 2000 yazınız. Bir tarih struct’ı ve tamsayı girişi alan bir fonksiyon yazınız. Bu fonksiyon aldığı tamsayı gün’ü ifade etmektedir. Aldığı struct’ın içerisindeki tarihin üzerine, aldığı gün sayısını ekleyip, yeni tarihi ekrana bastıran bir uygulama geliştiriniz. Ay 30 gün, yıl 365 gün olduğunu kabul ediniz.

Önişlemler ve Diğer Konular

  1. Önişlemci nedir?
  2. Makro ve fonksiyon arasındaki farklar nedir?
  3. Bir dikdörtgenin en ve boyunu alarak alanını hesaplayan bir makro yazınız
  4. İki sayının ortalamasını döndüren bir makro yazınız
Categories
Algorithms and Programming I

Midterm Sample Questions

Akış Diyagramları

  1. 1’den 10’a kadar olan sayıların karesini hesaplayan programın akış diyagramını çiziniz?


    Flowchart uygulaması çözüm dosyasını indirmek için tıklayınız (Sağ tıklayıp, bağlantıyı farklı kaydet’e tıklayın).
  2. 3’ten 9’a kadar olan sayıların toplamını ekrana yazdıran programın akış diyagramını çiziniz?

    Flowchart uygulaması çözüm dosyasını indirmek için tıklayınız (Sağ tıklayıp, bağlantıyı farklı kaydet’e tıklayın).
  3. 1’den 100’e kadar olan sayılardan asal sayı olanları ekrana yazdıran programın akış diyagramını çiziniz?

    Flowchart uygulaması çözüm dosyasını indirmek için tıklayınız (Sağ tıklayıp, bağlantıyı farklı kaydet’e tıklayın).
  4. 0’dan 100’e kadar olan sayıları küçükten büyüğe doğru sıralayan programın akış diyagramını çiziniz?

    Flowchart uygulaması çözüm dosyasını indirmek için tıklayınız (Sağ tıklayıp, bağlantıyı farklı kaydet’e tıklayın).
  5. 0’dan 100’e kadar olan sayıları büyükten küçüğe doğru sıralayan programın akış diyagramını çiziniz?

    Flowchart uygulaması çözüm dosyasını indirmek için tıklayınız (Sağ tıklayıp, bağlantıyı farklı kaydet’e tıklayın).
  6. Aşağıda örneği verilen programın akış diyagramını çiziniz?
    1 * 6 = 6

    2 * 6 = 12

    12 * 6 = 72


    Flowchart uygulaması çözüm dosyasını indirmek için tıklayınız (Sağ tıklayıp, bağlantıyı farklı kaydet’e tıklayın).

  7. Girilen 3 sayının ortancasını bulan programın akış diyagramını çiziniz.
  8. Sıcaklık girişi alan, sıcaklık değeri 32’den büyük ise “sıcak” yazan, değilse 18’den büyükse “normal” yazan, değilse “soğuk” yazan programın akış diyagramını çiziniz.
  9. 1 vize 1 final yapılan bir okulda, final’e girmek için vizeden en az 50 almış olmak gerekmektedir. Vize notu 50 den aşağıda ise “kaldı” yazan, değilse vize notunun %40’ı ve final notunun %60’ı toplandığında 50 den yukarı ise “geçti”, değilse “kaldı” yazan programın akış diyagramını çiziniz.

Değişkenler ve Operatörler

  1. Kullanıcıdan bir tam sayı alınız. Alınan tam sayı Fahrenheit cinsinden sıcaklığı temsil etmektedir. Fahrenheit’ten Celsius’a dönüşüp yaparak, sıcaklığı ekrana Celsius cinsinden yazan bir uygulama geliştiriniz. C = 5.0 / 9.0 * (F – 32) formülü ile bulunmaktadır
  2. İki kenarının uzunluğu cm cinsinden tam sayı olarak alınan bir diktörtgenin alanını bulan programı yazınız.
  3. Bir üçgenin iki iç açısını kullanıcıdan tam sayı olarak alıp, diğer açısını ekrana çıktı veren uygulamayı yazınız. İç açılar toplamı 180 derecedir.
  4. Günümüzde bir litre benzinin fiyatı 6TL’dir. Kullanıcıdan gidilecek km bilgisini ve arabanın 100 km’de kaç lt benzin harcadığını floating sayı olarak alıp. Gidilecek KM göre kaç liralık benzin harcayacağını ekrana gösteren bir uygulama yazınız.

Seçim ve Kontrol Yapıları

  1. Kulanıcıdan alınan 3 sayının en büyüğünü bulan programı yazınız.
  2. Kullanıcıdan bir tam sayı alınız. Alınan tamsayının faktöriyelini ekrana bastıran uygulamayı yazınız.
  3. Sıcaklık girişi alan, sıcaklık değeri 32’den büyük ise “sıcak” yazan, değilse 18’den büyükse “normal” yazan, değilse “soğuk” yazan programını geliştiriniz.
  4. -1 girilene kadar, sürekli sayı alıp bir değişkenin üzerinde toplayan bir uygulama geliştiriniz. Uygulama -1 sayısını aldığı zaman önceden girilmiş olan sayıların toplamını ekrana yazmalıdır.
  5. 9999 girilene kadar, daha önceki girilen sayıların ortalamasını ekrana bastıran bir uygulama geliştirin. Uygulama 9999 sayısını aldığı zaman sayıların ortalamasını ekrana yazdırmalıdır.
  6. Kullanıcıdan iki tamsayı alınız. Bu iki tam sayı arasındaki çift sayıların toplamını ekrana yazdıran bir uygulama geliştiriniz. İlk sayı küçük, ikinci sayının büyük girileceğini varsayabilirsiniz.
  7. Aşağıdaki örüntüyü oluşturacak programı döngü kurarak yazınız. 1 * ile başlayıp, 10 yıldız ile bitmektedir.

    *
    **
    ***
    ****
    *****
    ******
    *******
    ********
    *********
    **********

  8. Aşağıdaki örüntüyü oluşturacak programı döngü(ler) kurarak yazınız.

    *
    ***
    *****
    *******
    *********
    *******
    *****
    ***
    *

  9. Kullanıcıdan -1 girişi gelen kadar 1 ile 5 arasında sayılar alın. Bu sayılardan kaç adet geldiğini sürekli değişkenlerde toplayın. Örn. 1 sayısından 25 defa girildiğini, 2 sayısından 30 defa girildiğini … tutan değişkenleriniz olsun. -1 girildiğinde, ekrana
    1: *******************************
    2: ***************
    3: **************************************
    4: **************
    5: **
    gibi, kaç adet geldi ise, ekrana o kadar * bastıran uygulamayı geliştiriniz.
  10. Bir üçgenin kenar uzunluklarının koşulu aşağıdaki şekilde verilmektedir.


    Kullanıcıdan üç tamsayı alıp, bu kenar ölçüleri ile geçerli bir üçgen olup olmayacağını ekrana yazan bir uygulama geliştiriniz.

Fonksiyonlar

  1. Bir otoparkta giriş ücreti 10TL’dir. Her bir saat için ek 2 TL ücret alınmakta ve 24 saat içerisinde en fazla 30 TL’lik ücret istenmektedir. Yani ücret 30TL’e geldiğinde 24 saat içinde 30TL’i aşmamaktadır. Buna göre ucretHesapla isminde bir fonksiyona, main’den alınan kaldığı saat değerini argüman olarak gönderip otopark ücreti hesapladıktan sonra mainden ekrana yazdıran bir uygulama geliştiriniz.

    Örnek çıktı

    Kaldığı saat 3, 16 TL
    Kaldığı saat 4, 18 TL
    Kaldığı saat 20, 30 TL
    Kaldığı saat 25, 32 TL

  2. Dik bir üçkenin, dik kenarları kullanıcıdan tam sayı olarak alınıyor. hipotenusHesapla fonksiyonu, iki tam sayı argüman almaktadır. Aldığı argümanlar ile hipotenüs’ü geri döndürmektedir. Mainden hipotenusHesapla fonksiyonuna argümanları gönderip, döndürdüğü sonucu ekrana bastıran bir uygulama yazınız. İpucu: Karakök için math.h kütüphanesinin altındaki sqrt fonksiyonunu kullanabilirsiniz.

  3. Bir sayının tersini alan tersiniAl isminde bir fonksiyon yazınız. Örneğin 7654 sayısı fonksiyona argüman olarak verildiğinde, fonksiyon geriye 4567 sayısını geri döndürmelidir. Fonksiyona giriş için main’den kullanıcı girişi alınız, fonksiyonun çıktısını ekrana bastırınız.
  4. Öğrencilerin notlarının değerlendirileceği bir ogrenciDegerlendir isminde bir fonksiyon yazınız. Bu fonksiyon argüman olarak 4 tam sayı girişi alsın. Bu tam sayı girişleri öğrencilerin notlarını ifade etmektedir. Notların ortalamasını alıp,

    90-100 arasında ise 5,
    80-89 arasında ise 4,
    70-79 arasında ise 3,
    60-69 arasında ise 2,
    50-59 arasında ise 1,
    hiçbiri değilse 0

    döndüren bir fonksiyon yazınız.
    Bu fonksiyona mainde kullanıcıdan alınan 4 girişi argüman olarak veriniz. Fonksiyonun döndürdüğü sayıyı ekrana bastırınız.

  5. Rand fonksiyonu ile rasgele sayılar üretilebilmektedir. Rand fonksiyonu kullanarak bir döngü içerisinde 100 defa, bir paranın yazı veya tura gelme durumunu sayınız. Bunun için rand fonksiyonunu geri döndürüğü değerin %2 sini alabilirsiniz. Dönecek olan 0 ve 1’lerin gelme sıklıklarını değişkenlerde sayınız. 100 adet denemede, kaç defa 0 kaç defa 1 geldiğini ekrana bastıran bir kod yazınız. İpucu, random sayı üretimi için kodun başında srand( time( NULL ) ); tanımlaması yapılmalıdır. stdlib.h ve time.h kütüphaneleri uygulamaya eklenmelidir.