[Çözüldü] dev c de basit kod yazıyorum ama ?!

Başlatan esrama, 25 Aralık 2008 - 17:40:12

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

esrama

Yeni programlamaya giriş yaptık. Basit anlamda bir kaç ufak tefek şey görüyoruz. Hoca evde dev c++ yi yükleyin dedi ve bize birkaç ufak kod örneği gösterdi. evde aynılarını yazmama rağmen olmadı. Mesela hello world yazdırmak istiyorum:

main () {
printf("hello world");
}

fakat olmuyor. Biri forumda bana aşağıdaki iki kodu girmemi söyledi (mainden önce)
#include <stdio.h>
#include <iostream>

başa yazdığım zaman oluyor. Fakat okulda hoca bilgisyarda gösteridiğinde böyle bir şey yapmadı. Bunların ne anlama geldiğini açıklayabilirmisiniz ? Mesela arkadaşlarım dev c de aynen şu kodu girdiklerinde çalıştığını söylüyorar.

int main(void)
{
  printf("helloworld");
  system("PAUSE");   
  return 0;
}

bende niye olmuyor ?! :(

erginemr

C'yi bildiğimi söyleyemeyeceğim ama;
Alıntı Yap#include <stdio.h>
gibi deklarasyon satırları, C'nin ihtiyacı olan fonksiyon kütüphanelerini (*.h = header dosyaları) yüklüyor. Örneğin, "stdio.h" kütüphanesinde "Standart Input/Output" yani standart giriş - çıkış fonksiyonlarının tanımlamaları var, ki programda kullanılan printf de bunlardan biri. Öğretmeninizin kullandığı program, bu kütüphaneleri otomatik olarak yüklüyor olabilir. Eskiden DOS ortamında kullanılan bir de "conio.h" vardı.

Alıntı Yapsystem("PAUSE");   
satırı vb. bazı işlemler, her işletim sistemi ve derleyici ortamında (gcc gibi) çalışmayabilir. Windows'ta çalışıp da Linux altında hiçbir anlam ifade etmeyen böyle C komutlarına (getch() gibi) rastlamıştım.

OKAN

Ben 2 yıl önce C dersi almıştım. @erginemr' in dediği gibi en başa
#include <stdio.h>
konduğunu hatırlıyorum.

esrama

Yok ben windowsu kullanıyorum şimdilik. İlk defa dev c için son iki aydır açmadığım windowsu açtım. ama herneyse :) onu halledeceğim...
Peki ne yapmam gerekiyor. Ben şimdi basit kodları deniyorum. Yakın zmanda (hatta hemen) if, while gibi komutlara geçeceğim fakat bu tür şeylerlerin sorun çıkarmasından korkuyorum :( Onlar içinde ayrı kodlar eklenmesi gerekiyormu ?Yani yazdığım şey doğru olmasına rağmen böyle extra şeylerin girilmesi gerektiğini bilmiyordum :(

OKAN

Alıntı yapılan: esrama - 25 Aralık 2008 - 18:04:09
Yok ben windowsu kullanıyorum şimdilik. İlk defa dev c için son iki aydır açmadığım windowsu açtım. ama herneyse :) onu halledeceğim...
Peki ne yapmam gerekiyor. Ben şimdi basit kodları deniyorum. Yakın zmanda (hatta hemen) if, while gibi komutlara geçeceğim fakat bu tür şeylerlerin sorun çıkarmasından korkuyorum :( Onlar içinde ayrı kodlar eklenmesi gerekiyormu ?Yani yazdığım şey doğru olmasına rağmen böyle extra şeylerin girilmesi gerektiğini bilmiyordum :(
Bunlar ekstra şeyler değil. Zaten olması gerek. Kod yazmadan önce bunları içeren kütüphaneleri çağırman lazım.

Sypro

stdio.h, standart input output header adındaki dosyanın referans adıdır, #include ile kendisini belirtmez isen hiç bir işlem yapamazsın:)
iostream de aynı şekilde, input output stream. Sonuç olarak ikisini de bir şey yazdıracak ya da gösterecek isen kullanmak zorundasın.

Main - Void olayı biraz karışık. Normalde main() { diye derleyebildiğin bir şeyi Dev-C++ void olarak isteyebiliyor. Aralarında öyle muhteşem farklar yok sadece ikisi de main function belitiyor bunu bil yeter. Void biraz daha ileri bir konu, pointer'lara gelince anlaşılacak bir şey.

verilen kod

#include <stdio.h>
#include <iostream>

int main(void)
{
 printf("helloworld");
 system("PAUSE");  
 return 0;
}


şeklinde kullanılınca çalışıyor bir sorun yok. Eğer istersen,

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
   printf("helloworld");
   system("PAUSE");
   return EXIT_SUCCESS;
}


da yapabilirsin.


"Milliyetin çok belirgin vasıflarından biri dildir. Türk milletindenim diyen insan, her şeyden evvel ve mutlaka Türkçe konuşmalıdır. Türkçe konuşmayan bir insan, Türk kültürüne, topluluğuna bağlılığını iddia ederse buna inanmak doğru olmaz."

erginemr

#6
@esrama,

C konusunda forum alt başlığımızda güzel bilgiler var:
http://forum.ubuntu-tr.net/index.php/board,111.0.html

Ama ben size, geçenlerde rastladığım ve çok beğendiğim, C'yi kolay bir dille anlatıp başlangıç seviyesinden ortaya yakın bir seviyeye getiren bir forum başlığını önermek istiyorum:
http://www.turkish-media.com/forum/index.php?showtopic=1211

esrama

Teşekkürler ! Bne veridğniiz linklere gözatacağım. Bu arada sanırım gene aynı yerden kaynaklanan bir sorunum çıktı :(

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int kapi, fiyat;
    char renk;
    printf("Arabanizda kaç kapi vardir?\n");
    scanf("%d", &kapi);
    if (kapi==4)
    {
             printf("Arabanizin renginin baş harfini girin\n");
             scanf("%i", &renk);
             if (renk==m)            hata bu satırda!!!!!!!!!!!!!!!
             {
                         printf("Arabanizin fiyati nedir?(YTL)\n");
                         scanf("%d", &fiyat);
                         if (fiyat<=30000)
                         {
                                         printf("Arabaniz kriterlerimize uygundur\n");
                         }
                         else
                         {
                             print("Arabaniz cok pahali\n");
                             system("PAUSE");   
                             return 0;
                         }
             }
             else
             {
                 print("Arbanizin rengini beğenmedik\n");
                 system("PAUSE");   
                 return 0;
             }
    }
    else
    {
             print("Arabanizin kapi sayisini uygun değil\n");
             system("PAUSE");   
             return 0;
    }
system("PAUSE");   
return 0;
}


Dev C hata bu satırda yazdığım yerde error veriyor. Sanırsam main kısmında yazdığım int yüzünden oluyor bu :( yanlış mı anladım ?

matafleur

Alıntı yapılan: erginemr - 25 Aralık 2008 - 18:11:55

Ama ben size, geçenlerde rastladığım ve çok beğendiğim, C'yi kolay bir dille anlatıp başlangıç seviyesinden ortaya yakın bir seviyeye getiren bir forum başlığını önermek istiyorum:
http://www.turkish-media.com/forum/index.php?showtopic=1211

Merhaba.Aslında C yi ve diğer dilleri bu şekilde anlatan bilgilerin yarardan çok zararı olduğunu düşünüyorum.Olayın ne olduğunu anlatmaktan çok sadece kabaca konu başlıklarını verip daha çok kafa karıştırıyor gibi geliyor bana.Ve C ne yazıkki kabaca öğrenilecek bir dil değil.Çünkü kod yazarken herhangi bir yerde herhangi bir şeye ihtiyaç duyabiliyorsunuz.C yi ya bilirsiniz ya da bilmezsiniz.

Kullanıldığı alanlar düşünüldüğünde C ile kod yazmanın kabaca öğrenmekten çok deneyim gerektiren bir disiplin olduğunu düşünüyorum.

matafleur

Satır 13:    scanf("%i", &renk);

renk değişkeni integer değil char olarak tanımlanmışsın yukarıda.Burada ise bir integer değer atamaya çalışıyorsun.Ya int renk olarak tanımla ya da scanf("%c", &renk); olarak değer ata.


Ayrıca 14. satırdaki m değişkeni önceden tanımlanmamış ve bir ön değer atanmamış.Programın hiç bir yerinde de m değerinin değiştirildiğini göremedim.

esrama

integer değilde ben bir karakter tanımlamıştım başta
char renk;
olan kısımda yaptım bunu
ve i yi c yaptım fakat gene olmadı :( (m mavi olarak düşünmüştüm)

erginemr

Şu şekide yazmanız gerekebilir:
Alıntı Yapif (renk=='m') 

heartsmagic

Ben de tam kodu vereyim, unutmuşuz C'yi (hoş pek öğrenebildiğim de söylenemez :D). PAUSE falan kullanmana gerek yok. If döngüsünü sonlandırmak gereksizdir. Zaten kendisi koşulu sağlamazsa sonlanır. return'lere de gerek yok şu aşamada.

C için sıfırdan başlayıp adım adım ilerlemeye çalış, böylece hazmederek devam edersin. Zira ileride "pointer" kavramına geldiğinde geridekileri iyi biliyor olman sana fayda sağlar. Kodu temizledim ve biraz daha okunaklı hale getirdim:

#include <stdio.h>

int main()
{

  int kapi, fiyat;
  char renk;

  printf("Arabanizda kaç kapi vardir?\n");
  scanf("%d", &kapi);
 
  if( kapi == 4) {

  printf("Arabanizin renginin baş harfini girin\n");
getchar();
  scanf("%c", &renk);

  if (renk == 'm') {
    printf("Arabanizin fiyati nedir?(YTL)\n");

scanf("%d", &fiyat);
        if (fiyat<=30000) {
printf("Arabaniz kriterlerimize uygundur\n");
}
else {
printf("Arabaniz kriterlerimize uygun değildir.\n");
}
}
else {
printf("Arabanizın rengini beğenmedik.\n");
}
}
  else {
printf("Arabanizin kapi sayisini uygun değil\n");
  }

}


Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

esrama


heartsmagic

Bu durumda sorun çözüldü diyebilir miyiz? :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.

mtilhan

Evet eğer o şekilde olmaz ise yukarıda bir değişken açın ve
char m[1]="m"
yazıp
if (renk==m[1])
yaparsınız olması lazım o zman :D
Not: Tam cevap yazacam başkası yazmış :)
You're beatiful but you will never be mine.
Ash nazg durbatulûk, ash nazg gimbatul, ash nazg thrakatulûk agh burzum-ishi krimpatul.

heartsmagic

Bu da bir alternatif ve getchar();'a gerek bırakmaz sanıyorum :)
Hayattan çıkarı olmayanların, ölümden de çıkarı olmayacaktır.
Hayatlarıyla yanlış olanların ölümleriyle doğru olmalarına imkân var mıdır?


Böylece yalan, dünyanın düzenine dönüştürülüyor.