Sisprog Proje Soru Cevap
Selamunaleyküm,
Proje süresi bitmiştir. İnşallah öğretici ve faydalı bir süreç olmuştur sizler için. Değerlendirme sonrasında ödevle alakalı itiraz, görüş ve önerilerinizi mail aracılığı ile iletebilirsiniz. Değerlendirme bitene kadar konu ile alakalı olası mailleriniz cevaplanmaya bilir.
Sınavlarınızda ve tüm işlerinizde hayırlar ve başarılar dilerim.
------------------------
Sizden mail ile gelen sorular burada yayınlanıp cevaplanacaktır. Bu duyuruyu takip edebilirsiniz.
Mail için: asbayraktar@sakarya.edu.tr
--------
Önemli Gelişmeler:
Proje dosya yapısı: (.pdf 52,2 KB (53.457 bayt) yayın tarihi 11.05.2021) Bu konuda daha fazla soru sormamanızı öneririm, anladığınız gibi yapın.
- Proje klasörü
- main.c (main fonksiyonunu barındırır)
- varsa_diğer_kaynak_dosyaları.c
- varsa_başlık_dosyaları.h
- makefile (make, clean, cleanall, run)
- readme
- .kilit (burada olacak sizde çalıştırabildiğiniz bir örneğimizi (hepsi çalışıyorsa istiklal_marşı2 yi) github’ınızda bulundurun, biz başka testler yaparken executablenin yanına üzerine yazacağız.)
- ornek_metin (örneklerden seçilen kilitle uygun )
- kripto (çalıştırılabilir dosya make yazıldığında bu isimde bir çalıştırılabilir dosya üretimeli)
- libfdr klasörü: bu klasör size kolaylık olması açısından github projenizde bulunabilir bulunmayada bilir fakat sabise yüklerken lütfen silerek yükleyiniz.
metin_dosyası, encripted dosya ve decripted dosyaları nın isimlendirilmesi:
Bu dosyaların yolları ve isimleri parametre olarak verileceğinden dolayı bu konuda bir endişeniz olmasın.
- kripto -e giriş_metin cikis_metin şeklinde çağırılırsa.
- giriş_metin’i çalıştırılabilir dosya ile aynı klasörde olacaktır ve cikis_metin’i de aynı klasöre üretilecektir.
- kripto -e dosya_adları/giriş_metin dosya_adları2/cikis_metin şeklinde çağırılırsa.
- giriş_metin’i proje klasörü altında dosya_adları isimli klasörün içinde iken cikis_metin’i ise dosya_adları2 isimli klasörün içine oluşturulacaktır.
Makefile:
- make: projeyi derler ve kripto isimli çalıştırılabilir dosyayı oluşturur.
- clean: derleme esnasında oluşan tüm dosyaları siler(*.o, kripto, vb)
- cleanall: derleme sırasında olşan dosyaların yanı sıra (.kilit, encripted, decripted, ornek_metin, *txt isimli dosyalar var ise hepsini siler.)
- run: clean ile temizler make ile derler ve iki komutuda (-e,- d) sırasıyla çalıştırarak (ornek_metin ) encripted ve decripted dosyaları üretir. (bu tam bir ödev içindir tam olmayan ödev yapabildiği yere kadar bu görevi gerçekleştirir).
-----
Sistem Programlama Dersi Proje İlerleme Raporu Taslağı v1.0
-----
libfdr kütüphanesinin fields yapısı satırda 1000 karakter desteklediğinden dolayı istiklal_marsi ve gelişmiş metin de hatalar oluşmaktaydı (örnek_metin_v1.0). Karakter sayıları 1000 in altına düşürülerek örnekler güncellenmiştir (örnek_metin_v1.1). Yapısal bir değişiklik yoktur.
[silindi]basit_agac_3_yaprak ve basit_agac_4_yaprak örenkleri çalışmaktadır. En geç 8.05.2021 tarhinde düzenleme yapılıp tekrardan ilgili örnekler sizinle paylaşılacaktır. Yapıda ufak bir değişiklik olması muhtemeldir. İlgili tarihte duyuruyu takip edip güncel öreneği test ediniz. [silindi]
-------
Soru :
Merhabalar hocam ... 2 sorum olacaktı:
1. Ödev de grup olmak zorunlu mu ?
2. Ödev grupları aynı öğretim aynı grup olmak zorunda mı?
Cevap :
1. Tercih edilmez fakat grup sadece proje yöneticisinden oluşabilir.
2. tüm şubelerden öğrenciler grup oluşturabilir.
Soru:
Proje ödevi için beni bir gruba dahil edebilir misiniz ?
Uzaktan eğitim olmamız nedeniyle dersi alan herhangi birini tanımıyorum.
Sizlerin desteğini rica ederim .
Cevap:
Projeyi kendi oluşturduğunuz grup ile yapmanız gerekiyor. Bireyselde yapılabilir.
Soru:
Hocam, öncelikle github access izni verildi. Bunun belirli süre içinde kabul edilmesi gerekiyor diye biliyorum, repoya ulaşımla ilgili herhangi bir sorun oluşur ise bildirin. Ödev dosyasında aşağıdaki paragraf yer almakta. Her bir üye bunlardan birinin sorumluluğunu alması grup içi eşitsizlik yaratbilir. ......... İş bölümü mutlak şekilde böyle mi olmalıdır? Yoksa biz kendi içerimizde iş bölümü yapabilir miyiz? Örneğin ....... vs vs. Bu şekilde daha küçük parçalara bölmek istiyorum. Problem olur mu? Formda görevler ile ilgili bir kısım bulunmamakta, bunu okul numaralarının yanına mı yazmam gerekir ? Formu doldurmuştum.
Cevap :
- 7 gün içinde kabul edilmesi gerekiyor sanırım kaçırmadan hepsini kabul edebilirim. Eklemeniz yeterli.
- İş bölümünü istediğiniz gibi yapabilirsiniz yeterki takım arkadaşlarınızdan bazıları boşa çıkmasın herkesin aktif olması gerekiyor.
- Görevleri ilerleme raporunda bildireceksiniz. Formda böyle bir alan yok.
Soru:
Hocam merhabalar. ...
Formu doldurup gönderdim ama github linki ile yanlışım var mı yok mu bilemedim. Lİnkle ilgilki sorun olursa söyler misiniz.
Hocam proje linkini attım .Yanlışsa
https://github.com/.../SistemProgramlama böyle mi göndermemiz gerekiyordu. Eğer yanlışlık varsa formu tekrar doldururum.
Kolaylıklar dilerim hocam
hocam dosyadaki verileri alırlen "<dosya.txt" şeklinde mi almamız lzım .
Aynı kişiden gelen 3 maile cevap:
formda github link formatına dair örnek verilmiş. Aynı örnektteki bigi yapınız. (sonunda .git olacak - hata puanınızın kırılmasına veya ödevinizin okunmamasına sebep olabilir. )
dosyanın nasıl okunacağı ise ödev dökümanında belirtilmiş. Komutlar kısmını inceleyiniz.
Soru:
hocam merhaba github proje sayfamızı açtık sizi dahil etmek için github kullanıcı adınızı alabilir miyiz.
Cevap :
Ödev dökümanında github sayfamın linki var. dolayısıyla son kısmı kullanıcı adım oluyor.
Soru:
Hocam merhaba Proje çalışması ders kapsamında öğretilen libfdr kütüphanesi kullanılarak C dilinde gerçeklenecektir, başka kütüphaneler kabul edilmeyecektir. Standart kütüphaneleride mi kullanmayacağız ? Örneğin string, stdio.h, stdlib.h gibi
Teşekkür ederim
Cevap:
Standart kütüphaneleri kullanabilirsiniz.
Soru:
Selamın Aleykum hocam ,
sistem formunda dosyayı .git olarak istemişsiniz . doldururken galiba gözümden kaçtı . Şuraya koyayım .git uzantılı linki
Cevap:
Formu dolduran kişi hesabı ile girip düzenleme yapabiliyor mail ile bildirimde bulunmayın.
Soru:
Hocam dediğiniz gibi linki düzenledim. Ve formu güncelledim. Projemize eklendiniz ve daveti kabul ettiniz.
Kullanıcı adı ... idi. Onu yazmayı unuttum. Okul sitesinde puan kırılacağını söylemiştiniz. inşallah şuan sorun yoktur.
Cevap:
Formun son doldurma tarihine kadar tüm düzeltmeleri form üzerinde yapabilirsiniz ve yapınız.
Soru:
Merhaba Abdullah Hocam.
Formu ilk doldurduğumda github linkini .git olarak kaydetmemiştim şimdi tekrar düzenleyip .git olarak ayarladım. Bu konu hakkında başka bir işlem yapmam gerekiyor mu?
Cevap:
Düzenlediyseniz başka birşey yapmanıza gerek yok.
Soru:
Merhaba
Duyurulari takip ediyorum fakat ;
Duyurularda gruplarin kac kisiden olusturulacagi belirtilmis.
Ben grup olabilecegim ogrenciler ile iletisimimin olmadigini bu nedenle sizden destek almak istedigimi belirttim .
Cevap:
Merhaba ... anlıyorum fakat böyle bir talep yalnızca sizden geldi. Grup oluşturma kısmını ise biz sizlere bırakmıştık. Bu sebele şuan benim size bir grup atamam mümkün değil. Fromun doldurulması gereken son tarihine kadar tek kişilikte olsa proje dökümanında belirtilen formu doldurmanızı öneririm, aksi takdirde projeniz kontrol edilmeyebilir. Grup bildirim tarihine kadar siz bir grup oluşturabilirseniz veya biz birşekilde size yardımcı olabilecek bir olanak elde edersek sizi bir guruba dahil edebiliriz. (not: bu konuda hiç bir sorumluluğumuz yoktur gruba dahil etmesek bile oluşabilecek maduriyetlerden sizin sorumluluğunuzdadır. )
Tarafımızdan Gruba atanma isteğinizi ayrıca bu linkten iletebilirsiniz (fakat bu formun tarafımızca hiç bir bağlayıcılığı yoktur. Uygun şartlar oluşur ise sizlere yardımcı olmak için kullanılabilir. ): https://forms.gle/co3RKeWVHZucwbqT8
Soru:
Merhaba hocam,
Sistem programlama proje ödevi için formu gruptaki herkesin ayrı ayrı doldurup göndermesi gerekiyor mu yoksa sadece proje yöneticisinin göndermesi yeterli midir?
Cevap :
Proje yöneticisinin doldurması gerekli ve yeterlidir.
Soru:
Grubumuzda görev dağılımı yaptık bu doğrultuda herkes kendi işini mi yapmak zorunda örneğin ben proje yöneticisi olarak kodlara katkıda bulunmam gerkir mi ? Yoksa proje yöneticileri hiç bir şekilde kodlara dokunamazlar mı ?
Cevap:
Görev dağılımı yaptıysanız herkesin kendi işini yapması doğal olanı. Proje yöneticisine gelirsek. 3 ve daha fazla kişiden oluşan projelerde proje yöneticisi kodlama yapmayabilir. Ama boş durmaması projeyi yönetmesi gerekli
Soru: Hocam Merhaba ;
Projemizde kilit dosyasını kendimiz mi üreteceğiz. yoksa örnek .kilit dosyalarıyla çalışmamız yeterli midir?
Yani ödevin kontrolü örnek metinler ve .kilit dosyaları ile mi yapılacak, yoksa sadece metin verilerek .kilit dosyasını oluşturan sonra da bu kilit dosyasına uygun şifreleme ve çözme işlemi mi yapılacak?
Bir de ben projemi tek yaptıgım için proje ekibi üyeleri kayıt formu olayını yanlış anlayıp yapmadım sonradan öğrenip yaptıgımda da geç olmustu . Bu konuda bir sorun yasar mıyım ?
Cevap:
Kilit dosyası kısmı ödevde iyice açıklanmış. Burada ayrıca açıklama yapmaya gerek yok kanatindeyim. İyi okmak ve anlamak sorumluluğundasınız.
Ödevler input ve output dosyaları üzerinden kontrol edilecek. Yani komut komutta olsa ödevin tam çalışması bekleniyor. Tam çalışmayan ödevlerde değerlendirme elle yapılacak fakat çalıştırsanız sizin için daha iyi :)
Her geç gelen bildirimde (form doldurumunda) gün başına -10 puan olarak düşünüldü şuan için. (bu konuda mail atmazsanız sevinirim.)
Soru:
Kilit dosyasını parçalarken fields ile regexi birlikte kullansak sorun olur mu?
Fields ile boşluğa göre parçalama mevcut fakat bu istediğimiz format değil. Fields ın parçalama işlemine müdahale ederek kodlarının arasına regex kurallarını eklemeyi düşündük. Ama kullanmadan önce size danışmak istedik bu kullanım ödev için sorun oluşturur mu?
Cevap:
Eger harici bir kutuphane kullanmayacaksaniz olur. Fieldsi editlemek yerine kendiniz haricen birsey yazsaniz daha uygun sanki ? Cunki libfdr i biz varsayilan kullanacagiz.
Soru:
Ödev dosyasında giriş dosyasının en fazla 500 kelime içerebileceği ve kilit dosyasındaki kelime veya kodların en fazla 100 karakterden oluşabileceği söyleniyor. Bizden istenen bu sınırların geçilmesi halinde hata mesajı vererek programı sonlandırmak mı yoksa bu yazanlar sadece bilgilendirme için mi ?
Ayrıca string.h kütüphanesi kullanmak sorun teşkil etmiyor değil mi ?
Cevap:
Bu sınırlar minimum sınırlardır üzerinde çalışabilir, hata mesajı vermeyiniz.
Std kütüphanesi olan string.h kullanılabilir.
Soru:
libfdr ktüphanesinin nerede konumlanması gerektiğini sormuş bir arkadaşımız .
Cevap:
Proje kasörünüzün içinde libfdr isimli bir klasörün içinde olsun.
Soru:
Merhabalar hocam,
Sisteme yükledikleriniz valid json dosyaları ancak ödev de hatalı json dosyası verilmesi durumunda uygun hata mesajı verip çıkılması isteniyor. Hatalı durumlar için mesajlar oluşturuyoruz ancak birçok durum var. Dolayısıyla hata kriterlerinizin neler olduğu hakkında örneğe ihtiyaç duyduk.
Cevap:
- .kilit Dosyası yok ise: "Kilit dosyası yok."
- json çözümleme hatası var ise yani json geçersiz ise : tırnak yok parantez yok vs: "Json geçerli değil.(1)" , isterseniz 1 olan kısma \n koyduktan sonra hataya dair detay verebilirsiniz. ama fazla takılmayın bu kısma.
Bu iki mesaj tüm hataları kapsıyor kanatimce. Şuan için başka hata mesajına gerek yok, sizin porgramlarken olmazsa olmaz dediğiniz bir hata mesajı olur ise bildiriniz.
Soru:
Merhabalar hocam, İki soru yönelteceğim size.
İlk olarak ; giriş , çıkış ve kilit dosyasını proje klasörü içinde ayrı bir klasörde (örneğin doc klasörü ) saklamamız sizin için uygun mudur ?
Diğer bir ikincisi de json dosyasında fazladan boşluklar, aynı satırda virgül ile ayrılmış birden fazla veri gibi ekstrem örnekler olacak mı yoksa kilit dosyası nizami düzende mi verilecek ?
Cevap:
Yok başka bir klasörün içine koymayınız. oluşturmuş oluğunuz çalışabilir dosya kendi dizininde .kilit doyasını arayıp ürettiklerinide yina aynı dizinde üretmeli.
Sizin için tek önemli olan konu boşluk veya tab ile arılmış kelimeleri ayıtıp gerisini bütün almalısınız. Örn virgül var ise:
selam,sana: bu kelime selam,sana şeklinde alınıp kilit klasöründe karşılığı varmı diye bakılmalı.
selam, sana: ise selam, bir kelime sana bir kelime olarak aytı ayrı işlenmeli.
Soru:
Merhaba hocam,
(libfdr ın konumuyla alakalı) Cevapladığınız bir soruya istinaden bir soru sormak istiyorum.
Yukarıdaki gibi demişsiniz ama biz daha önceki derslerimizde de gösterildiği gibi C projelerinde proje yapısını bu şekilde yapmıştık o yüzden yine bu şekilde yaptık. Daha düzenli olduğunu düşünüyorum, bunda herhangi bir problem var mı?
Ayrıca hocam bir sorum daha var, biz bir arkadaşımızı Tester olarak belirledik. Projede bu arkadaşın görevi projeyi sürekli test etmek (ekstra kilit dosyaları üretip test gerçekleştiriyor programı bozmaya çalışıyor eksiklikleri bize bildiriyor) ve yazabilirse projeye test yazmak (unit test yapmak istiyor bu kısmı araştırıyoruz). Fonksiyonlarımızla ilgili unit test yazılırsa bunu bir test klasoru altında projeye eklememizde sakınca var mıdır?
Cevap:
Anlıyorum fakat şuan libfdr dediğimiz gibi olsun. Bilginiz ve bildiğinizi uygulama arzunuzu takdir eder devam ile sürdürmenizi tavsiye ederim.
Tester rolü tanımlamış olmanıza sevindim buda çok iyi. Test kodu yazması yerinde olacaktır. Genel düzeni bozmadan her türlü testi ekleyebilirsiniz istediğiniz klasöre.... fazladan yaptıklarınız (bunlar çok faydalı faliyetler) genel düzeni bozmadıkça gönlünüzce olabilir.
Soru :
Hocam merhaba ödevde şöyle iki ifade var:
1- Proje alanında bulunması istenen dosyalar: Nihai proje: (Git bulunacağı gibi Sabis’e yönetici haricindeki diğer gurp üyelerinden herhangi biri tarafından yüklenecektir)
2- Ayrıca, sadece kaynak kodların olduğu projenizin son hali zip ile sıkıştırılarak MUTLAKA SABİS’teki proje sayfasına (sadece proje yöneticisi tarafından ve ilerleme raporunun üstüne) yüklenecektir.
ilk maddede yönetici harici diyor sonra da sadece yönetici ben ve takım arkadaşlarım ne yükleyeceğimizi karıştırdık.Proje yöneticisi hangi kısmı yüklemeli? Üyeler ne yüklemeli?
Sağlıklı günler dilerim
Cevap:
2. Madde geçerli: Projenizin son hali zip ile sıkıştırılarak MUTLAKA SABİS’teki proje sayfasına (sadece proje yöneticisi tarafından ve ilerleme raporunun üstüne) yüklenecektir.
Soru:
Hocam merhabalar. Biz ödevde direkt olarak kodlama ve probleme odaklandığımız için rapor ve teslim kısmını incelemedik. Bu yüzden de ilerleme raporu teslim kısmını kaçırmışız. Biz projeyi tamamlayacağız, geç de olsa bu süreçte ilerleme raporunu da hazırlayıp göndermemiz geçerli olur mu?
Cevap:
Zamanında geleyen şeyler zamanında gelen gibi olmayacağı gibi hiç gelmeyen gibide olmayacaktır.
Soru:
iyi günler hocam. Ödevi tek başıma yapacağımdan grup formunu doldurmayı unutmuşum. dolayısıyla örnek raporu da yapmadım. Ödevi yapsam değerleyecek misin?
Cevap:
Hiç yapmamanızdan daha iyi olacaktır. Mümkünse diğer adımlarıda geçte olsa tamamlayınız.
Soru:
Hocam iyi günler. Satırda 1000 karakter sonrası bölünme sorununu çözmeye odaklanmalı mıyız yoksa girdiğiniz örnekler satırda 1000 karakterden az mı olacak şimdiden teşekkürler
Cevap:
Yok. 1000 satır probleminiz yok tüm örnekler 1000 satırın içinde test edilen örneklerde öyle olacak. Rica ederim.
Soru:
Merhaba, Github ile ilgili sorum olacaktı. Puanlama da hareketlerinin github hareketlerinin etkisi var mı? Sözgelimi kilit dosyasını okuma ile ilgili bir kod yazdık ben bunu commitledim. Arkadaşım bug buldu düzenledi ve commitledi. Burada ikimizde commit ettik. İlaveten ilerleme raporundan ben tüm github işlemlerinden sorumlu diye yazmıştım. Buna istinaden yazıyorum.
Cevap:
Yani githubu olabildiğince sık ve güzel kullanın. Anlattığınız commit senaryosu iyi.
Soru:
1) 500 kelime sınırı hakkında net bir açıklama yapar mısınız ?
2) Kaynak kodları nerede olmalı ? source klasöründe olabilir mi?
Cevap:
1) 500 kelime (minimum) şartını sağlamanız yeterli fakat 500 ün üzerinde olmasını kontrol edip hata mesajı vs vermenize gerek yok.
2) Kaynak kodları direk proje dosyasının içinde olmalı. ayrıca bir source klasörünün içine koymayınız.
Soru:
hocam sistem projesini bitirdik lakin .kilit dosyasını göstereceğimiz dosya uzantı adı ne olacak. biz şu an 11/.kilit olarak okuyoruz . Bunun standartı ne olmalı ?
Cevap:
.kilit dosyasının ismi aynen böyle".kilit" ayrıca bir uzantı vs eklenmeyecek ve çalıştırılabilir dosyanın yanında olacak. sekilde okunacak.
Soru:
Hocam merhaba,
Bizim anladığımız kadarıyla Libfdr kütüphanesini kullanabilmemiz için ".a" uzantılı dosyaya ihtiyacımız var bu dosya için de kütüphaneye ait makefile dosyasını çalıştırmamız gerekiyor.
Biz projemizin makefile dosyasını buna göre düzenledik ancak sabise ödevi yüklerken kütüphane dosyasını silmemizi istemişsiniz.
Makefile dosyamızı öncelikle kütüphane için make işlemlerini gerçekleştirip sonra projemizi çalıştıracak biçimde mi bırakalım yoksa kütüphane'nin make dosyasının çalıştırıldığını farzederek mi yapalım ?
Cevap:
Sizin makefile'ınız libfdr'ı derlememeli onu derlenmiş kabul edin.
Soru:
Merhabalar hocam, proje için yeni örnek kilit dosyası yüklemiş, burdaki istiklal marşı1 örneğinde .kilit dosyasındaki "gibi" : "1111111" 7 tane 1 value suna sahip. Verilen örnek metin için encripted textinde "gibi" kelimesine karşılık 6 tane 1 "111111" üretilmiş. .kilit dosyasında "111111" value'suna sahip bir keyif bile bulunmamakta. Bu durum diğer örneklerde de mevcut. Mümkünse kontrol edebilir misiniz?
Cevap:
Evet. Kilit dosyalarının son kelimelerinde hufmman kodu sehven sondan 1 basamak eksik alınmıştır. siz tam alarak işlemlerinize devam ediniz. Olaki sizde kilit dosyasındaki son kelimenin huffman kodunu dikkat edip özellikle son bamağını bir eksik adlıysanız puanınızda bir kayıp yaşatmayacaktır. İki çözümde geçerlidir.
İletişim
asbayraktar@sakarya.edu.tr0 264 295 7152
Sosyal Hesaplar