Bone Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 Aynı sayfada ikinci C# topiği olacak ama benimki C#'a giriş hakkında olacak. C ve C++ konusunda File'lara kadar konuları biliyorum. Function, Array, Class, Inheritance, biraz da File. C ve C++'ya bu şekilde aşinalığım var, ama C#'ta çok zorlandım. Acaba önce Java öğrenmek mi lazım, onu merak ettim. C veya C++ bilen birisi için C#'a girişi kolaylaştıracak bir tablo, tutorial, guide felan var mıdır? (örneğin int'in karşılığı budur, cin'in karşılığı budur, printf'in karşılığı budur gibi...) Bunun dışında şu problemi nasıl yapacağımızı, yaptıklarımızı da neden yaptığımızı (bunu koyduk ama şu gerekçeyle koyduk gibi) anlatabilecek var mı? said: Write a function named syms which accept a string (a sentence) and returns the number of palindromes. Palindrome: A word or phrase that reads the same both forward and backward is called a palindrome Example: NOON RADAR Rule: a word with a single character can not be a palindrome. (Example: A) Hint: Split method of string class can be used to simplify the process. Fazla uzun gelebilir belki ama bir iki kelime bile olsa birşeyler yazan olursa o bile yeter. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 Java'da yazayim, C# ile asiri benziyor Java. C# bilmiyorum yazin yazmam gerekicek calismaya baslayinca ama takma kafana bi gununu almaz dedi ordaki calisanlar. Bu arada C++'dan C#'a gecme meselesine gelince, programlama temeli biliyorsun diye dusun, oyle bi gecis yapmaya calisirsan olmaz o, C++'da OOP konseptleri olsa da, C# ve Java cok daha farkli bir mantik uzerine dayali, guzel bi kitap alip bastan basla zaten zipla ziplaya gidersin temelden ogrenirsin guzel olur Compile etmeyebilir bir iki syntax hatasi cikarsa, ama cikmamasi lazim :P direk browsera yaziyorum ama zaten yol gostermesi onemli olan edit: anasini satiim bu code taginin bi sokamadim kodu sayfanin icine public static int sym(String sentence) { //wordlere ayir, bosluklardan ayirip arraye at diyorum burada String words[] = sentence.split(" "); // words arrayindeki her word icin (amacim teker teker bakmak palindrom mu diye int palCount = 0; for(String word: words) { // palindrom diye bi booleani true yapiyorum // eger asagidaki kodlardan gecip hala true kalirsa palindrom bu kelime diyecegim boolean palindrom = true; // word un baslangic ve bitis indexini tut int a = 0; int b = word.length() -1; // eger b'nin gosterdigi index 0 ise bu kelime bir harfli demek, gec o zaman hic islem yapmadan bi soraki kelimeye if(b == 0) continue; // basi ve sonu gosteren indexler birbirini gecene kadar, yani kelimenin ortasini gecene kadar while(a < b) { //bastaki ve sondaki karakter ayni degilse palindrom degil if(word.charAt(a) != word.charAt(b)) { // palindrom degil de ve looptan cik, artik donmenin anlami yok palindrom = false; break; } // baslangici bir saga, sonu bir sola kaydir a++; b--; } // palindrom olmasina karsit bi durum olusmadan tum harf ciftlerini gectiysek, palindrom sayisini artir if(palindrom) palCount++; } //palcount u dondur return palCount; } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
elesso Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 c# cidden çok kolay öğreniliyo. kitap falan var piyasada milyon tane, al bi tane hayatın kolaylaşsın. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Kojiroh Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 C# tamamen OOP'tur o yüzden C, C++ gibi prosedürel dilleri kullandıktan sonra alışması biraz zor gelebilir belki. C# kullanmanın insanlara kolay gelmesinin, ya da salt OOP'a alışma sürecini es geçmelerinin sebebi IntelliSense olabilir. Bi class yazdıktan sonra bundan bi nesne yaratıp, "." koyunca her şeyin pat diye karşına gelmesi hepimizin hoşuna gidiyo. Nokta koyduğumuzda bi şeyler gelmiyosa bi şeyler yanlıştır diye düşünüyoruz, classımıza gidiyoruz ve bi bakıyoruz, erişim anahtarını koymamışız falan. Kanımca böyle böyle alışılıyo C#'a. Hoş değil pek aslında :) Eğer şu an yaşadığın sorun, yazdığın konsol uygulamasında Program sınıfının altında bi metod tanımlamak ve bu metodun "static void Main(string[] args)" imzalı metodda gözükmemesi ise, bunun sebebi muhtemelen yazdığın metodun static olmamasıdır. Eğer böyle bi durum varsa da, OOP üzerine biraz daha odaklanman gerekiyo C#'a daha fazla eğilmeden önce. Soruya gelince. Palindrom demek, bi kelimenin kendisi ile tersinin aynı olması demek senin de dediin gibi. Verilen cümledeki kelimelerden palindrom olanları bulacaamıza göre de, cümleyi parçalamamız lazım. C#'ta string sınıfının işimizi görecek 2 metodu var: string.split() ve string.compare(). Split() metodu bi stringi parametre olarak girilen karakterlere göre ayırır ve bi string dizisine atıp bu diziyi döndürür. Compare() ise iki stringi karşılaştırır ve bu stringler birbirlerinin aynı ise 0, değilse 0'dan farklı bi sayı döndürür. Yapacağımız şeyler: - Bi string'i tersine çevircek bi fonksiyon/metod yazmak - Cümleyi boşluk karakterine göre ayırmak - Bu dizideki tüm kelimeleri, az önce yazdıımız metodla terslerini bulup bunlarla karşılaştırmak, eğer palindrom iseler bu kelimeleri yazdırmak - Tüm bu işlemlerden sonra bi de toplam palindrom sayısını döndürmek ki, hiç palindrom yoksa kullanıcı da bilsin. Kod buraya sığmaz, sığsa bile çok yer kaplar diye internette bi yere attım. Projenin tamamı içi http://www.kojikun.org/Palindrom.rar , sadece kaynak kodu için http://www.kojikun.org/Program.rar adresine bakabilirsin. Bu programı geliştirmek için yapılabilcek şeyler var. Örneğin, cümlede yalnızca boşluk ve kelime olmadığı için cümle stringinden nokta, virgül gibi noktalama işaretlerini kaldırmak, birden fazla boşluk yan yana geldiyse bunları birer boşluğa indirgemek, vs. Kısa not: C ve C++'ta yer alan biçok veritipi C#'ta da aynı isimlerle var. cin'in C# karşılığı System.Console.Read, print'in karşılığı System.Console.Write'tır. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
zgrw Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 object oriented programming mantığını biliyorsan herşey aynı geri kalan int yine int char yine char string yine string :) pointer gene pointer bişey yok yani herşeyi class olarak görceksin sadece, 1-2 bişey yaptıktan sonra olayı kaparsın zaten Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
mulgear6 Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 c++ da cin çarpıyo c de adam gibi scanf diyosun dgdfg Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Ractamainus Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 syntax aynı diye, arkada da her şey aynı yürütülüyor demek değil aslında. ama başlangıç olarak aynı farzedilebilir yine de.. diğer türlü .net developer, java developer gibi kavramlar olmazdı zaten. ama yazılım geliştirme sadece syntax bilmekten oluşan bir şey değil. neyse bu biraz offtopic oldu. onun dışında penth'in örneği güzel, c#'a çevirdim yardımcı olması açısından: private int syms(string sentence) { int palCount = 0; string[] words = sentence.Split(' '); foreach (string word in words) { bool palindrom = true; int a = 0; int b = word.Length - 1; if (b == 0) continue; while (a < b) { if (word[a] != word[b]) { palindrom = false; break; } a++; b--; } if (palindrom) palCount++; } return palCount; } yorumları kaldırdım, zaten penth yapmış. oradan okuyabilirsin. bu metodu şöyle çağırabilirsin: syms("bu benim taramak istediğim cümle"); ve sana integer (int) tipinde değer döndürür. yani şöyle kullanabilirsin: int i = syms("bu benim taramak istediğim cümle"); not: syms çok kötü bir isimlendirme yahu.. edit: bbcode.. edit2: bbcode değil lan, smiley =P Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
fizban Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 c bilen adamın c++ ve java öğrenmesi için kaynak söyler misiniz hazır yeri gelmişken ? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 ben string'i ikiye bolup her iki tarafi da ayni mi diye bakardim. static int syms(string sentence) { int palCount = 0; string[] words = sentence.Split(' '); foreach (string word in words) { if (word.Length - 1 == 0) continue; // direkt ikiye bolemiyoruz cunku kelime tek haneli sayida harf // icerebilir. ikiye bolup, asagiya yuvarliyoruz. boylece ortadaki // harfe bakmamiz gerekmeyecek int splitPoint = (int)System.Math.Floor((double)(word.Length / 2)); // kelimenin ilk yarisini kaydediyoruz string firstHalf = word.Substring(0, splitPoint); // kelimeyi harflerine ayirip ters ceviriyoruz char[] chars = word.ToCharArray(); Array.Reverse(chars); // harfleri yine stringe cevirip tersten ilk yariyi aliyoruz. string secondHalf = new string(chars).Substring(0, splitPoint); if (firstHalf == secondHalf) palCount++; } return palCount; } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 ohoo space complexity si yuksek bunun arkadasim :P Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 Penth algoritmacı oldun çıktın başımıza yahu. Hayattan bezdircekler seni bunlarla. :p Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aquila Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 abi onlar eskidendi, artik kaynak sorunu yok, ver beline ramin. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 penth geyik yapmis bence =) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Prosciutto Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 Syntaxı öğrenmek sorun değil, c# da java da gayet rahat diller o konuda. zaten çok benziyo syntaxları. OOP konusunda eksiğin varsa önce temel kavramları (class, interface, inheritance vs.) öğren dilden bağımsız olarak. bunları bildikten sonra hangi dili istiyosan ona yoğunlaşabilirsin. bazı şeyler farklı dillerde farklı şeylerle yapılıyor ama olay aynı sonuçta. mesela javada multiple inheritance yok, c++'da var, ama onda da doğrudan interface diye bişi yok multiple inheritance'dan faydalanıyosun öyle bişi yapmak istediğinde falan. OOP bildikten sonra aradaki bu farkları öğrenirsin birbirleriyle karşılaştırarak. C# öğrencem diyosan bunların yanında önce .Net teknolojisini incele, CLR nedir vs. , C++'dan farklı şekilde işliyor çünkü. Benzer şekilde java için virtual machine var falan. Syntax en kolay kısmı yani. Takıldığın yer olursa sorarsın yine. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 hehe tabi geyik de dogru da ayni zamanda dsfs sinirlerim bozuldu abi benim son zamanlarda cok gereksiz islerle ugrasiyorum bu arada multiple inheritance denilen dunyanin en gereksiz seyinin olmamasi kotu degil iyi bisey bence. tam bir bas belasi kim icat etti bilmiyorum. oysa java interfaceleri, mmm <3 Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mirage Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 C++'da Java/C# interface'lerine denk bir şey yok mu bu arada? Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Kojiroh Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 Bildiim kadarıyla yok. Multiple inheritence + abstract class ile ona benzer bi şey yakalanabilir heralde en fazla. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Prosciutto Mesaj tarihi: Nisan 8, 2009 Paylaş Mesaj tarihi: Nisan 8, 2009 Evet interface yok, C# ve Javadaki Object gibi bi root class da yok. Abstract class yaratıp ondan inherit ederek yapıyosun aynı işi. Penthesilea said: bu arada multiple inheritance denilen dunyanin en gereksiz seyinin olmamasi kotu degil iyi bisey bence. tam bir bas belasi kim icat etti bilmiyorum. oysa java interfaceleri, mmm <3 yok abi zaten kötü diye demedim aradaki farkı söylüyodum :) javanınki çok daha anlaşılır. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Penthesilea Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Bu arada Bone, google is your friend hesabi buyur: aradigin sey http://media.wiley.com/assets/264/22/0764557599_bonus_AppD.pdf genel bilgiler http://msdn.microsoft.com/en-us/magazine/cc301520.aspx http://andymcm.com/csharpfaq.htm burada da oneriler var http://forums.randi.org/archive/index.php/t-55811.html Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Ractamainus Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 Mum_Chamber said: ... // kelimeyi harflerine ayirip ters ceviriyoruz char[] chars = word.ToCharArray(); Array.Reverse(chars); // harfleri yine stringe cevirip tersten ilk yariyi aliyoruz. string secondHalf = new string(chars).Substring(0, splitPoint); ... } onu şöyle yapsak daha iyi sanki? string secondHalf = word.Substring(splitPoint, word.Length - splitPoint); edit: tek sayı muhabbeti çakıyor doğru. neyse oraya da bir kontrol koyulabilir vs. (word.Length - splitPoint, splitPoint) Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 tersten almak lazim ikinci bolumu radar'da ra ve ar'dan ziyade ra ve ra diye almak amac, o yuzden array.reverse. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Ractamainus Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 evet. çok alakasız olmuş benimki. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
zgrw Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 fizban said: c bilen adamın c++ ve java öğrenmesi için kaynak söyler misiniz hazır yeri gelmişken ? Deitel & Deitel How to program in C++ Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Mum_Chamber Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 ehueheu ya benim yazdigim kodun soyle bir salakligi var, hicbiriniz de cikip ses etmemissiniz, simdi bakarken farkettim; hazir harfleri ters ceviriyorsak, niye ters cevrilmis haliyle normal halini karsilastirmiyoruz ki? hani ikiye bol, uc takla attir, sonra karsilastir niye? static int syms(string sentence) { int palCount = 0; string[] words = sentence.Split(' '); foreach (string word in words) { char[] chars = word.ToCharArray(); Array.Reverse(chars); reversed = new string(chars); if (word == reversed) palCount++; } return palCount; } Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
aktiftablet Mesaj tarihi: Nisan 9, 2009 Paylaş Mesaj tarihi: Nisan 9, 2009 "Thinking in c#" güzel bi kitaptır mesela işin temeliin anlatan. Link to comment Sosyal ağlarda paylaş Daha fazla paylaşım seçeneği…
Öne çıkan mesajlar