C Programlama diliyle şamatalar

Başlatan z, 23 Ekim 2011, 15:32:04

mufitsozen

adi bir program oldugundan olmasin?  :P

sayin @iruraz normalde ismini kullanmayan uyelerin isteklerine cevap vermem ama siz o kadar naif o kadar hos bir hata yapmissinizki diger tecrubesiz arkadaslarda birseyler ogrenir diye cevap yaziyorum.

kullandiginiz char pointerlari initialize etmemisiniz, bunlar nereyi "point" ediyorlarki scanf fonksiyonu oraya bir bilgi yazsin!

uygun buyuklukte(scanf'in tasirmiyacagi kadar buyuk) bir char alan tanimlayip parametre olarak verdiginiz n1.isim pointer'ini initialize ediniz. (tabii n1.soyisim'ide)
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

mir_as82

Hocamizin dediği gibi çöp değer ile değer alan bir pointer değişkenin, tuttuğu adrese yazi kaydetmeye calisiyorsun.

iruraz

Alıntı yapılan: mufitsozen - 18 Kasım 2014, 20:24:40
adi bir program oldugundan olmasin?  :P

sayin @iruraz normalde ismini kullanmayan uyelerin isteklerine cevap vermem ama siz o kadar naif o kadar hos bir hata yapmissinizki diger tecrubesiz arkadaslarda birseyler ogrenir diye cevap yaziyorum.

kullandiginiz char pointerlari initialize etmemisiniz, bunlar nereyi "point" ediyorlarki scanf fonksiyonu oraya bir bilgi yazsin!

uygun buyuklukte(scanf'in tasirmiyacagi kadar buyuk) bir char alan tanimlayip parametre olarak verdiginiz n1.isim pointer'ini initialize ediniz. (tabii n1.soyisim'ide)

sayın ve pek değerli @mufitsozen hocam, teşekkürler..

initialize  etmek dediğinizde olayı anladım. İşaret ettiği yeri göstermek gerekiyor dediğiniz gibi.

Bilgisizliğimden dolayı adi programlar yazıyorum ama bazı şeyleri aşmak için bu süreçleri yaşamak gerekiyor sanırım. Adım Murat, gerçek isimlere neden önem verdiğinizi anlamadım. Sonuçta burası bilgi, fikir, tecrübe vs. paylaşılan bir yer. İsimler bunu değiştirir mi?

Alıntı yapılan: mir_as82 - 18 Kasım 2014, 23:04:26
Hocamizin dediği gibi çöp değer ile değer alan bir pointer değişkenin, tuttuğu adrese yazi kaydetmeye calisiyorsun.

@mir_as82 hocam teşekkürler.

Kafama takılan şey dün gönderdiğim ilk adi kodun çalışıyor olması:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

struct liste
{
    char *isim;
};

typedef struct liste Liste;

int main(void)
{
    Liste n1;

    scanf("%s", n1.isim);

    printf("%s\n", n1.isim);

    return 0;
}


Burada işaretçiye bir adres gösterilmemesine rağmen scanf diziyi kaydediyor. Code::Block 13.12 'de çalışıyor. Bunun düzgün çalışma sebebi nedir?

mir_as82

Hocam runtime hatasının en kötü tarafı bu zaten. Runtime hatası her zaman gözlemlenebilen bir durum değildir. Yani tamamen "ne olacağını Allah bilir" durumudur.
Senin kodunun doğru çalışması, o kodun doğru kod olduğu manasına gelmez.

iruraz

Alıntı yapılan: mir_as82 - 19 Kasım 2014, 13:52:51
Hocam runtime hatasının en kötü tarafı bu zaten. Runtime hatası her zaman gözlemlenebilen bir durum değildir. Yani tamamen "ne olacağını Allah bilir" durumudur.
Senin kodunun doğru çalışması, o kodun doğru kod olduğu manasına gelmez.


Tamamdır hocam. Pek kodun çalışması tam olarak şans eseri olmasa da derleyici arka planda bir şeyler (iyileştirme gibi) yapıyor olabilir mi?

mir_as82

Kodu yazarken seni uyarabilirdi kullandığın IDE.
C nin güçlü olmasının sebebi zaten küçük ve minimalist olması. Derleyici programcıyı işini biliyor olarak bakar. C yazıyorsan yazdığın kodu denetleyici sen olursun. Derleyici kullanıcıya fazla müdahale etme taraftarı olmaz.
Yani şöyle düşün: Sen küçük bir atölyede iyi bir ustasın. Elinin altında matkap, testere, sac makası, tornavida pense vb herşey var. Sen o atölyede bu malzemeleri iyi kullanamazsan kendine zarar verirsin. O iş yerinin patronu seni iyi bir usta kabul edip işe alır, tutup okuldan yeni çıkmış adamı alıp ince hassas ve tecrübe gerektiren işlerini emanet etmez. Veya örneğin ağır bir malzeme taşıyan masa yapacaksın o masanın o ağır malzemeyi tartıp tartmayacağını kendin ustalığınla veya hesap kitapla kestireceksin ve bileceksin, senin elinde solidworks gibi veya buna benzer bir simulasyon aracı olmaz.

mufitsozen

#876
Alıntı yapılan: iruraz - 19 Kasım 2014, 13:45:01

Bilgisizliğimden dolayı adi programlar yazıyorum ama bazı şeyleri aşmak için bu süreçleri yaşamak gerekiyor sanırım.

Evet bu surecten geciliyor. Dahada coook uzun bir sure gecilecek.
firinlarla ekmek yenecek, uzun geceler uykusuz calisilacak, okunacak, ogrenilecek.

Ben adi bir program yazdiginizdan olabilir derken, sizin mesajinizda çalışırken "dosya_adi.exe  çalışmayı durdurdu" hatası alıyorum. yazdiginiz icindi. Gordugunuz gibi burada programinizin adini adi dosya koymussunuz!  ;)

Alıntı yapılan: iruraz - 19 Kasım 2014, 13:45:01
Adım Murat, gerçek isimlere neden önem verdiğinizi anlamadım. Sonuçta burası bilgi, fikir, tecrübe vs. paylaşılan bir yer. İsimler bunu değiştirir mi?

isim ve SOYADI cok onemlidir. ustada cirakda olsa butun zanaatkarlar adinin bilinmesini ister. Cunki kimliklerini yaptiklarina yansitir, yaptigi ise onem verirler. Ornegin van gogh bes parasiz oldu, yasarken yaptigi tablolar bes para etmedigi halde hepsine adini koymustur filan falan. Ama bunlar benim kendime has fikirlerim, seni baglamaz. Istersen banane banane ben adimi yazmam dersin, bende senin yazdiklarina cevap yazmam. Nede olsa bu sitede yazmak icin izin almak istenmiyecegi gibi cevaplamak icinde bir zorunluluk yok.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

iruraz

@mir_as82 hocam açıklama için teşekkür ederim.

sayın @mufitsozen hocam, haklısınız adi dosya espirisini anlayamamışım :)

İsim konusundaki fikrinize saygı duyuyorum. Ama benim için genel olarak insanların ismi onların tavrı, bilgisi ve yeteneğinin gölgesinde kalan bir şeydir.

İyi akşamlar.

Mucit23

Selamlar,

Arkadaşlar Şu çarpışan balonlar algoritmasını bilgisayar ortamında denemek istiyorum. Dev-C de graphics kütüphanesini ekledim. Ekrana çember dikdörtgen felan çizdirdim. Çalışma ortamım hazır.

Çarpışan balon algoritmasının tam olarak adı nedir? Bir iki baloncuk ile deneme yapmak istiyorum.

Mucit23

Dün derste Rescursive (Tekrarlı)fonksiyonlardan bahsedildi. Mantığını birazda olsa anladım ama kullanım açısından yada işleyiş açısından bana pek mantıklı gelmedi. Merak ettim. Bu tip kendi kendini tekrar eden fonksiyonlar hangi durumlarda kullanılır? Bize faydaları ne olur?

Mikroişlemcilerde bildiğim kadarıyla belirli bir sayıdan fazla iç içe fonksiyon çağıramıyorduk. Stack taşması gibi durumlar söz konusuydu. C'de her bir fonksiyonun alt program olduğunu düşürsek, Fonksiyonun kendi içinde tekrar etme sayısı mikroişlemcinin stack boyutunu aşarsa ne olur?

Tagli

Program çakılır tabi. Bilgisayarda şansın varsa bir hata mesajı alabilirsin.

Recursion genel olarak program yazmayı kolaylaştırır, karmaşık problemlerin daha sade ve anlaşılır bir şekilde koda dökülmesine olanak verir.

Ama resursion bilgisayarın işini kolaylaştırmaz. Teorik olarak, resursion ile yazılabilen her algoritma, recursion kullanmadan da yazılabilir. Recursion kullanıldığında bilgisayarın performansı düşer.

Ancak çoğu durumda, kodun anlaşılabilirliği ve bakım yapılabilirliği performanstan daha önemlidir. Bu sebeple recursion sıklıkla kullanılır. Ancak genel olarak, belleği düşük olan mikrodenetleyici sistemleri için uygun olmadığını düşünüyorum.
Gökçe Tağlıoğlu

aliveli

aşarsa kim bilir ne olur program rastgele bir yerlere gider. pic için STVREN sigortası kullanılırsa pic resetlenir

recursive sudoku çözdürürken kullanılabilir

Mucit23

Dev C de konsol uygulamaları üzerinde çalışıyorum. Debug yapmak çok zor. Kolayca debug yapabileceğim kod tamamlaması vs olan kullanışlı bir editör olarak ne önerirsiniz.

Yuunus


Mucit23

Hocam indirmeye başladım ama program ücretli.30 günlük deneme sürümünü indiriyorum. Bunun küreklisi varmı.
Visual Studioyu kursam daha iyi olacak sanırım.