Öğrencilerin soru sorup yanıt alabileceği bir soru cevap sistemi sunulmaktadır. Ders duyuruları, öğrenci soruları ve cevapları için bir platformdur. Aşağıdan erişebilirsiniz.
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.
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.
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.
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
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.
Faaliyetler
Oranlar
Vize
%20
Ödev/Quiz
%10
Lab
%15
Proje
%30
Final
%25
Bonus
5 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 Notu
Ağırlık
Harf Notu
90-100
4.00
AA
85-89
3.50
BA
80-84
3.00
BB
75-79
2.50
CB
65-74
2.00
CC
50-64
1.50
DC
45-49
1.00
DD
0 -44
0
FF
Beklenen Efor
Öğrencinin dönem içinde göstermesi beklenen efor tablosu aşağıda verilmiştir.
İçerik
Saat
Kaç Defa
Ara Toplam
Derse Hazırlık
2
14
28
Ders Tekrarı
2
14
28
Ödev
4
6
24
Proje
48
1
48
Sınıf Dersi
4
14
56
Ara Sınav ve Final
3
2
6
Öğrenciler dersten başarılı olmak için dönem boyunca ortalama 190 saat harcamaları beklenmektedir.
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.
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.
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.
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.
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
Aşağıdaki kod parçacığının çıktısı nedir?
#includeint main(){
int i = 10;
printf("%u",&i);
return 0;
}
Aşağıdaki kod parçacığının çıktısı nedir?
#includeint main(){
int i = 10;
printf("%d",*(&i));
return 0;
}
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.
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
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.
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.
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.
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.
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.
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.
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
İ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
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.
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:
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.
Aşağıdaki özyinelemeli fonksiyon ile ifade edilmiş kod parçacığının, özyinelemesiz olan karşılığını yazınız.
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
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?
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
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ı
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.
Öğ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.
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.
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
Önişlemci nedir?
Makro ve fonksiyon arasındaki farklar nedir?
Bir dikdörtgenin en ve boyunu alarak alanını hesaplayan bir makro yazınız
İki sayının ortalamasını döndüren bir makro yazınız