BİLGİSAYAR PROGRAMLAMA Ders 3: C ile Programlamaya Giriş

Slides:



Advertisements
Benzer bir sunumlar
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
Advertisements

2. HAFTA 2. Hafta.
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 1: C# ile Programlamaya Giriş
Algoritma.  Algoritma, belirli bir görevi yerine getiren sonlu sayıdaki işlemler dizisidir.  Başka bir deyişle; bir sorunu çözebilmek için gerekli olan.
BİLGİSAYAR PROGRAMLAMA Ders 2: Algoritma ve Akış Şemaları
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA Ders 3: C ile Programlamaya Giriş
ÖTÖ 451 Okul Yönetiminde Bilgisayar Uygulamaları R. Orçun Madran.
BÖLÜM 4 PROGRAMLAMA DİLLERİ. PROGRAMLAMA DİLLERİNDE KULLANILAN VERİ TİPLERİ Bilgisayarda işlenen veriler iki türdür: Sayısal Alfasayısal.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
BİLGİSAYAR PROGRAMLAMA MATLAB Yrd.Doç.Dr. Cengiz Tepe.
Örnek 1 Kullanıcının girdiği bir sayının karesini hesaplayan bir program yazınız.
TC Windows Editörü DevC++. KURULUM PROGRAMIN KURULACAĞI YER BURADA BELİRLENİYOR.
BSE 207 Mantık Devreleri Sayı sistemleri Sakarya Üniversitesi.
PHP Nedir? ● Bir web sayfası oluşturabilmeniz için: ● HTML kullanmalısınız. ● Sayfadaki etkileşimi artırmak için ● JavaScript/VBScript ● Görselliği bütün.
Örnek Sorular Bilgisayar Programlama BIL 107. Soru 1: Ekran çıktısında 66 yazması için boşlukları doldurunuz ______ i = 'A'; printf(____, i__); CEVAP:
Bölüm 5 Döngü Komutları while Komutu while Komutu Diğer Operatörler (Bileşik atama, artırma ve azaltma operatörleri ) Diğer Operatörler (Bileşik atama,
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
1 Bölüm 2 C Dilinin Temelleri Alıştırmalar Bu bölümdeki problemler “C Dersi Çözümlü Problem Kitabı”, N. E. Ça ğ ıltay, C. E. Selbes, G. Tokdemir, ve Ç.
Bölüm 2 C Dilinin Temelleri
BİLGİSAYAR PROGRAMLAMA DERSİ
Excel 2007.
3. DEĞİŞKENLER Değişkenlerin kullanım ve tanımlanma şekli, o dilde program yapmayı ve programların anlaşılırlığını etkileyen önemli faktörlerden biridir.
Printf Bu komut ekrana çıktı veren komuttur. Pascalda kullanılan writeln komutuyla aynı anlamdadır.
C Programlama Dili Çağdaş Hakan Aladağ.
Algoritma ve Programlamaya Giriş
EETE233 Mikrodenetleyiciler ArduIno ile Programlama
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Sayı Sistemleri.
Problem Çözme ve Algoritmalar
PROGRAMLAMA TEMELLERİ
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H03
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı
Algoritma ve Programlamaya Giriş
Algoritma ve Programlamaya Giriş
C PROGRAMLAMA DİLİNE GİRİŞ
BİLGİSAYAR PROGRAMLAMA Ders 4: Koşula Göre İşlem Yapma
Klavye Kullanımı.
Bölüm 3 Atama ve Girdi/Çıktı Komutları
Temel Bilgisayar Bilgileri
PROBLEM ÇÖZME VE ALGORİTMALAR
Bilgisayar Mühendisliğine Giriş
3.hafta METODLAR.
Bölüm 7 İfadeler ve atamalar.
BİLGİSAYAR programlama II
BİLGİSAYAR programlama II
NİŞANTAŞI ÜNİVERSİTESİ
NİŞANTAŞI ÜNİVERSİTESİ
Doğrusal Mantık Yapısı İle Problem Çözme
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA
Bilgisayar Bilimi Koşullu Durumlar.
Sonlu Özdevinirlere Giriş
Bilgisayar II 8 Mart Mart
?: KARŞILAŞTIRMA OPERATÖRÜ
NİŞANTAŞI ÜNİVERSİTESİ
Fonksiyonlar ve Alt Programlar
6. DÖNGÜ (TEKRARLAMA) DEYİMLERİ
Bilgisayar Bilimi Fonksiyon Yazma.
Değerler ve Değişkenler
Prof. Dr. Eşref ADALI Doç. Dr. Şule Gündüz Öğüdücü Sürüm-B
NİŞANTAŞI ÜNİVERSİTESİ
WHILE DÖNGÜSÜ while (şart) { ifade 1; ifade 2; }
NİŞANTAŞI ÜNİVERSİTESİ
BLM-111 PROGRAMLAMA DİLLERİ I Ders-10 Diziler
NİŞANTAŞI ÜNİVERSİTESİ
MTM216 GÖRSEL PROGRAMLAMA
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
C Programlama Diline Giriş
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

BİLGİSAYAR PROGRAMLAMA Ders 3: C ile Programlamaya Giriş

C ile Programlama Bir C programı büyüklüğü ne olursa olsun değişkenler ve fonksiyonlardan oluşur. Bir fonksiyon, hesaplama gibi işlemlerin yapılması için gerekli olan ifadeleri ve hesaplama sırasında gereken değerleri saklamak için kullanılan değişkenleri içerir. Genellikle fonksiyonlar hesaplamanın sonucunu return komutu ile döndürür, fakat bu detaylara sonra değineceğiz. Bütün C programları main adında bir fonksiyonu içermek zorundadır, program bu fonksiyondan başlar. main fonksiyonu içinden başka fonksiyonlar da çağırılır (bu fonksiyonlar önceden yaratılmış kütüphanelerdeki fonksiyonlar da olabilir, sizin tarafınızdan yaratılan da). Bir C programı büyüklüğü ne olursa olsun değişkenler ve fonksiyonlardan oluşur. Bir fonksiyon, hesaplama gibi işlemlerin yapılması için gerekli olan ifadeleri ve hesaplama sırasında gereken değerleri saklamak için kullanılan değişkenleri içerir. Genellikle fonksiyonlar hesaplamanın sonucunu return komutu ile döndürür, fakat bu detaylara sonra değineceğiz. Bütün C programları main adında bir fonksiyonu içermek zorundadır, program bu fonksiyondan başlar. main fonksiyonu içinden başka fonksiyonlar da çağırılır (bu fonksiyonlar önceden yaratılmış kütüphanelerdeki fonksiyonlar da olabilir, sizin tarafınızdan yaratılan da).

İlk Program C dilinde kullanılan standart başlık dosyaları: assert.h locale.h stddef.h ctype.h math.h stdio.h errno.h setjmp.h stdlib.h float.h signal.h string.h limits.h stdarg.h time.h #include komutu ile programda kullanacağımız fonksiyonların (bu programda sadece printf) ait olduğu kütüphaneyi (stdio.h : standart input/output) tanımlarız. #include <stdio.h> main() { int a = 5; printf("sayimiz = %d", a); } Burada bir değişken tanımı yapılmaktadır. int değişkenin veri tipi, sayi değişkenin ismi, 5 ise değişkene atanan ilk değerdir. printf ekrana bir şey yazdırmak için kullandığımız fonksiyondur ("Merhaba Dünya" programında kullanmıştık). %d ifadesinin olduğu yerde sayı değişkeninin değeri decimal (ondalık) biçimde görünecektir. C dilinde her ifade (statement) ; ile biter. İfade bir değişken tanımı, değişkene değer atanması veya bir fonksiyon çağrılması olabilir.

Değişken Tanımlama ve Değişkene Değer Atama Değişken tanımları: int a; tamsayı türünde a adında bir değişken float b; ondalıklı sayı char c; karakter Değişkenlere değer atanması: a = 5; b = 3.75; c = 'A'; c = 65; NOT: Değişken ismi solda, atanacak değer sağda olmalıdır (5 = a; doğru değildir): a = b; a değişkenine b değişkenindeki değeri atar b = a; b değişkenine a değişkenindeki değeri atar char veri tipi aslında 8 bit tamsayı saklar. 'A' karakteri için istersek ASCII karşılığı olan 65 kullanabiliriz. Değişken bir hafıza bölgesine verdiğimiz isimdir. Değer ise o hafıza bölgesinin içeriğidir. Programlarda kullanılan verileri saklamak ve gerektiğinde o veriler üzerinde işlem yapmak için değişkenler kullanılır. Bir değişken tanımı yapıldığında, programlama dili o değişkenin veri tipine göre istenilen büyüklükte bir hafıza bölgesini RAM’de tahsis eder. Tanımlanan değişkene bir değer atandığında, değişken için ayrılan hafıza bölgesine o değer yazılır. Eğer bir değişken herhangi bir fonksiyonun içinde değil de, örneğin main fonksiyonundan önce tanımlandıysa, o değişkene global değişken denir. Global bir değişkene programdaki tüm fonksiyonlar erişebilir.

Değişkenlerde Kısıtlamalar Değişken isminde : ; , . / ' # [ ] ! " $ % ^ & * ( ) { } karakterleri ve boşluk karakteri kullanılamaz. Ancak _ kullanılabilir. Değişken isminin ilk karakteri harf olmalıdır. Yani değişkenler rakamla veya _ ile başlamaz (sayi2 olur 2sayi olmaz). Bir fonksiyon veya prosedürde aynı değişken ismi birçok defa tanımlanamaz (farklı fonksiyonlarda tanımlanabilir). Programlama diline ait bir komut ismi, değişken ismi olarak tanımlanamaz. Genellikle değişken isminde sınır 255 karakterdir. Faklı tipte iki değişkenin birbirlerine atanması veri kaybına neden olabileceğinden bu durumlarda tip dönüşümü fonksiyonları kullanılmalıdır. Bazı dillerde değişken isimlerinde büyük/küçük harf ayrımı yoktur (örn: VB). Abc, abc veya ABC aynı değişkeni ifade eder. C ve C# dillerinde büyük/küçük harf ayrımı vardır.

Sabit (Constant) Değişkenden farkı; tanımlandığı anda atanan değerinin program içinde değiştirilememesidir. Tanımlanması değişken tanımına benzer. Sadece önüne const eklenir. const float PI = 3.142857; Programda PI sabitine atanan ilk değeri sonraki satırlarda kullanabiliriz ama değiştiremeyiz. float A = PI*2; doğru PI = 3.15; hatalı

Veri Tipleri char 8 bit büyüklüğünde tamsayı (karakter) 1 short 16 bit büyüklüğünde tamsayı 2 int (long) 32 bit büyüklüğünde tamsayı 2, 3 long long 64 bit büyüklüğünde tamsayı 2, 3 float tek duyarlıklı (32 bit) kayan noktalı (gerçel) sayı double çift duyarlıklı (64 bit) kayan noktalı sayı long double 128 bit (yada 80 bit) kayan noktalı sayı 1) Her karakterin aslında tamsayı olarak saklandığını belirtmiştik ('A' = 65, 'a' = 97) 2) short yerine short int, long yerine de long int yazılabilir. 3) Eskiden int 16 bit (=short) iken, yeni derleyicilerde 32 bit (=long) olmuştur.

<stdio.h> #include komutu bir kütüphanenin içerdiği bilgilerin (fonksiyonlar, sabitler, …) derleme aşamasında programa dahil edilmesini sağlar. Standart Girdi/Çıktı (G/Ç) kütüphanesi (stdio.h), en çok kullanılan G/Ç (I/O: Input/Output) fonksiyonlarını içerir. Varsayılan girdi aygıtı klavye, çıktı aygıtı ise ekrandır. stdio.h içinde dosyalara bilgi yazan ve dosyalardan bilgi okuyan fonksiyonlar dosyalama dersinin konusudur. Matematiksel işlemler ile ilgili fonksiyonları içeren math.h ve karakter dizileri ile ilgili fonksiyonları içeren string.h kütüphanelerini de ilerde göreceğiz.

Çıktı Fonksiyonları (Ekranda Gösterim) printf Her veri tipi ile kullanılabilen ve verilerin farklı biçimlerde gösterilmesini sağlayabilen en çok kullanılan komutlardan biridir. puts Sadece karakter dizisi (string) görüntüleyebilir. putchar Sadece bir karakteri ekranda görüntüler. putchar(65); putchar(10); putchar(13); A karakterini ekranda görüntüler imleci alt satıra taşır (LF: line feed) satır başına taşır (CR: carriage return)

Girdi Fonksiyonları (Klavyeden Veri Alma) scanf Her veri tipi ile kullanılabilir. Kullanıcı veri girişini ENTER tuşu ile tamamlar. gets Sadece karakter dizisi alabilir. getchar Tek bir karakter değeri aldığı için ENTER’a basılmasını beklemez. Bu komut bazen değer almak amacıyla değil, kullanıcı herhangi bir tuşa basana kadar programı bekletmek amacıyla kullanılabilir (genellikle programların sonunda). Sonraki slaytta yer alan programı yazdıktan sonra, sonuna getchar ve getch uygulayarak farkı gösterelim. Visual Studio ve yeni DevC++ (5.4.1) içinden program çalıştırılırsa, program bittiğinde ekranı kapatmıyor. O nedenle bu komutlara gerek yok gibi, ama bu programın exe’si Windows gezgininden direkt olarak çalıştırılır ise sonucu görebilmek adına gerek var. Komut istemi penceresi açılıp ta oradan çalıştırılır ise yine gerek yok. Bunları tek tek gösterelim. NOT: Programda scanf kullanıldıysa daha alt satırlardaki ilk getchar işlevini yerine getiremez (ikincisi çalışır). Bu soruna neden olmayan conio.h kütüphanesindeki getch komutu kullanılabilir (Fakat bu kütüphane UNIX işletim sistemi ile uyumsuzdur).

İkinci Program #include <stdio.h> main() { int sayi; printf("Bir sayi giriniz : "); scanf("%d", &sayi); printf("Girdiginiz sayi = %d", sayi); } İlk programımızda ilk değer olarak sayi değişkenine 5 değerini atamış ve ekrada göstermiştik. Bu programda, ilk değer atanmamış, sayi değişkenine kullanıcı scanf fonksiyonunu kullanarak değer girmiştir. İlk printf silinip, yerine puts yazılırsa ne olur? Tek fark puts ekrana string’i gösterdikten sonra imleci alt satırın başına alır (printf’te bunun için \n özel simgesi kullanılır). İkinci printf yerine puts kullanılamaz.

Parametre (Argüman) Nedir? Fonksiyonlar isimlerinden sonra gelen parantez içinde farklı değerler verilerek çağrılabilir. Virgül ile birbirinden ayrılan bu değerlere fonksiyonun parametreleri denir. printf fonksiyonu en az bir parametre (format string’i) almalıdır. Eğer bir değişkenin değeri ekranda gösterilecek ise ikinci parametre olarak o değişken yazılır ve ilk parametre olan string içinde %d gibi bir bildirim kullanılarak o değişkenin o konumda hangi veri tipinde gösterileceği belirtilir. scanf fonksiyonu klavyeden girilen veriyi birinci parametresi (format string’i) içindeki veri tipinde ikinci parametre olarak verilen adrese yazar. & operatörü kendisinden sonra gelen değişkenin adresini verir (& kullanılmaz ise programın çalışmayacağını deneyerek gözlemleyebilirsiniz).

Operatörler Aritmetik işlem operatörleri: + - * / % + - * / % Karşılaştırma operatörleri: < <= > >= == != Mantıksal operatörler: && || Atama operatörleri: = += -= *= /= ++ -- mod alma eşit eşit değil ve veya Değişkenin değerini 1 arttırma, 1 azaltma Değişkenin değerini arttırma, azaltma, vs için kullanılırlar. Örneğin: A += 5; ile A = A + 5; aynıdır.

Toplama Programı #include <stdio.h> main() { int A, B, C; printf("ilk sayiyi girin : "); scanf("%d", &A); printf("ikinci sayiyi girin : "); scanf("%d", &B); C = A + B; printf("Toplami = %d", C); } Akış şemasında bu iki printf ile ilgili bir gösterim bulunmamaktadır. Bu iki satırın amacı kullanıcının hangi değere bilgi girdiğini fark etmesini sağlamaktır. Başla A B C=A+B C Dur

Toplama Programı (2) #include <stdio.h> main() { int A, B; printf("iki sayi girin : "); scanf("%d %d", &A, &B); printf("%d + %d = %d", A, B, A+B); } FARKLAR: Toplam sonucu için C değişkeni yok İki sayı aynı scanf ile giriliyor Toplam sonucu gösteriminde daha çok parametre kullanımı var Başla A, B A+B NOTLAR: Kullanıcı sayıları girerken ilk sayıdan sonra space, tab veya enter tuşlarından birini kullanabilir. scanf ve printf format string’i içinde yer alan %d gibi belirteçlerin sayısı kadar değişken, sabit, değer, işlem, vs. parametre olarak verilmek zorundadır. Dur

printf ve scanf ile kullanılan veri tipi belirteçleri ve özel işaretler: Veri tipi belirteçleri %d İşaretli onluk tabanda sayı %u İşaretsiz onluk tabanda sayı %c Karakter %s Karakter dizisi %o İşaretsiz sekizlik tabanda sayı %x İşaretsiz onaltılık tabanda sayı %f Kayan noktalı (float) %lf Kayan noktalı (double) printf ile kullanılan işaretler \n Alt satıra iner \b İmleci bir sola kaydırır \r Return (Enter) tuşu \t Tab (Sekme) tuşu \a Zil sesi \v Bir sonraki satıra geçiş

printf ile formatlı yazdırma: Değişken tanımları: int x = 123456; float y = 22.0 / 7.0; printf("[%10d]\n",x); 10 hanelik yere rakamlar sağa dayalı olarak yazılır. 6 haneli rakam yazılacağından ilk 4 hane boş kalacaktır. Ekran çıktısı: [ 123456] printf("[%-10d]\n",x); ‘-’ işaretinden dolayı sağa değil sola dayalı yazılır. Dolayısı ile son dört hane boş kalacak: [123456 ]

printf ile formatlı yazdırma: printf("[%2d]\n",x); 123456 sayısı 6 haneli olduğu için 2 haneye sığmaz, dolayısı ile tamamı yazılır. Ekran çıktısı: [123456] printf("[%+-10d]\n",x); Rakamın başına ‘+’ işareti eklenir. Artı işaretinden dolayı sondan 3 hane boş kalacaktır:[+123456 ] printf("[%9.3f]\n",y); 9.3f: 9 hanelik yere noktadan sonra 3 hane olacak şekilde sağa dayalı olarak yaz. Nokta işareti de bir hane yer kaplayacak, dolayısıyla ilk 4 hane boş kalacak: [ 3.143]

Dört İşlem Programı #include <stdio.h> main() { int a, b; printf("ilk sayiyi girin : "); scanf("%d", &a); printf("ikinci sayiyi girin : "); scanf("%d", &b); printf("Toplam : %d\n", a + b); printf("Fark : %d\n", a - b); printf("Carpim : %d\n", a * b); printf("Bolum : %d\n", a / b); } ilk sayiyi girin : 35 ikinci sayiyi girin : 7 Toplam : 42 Fark : 28 Carpim : 245 Bolum : 5 İlk sayı ikinci sayıya tam bölünmeseydi ne olurdu? Bu durumda bölümün sonucu 4.99 bile olsa 4 gösterir. a ve b tamsayı değil de kayan noktalı sayı olarak tanımlanırsa hem ondalıklı sayı girişi yapabilir, hem de sonucu ondalıklı olarak görebiliriz.

Dört İşlem Programı (2) #include <stdio.h> main() { float a, b; printf("ilk sayiyi girin : "); scanf("%f", &a); printf("ikinci sayiyi girin : "); scanf("%f", &b); printf("Toplam : %f\n", a + b); printf("Fark : %f\n", a - b); printf("Carpim : %f\n", a * b); printf("Bolum : %f\n", a / b); } ilk sayiyi girin : 5.3 ikinci sayiyi girin : 3.2 Toplam : 8.500000 Fark : 2.100000 Carpim : 16.960001 Bolum : 1.656250 Eğer ondalık kısmında 6 yerine daha az basamak görünsün istenirse printf içinde %f yerine %.2f gibi bir yazım ile 2 basamak olarak sınırlandırılabilir. Bu durumda bölüm sonucu 1.66 olarak görünür. Çarpım sonucundaki küçük hata float yerine double kullanılsaydı olmazdı (16.960000 görünürdü). Bu durumda scanf içinde %lf kullanmak gerekir.

Dört İşlem Programı (3) #include <stdio.h> main() { int a, b; printf("ilk sayiyi girin : "); scanf("%d", &a); printf("ikinci sayiyi girin : "); scanf("%d", &b); printf("Toplam : %d\n", a + b); printf("Fark : %d\n", a - b); printf("Carpim : %d\n", a * b); printf("Bolum : %f\n", (float)a / (float)b); } ilk sayiyi girin : 5 ikinci sayiyi girin : 3 Toplam : 8 Fark : 2 Carpim : 15 Bolum : 1.666667 a ve b tamsayı olmasına rağmen tip dönüşümü sayesinde bölüm sonucu ondalıklı görüntülenir

Örnek 1 : Ekran çıktısı ne olur? #include <stdio.h> main() { printf("Merhaba"); printf("Dunya"); printf("\n"); } printf fonksiyonu çalıştıktan sonra satırbaşı yapmaz. Satırbaşı için \n kullanılmalıdır. Bu programdaki 3 printf 3 farklı satır olarak görüntülenmeyecektir. printf("MerhabaDunya\n");

Örnek 2 : Ekran çıktısı ne olur? #include <stdio.h> main() { char A = 'v'; puts("deneme"); putchar('A'); putchar(13); putchar(10); putchar(66); putchar(A); }

Örnek 3 : Ekran çıktısı ne olur? #include <stdio.h> main() { float sayi1 = 5.9; int sayi2 = 7; printf("%10f %10d\n", sayi1, sayi2); printf("%10.2f %10f\n", sayi1, sayi2); printf("\n%10.2f\n", sayi1 + sayi2); printf("%21s", "Edirne"); printf("\b\b\b\b\b\b\b\b\b\b\b\bTrakya"); } İlk printf’in format string’i içinde %10f ile %10d arasında bir boşluk yer aldığı için 7 sayısı ilk satırın 21. karakteridir. Örnekte görüldüğü gibi tamsayı %f ile gösterilirse sıfır görünür ve \b (backspace) geri giderken silme yapmaz (Edirne silinmiyor).

Alıştırma Sorusu 1 Saniye olarak verilen değeri saat:dakika:saniye olarak gösteren programı yazın (ve akış diyagramını çizin) süreyi girin (sn): 100 0:1:40 süreyi girin (sn): 1000 0:16:40 süreyi girin (sn): 8000 2:13:20 ÖRNEK ÇALIŞTIRMA

Alıştırma Sorusu 2 ÖRNEK ÇALIŞTIRMA Başlangıç koordinatı, fırlatma hızı ve geçen süre verildiğinde bir nesnenin son koordinatını hesaplayan programı yazın ve akış diyagramını çizin (g=9.81). Başlangıç x koordinatı: -1.4 Başlangıç y koordinatı: 4.5 Fırlatma x hızı: 2.34 Fırlatma y hızı: 12.4 Geçen süre (sn): 5.6 Sonuç x koodinatı: 11.704000 Sonuç y koordinatı: -79.880800 ÖRNEK ÇALIŞTIRMA