Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan

Benzer belgeler
Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

Bigisayar Programlama

C Programlama Dilininin Basit Yapıları

PROGRAMLAMAYA GİRİŞ DERS 2

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Temel Giriş/Çıkış Fonksiyonları

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

C PROGRAMLAMA DİLİNE GİRİŞ

ALGORİTMA VE PROGRAMLAMA I

Fonksiyonlar (Altprogram)

C Konsol Giriş Çıkış Fonksiyonları

ALGORİTMA VE PROGRAMLAMA I

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Metotlar. d e f metot_adı [ ( [ arg [= d e f a u l t ] ]... [, arg [, &expr ] ] ) ] deyim ( l e r ) end

C Programlama printf() Fonksiyonu

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Fonksiyonlar -Genel Test- A

Algoritma ve Programlama: Karar Yapıları ve Döngüler

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Üst düzey dillerden biri ile yazılmış olan bir programı, makine diline çeviren programa derleyici denir. C++ da böyle bir derleyicidir.

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-7 C Programlama Diline Giriş

/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Bölüm 2 - C ile Programlamaya Giriş

Ders 4: Temel Giriş/Çıkış Fonksiyonları

Dr. Fatih AY Tel:

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

Bölüm 9. Altprogramlar ISBN

GENEL GĐRĐŞ-ÇIKIŞ FONKSĐYONLARI. ENF102 Jeoloji 1. #include <stdio.h> printf Fonksiyonu ÖRNEK. printf

MAK 1005 Bilgisayar Programlamaya Giriş. Fonksiyonlar. Prof. Dr. Necmettin Kaya

C PROGRAMLAMA D İ L İ

Eln 1001 Bilgisayar Programlama I

Hafta 13 Fonksiyonlar

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

Mantıksal İşlemler. 7.1 true, false, nil

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

Genel Programlama II

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Internet Programming II

Lambda İfadeleri (Lambda Expressions)

Sınav tarihi : Süre : 60 dak. a) strstr b) strchr c) strcat d) strcpy e) strlen. a) b) d) e) 0

HSancak Nesne Tabanlı Programlama I Ders Notları

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

ALGORİTMALAR. Turbo C Bilgisayarda Problem Çözme Adımları. Bilgisayarda Problem Çözme Adımları.

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Diziler (Arrays) Çok Boyutlu Diziler

NESNEYE YÖNELİK PROGRAMLAMA

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Nesne Yönelimli Programlama

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

Biçem Belirteçleri (Format Specifiers)

HSancak Nesne Tabanlı Programlama I Ders Notları

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Dr. Fatih AY Tel: fatihay@fatihay.net

3.1 Pointer in Yararları

C PROGRAMLAMA D İ L İ

Javascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.

Dr. Fatih AY Tel: fatihay@fatihay.net

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

Veri Yapıları. Amaçlar: Temel Veri Yapılarını Tanımlamalı Veri Yapılarını Veri Modeli ve Türlerini Öğreneceksiniz. İçindekiler:

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

HSancak Nesne Tabanlı Programlama I Ders Notları

Fonksiyonlar 1.1 Fonksiyon Nedir?

Programlama Dilleri 1. Ders 4: Diziler

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

Hafta 12 Karakter Tutan Diziler

Pointer Kavramı. Veri Yapıları

Programlama Dillerinde Kullanılan Veri Tipleri

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-11 Karakter Diziler. Yrd. Doç. Dr. Ümit ATİLA

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER

BİLDİRİM, TANIMLAMA, DEĞİŞMEZLER ve İŞLEVLER

3/3/2011. ENF-102 Jeoloji 1. Akış Diyagramı. Akış Diyagramı Şekilleri

C# Metotlar ve Metot Tanımlama

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

C Programlama Dilinde Değişkenler

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

Bigisayar Programlama (GÜZ 2015)

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

Hafta 8 C Dilinde Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

int faktoriyel(int sayi) { int sonuc = 1; for(int i=sayi;i>0;i--) sonuc*=i; return sonuc; } int main() { int sayi = faktoriyel(5); }

Internet Programming II

Döngüler. 1.1 while döngüsü

Sınav tarihi : Süre : 60 dak. c) En başta #include<stdio.h> yazılmamıştır. c) zt d) Pi e) X0

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Bilgisayarda Programlama. Temel Kavramlar

BÖLÜM 5: TEMEL GİRİŞ/ÇIKIŞ FONKSİYONLARI

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

C Dersi Bölüm 1. Bilgisayar Donanımı

C PROGRAMLAMA D İ L İ

Transkript:

2 C Programlarının Yapısı Bir C programı C fonksiyonlarından oluşur. Bunlar arasında main() adı verilen ana fonksiyon daima olmalıdır. C fonksiyonları programı oluşturan yapıtaşlarıdır. Bir C programının, bilgisayarda çalışabilmesi için şu aşamalardan geçmesi gerekir: 1. Kaynak program: Herhangi bir programlama dilinde text olarak yazılır. 2. Derleyici: Kaynak programın yazıldığı dile ve kullanılacak makinaya uyan bir derleyici gerekir. Derleyici, kaynak programı obj koduna çevirir. 3. Linker: Varsa öteki obj kodları birleştirerek makina diline çevrilmiş (yani çalışabilir) dosyayı yaratır. Bu bölümde en basitten başlayarak C programlarının yapısını örneklerle açıklayacağız. 2.1 En Basit c programı Program 2.1. 1 #i n c l u d e <s t d i o. h> main ( )

14 BÖLÜM 2. C PROGRAMLARININ YAPISI 6 } En basit C pogramı Program 2.1 ile verilendir. Bir C programı bundan daha basit duruma getirilemez. Bu program hiç bir iş yapmaz. Ama bir C programında olması gerekenleri gösteriyor. #include <stdio.h> : Her C programına standart giriş/çıkış işlemlerini yapan stdio.h dosyası çağrılır. Çağrı eylemini #include anahtar sözcüğü yapar ve daima ilk satırda olduğu gibi yazılır. Bu şekilde çağrılan dosyalara başlık dosyaları (header files) denilir. Çok sayıda başlık dosyası vardır. Birbirleriyle ilgili fonksiyonlar bir başlık altında toplanır. Başlık fonksiyonları C kütüpanesindedirler. Bir programa birden çok başlık dosyası çağrılabilir. Kullanıcı isterse başka başlık dosyaları da oluşturabilir. Çağrılan başlık dosyasındaki bütün fonsiyonlar, sanki çağıran programda yazılmış gibi programa katılmış olurlar. Bunun örneklerini ilerleyen bölümlerde bolca göreceğiz. main() : Her C programı main() fonksiyonunu içermelidir. Çünkü programın yapacağı bütün işleri main() fonksiyonu belirler. Bir programda ancak bir tane main() fonksiyonu olabilir. Ama bir C programının içine gerektiği kadar başka fonksiyonlar konulabilir. Bir program içinde başka fonksiyonların nasıl tanımlandığını ve onların main() tarafından nasıl çağrıldığını ilerleyen bölümlerde göreceğiz. () : main adının sonuna konulan () parantezi zorunludur. Aslında her fonksiyonun adının sonuna () parantezi konulmak zorundadır. Derleyici bu parantezi görmezse onun fonksiyon olduğunu anlamaz. Parantezin içine ileride parametreler yazacağız. Şimdilik main fonksiyonunun sonuna () yazılması gerektiğini bilmek yetecektir. () parantezinin başka bir işlevi de operatörlerde öncelik sırasını belirlemektir. Onun nasıl olduğunu operatörleri incelerken göreceğiz. Gövde : } parantezleri main() fonksiyonunun gövdesidir. Programın yapacağı bütün işler } parantezi içine, sırayla, yazılır. Sonra program onları yazıldığı sırayla işletir. Blok : } parantezi bir blok oluşturur. Bir blok içindeki deyimler bir birlik oluşturur. Program yürüyüşü (kontrolü) bir bloka girince, aksi söylenmezse, bloktaki deyimleri sırasıyla işletir.

2.1. EN BASIT C PROGRAMI 15 Program 2.1 de } parantezi (gövde) içine bir şey yazılmadı. Dolayısıyla, program hiç bir iş yapmaz. Şimdi bu programı bir iş yapar duruma getirelim. Yaptıracağımız iş, ekrana merhaba C yazdırmak olacaktır: Program 2.2. #i n c l u d e <s t d i o. h> main ( ) 4 p r i n t f ( " Merhaba C\n " ) ; } Bu programın öncekinden tek farkı 5.satırdaki printf() fonksiyonunun main() fonksiyonunun gövdesine girmiş olmasıdır. printf() bir C fonksiyonudur; () parantezi içindekileri standart çıktıya gönderir. Bizim kullandığımız sistemde standart çıktı ekrandır. Ama standart çıktı olarak, yazıcı vb başka bir çıkış birimi de tanımlanabilir. Bir fonksiyon adının sonuna, onun fonksiyon olduğunu derleyiciye bildirmek amacıyla zorunlu olarak konulan () parantezi içine, varsa fonksiyonun parametreleri yazılır. Parametre değerlerinin çıktıda nasıl biçemleneceği (format) ayrıca belirlenebilir. Örneğimizde printf() fonkiyonunun parametresi Merhaba C metnidir. C dilinde karakter dizilerine string denir. Biz de metin yerine string terimini kullanacağız 1 \n "Merhaba C" stringinin sonuna yazılan \n simgesi bir kaçış karakteridir. Ekrana Merhaba C yazıldıktan sonra imlecin satırbaşı yapmasını sağlar. Böylece, programın ekrana yazacağı yeni string varsa, onu yeni satırın başından başlatır. Kaçış Karakterleri Önüne \simgesi konulan karaktere kaçış karakteri (escape character) denilir. Kaçış karakteri o karakterin işlevinin değişmesi demektir. Kaçış karakteri, asıl işlevinden farklı bir işlev üstlenirler. Çok sayıda kaçış karakteri vardır. Şimdilik sık sık karşılaşacağımız bazı kaçış karakterlerini bilmek yetecektir: 1 Bir programlama dilinin anahtar sözcüklerini Türkçe ye çevirmenin pedagojik olmadığını, öğrenmeyi zorlaştırdığını düşünüyoruz.

16 BÖLÜM 2. C PROGRAMLARININ YAPISI \n (newline, satırbaşı) \t (tab) \v (vertical tab, düşey tab) \f (form feed, new page, yeni sayfa) \ (single quote, tek kesme işareti) \" (double quote, çift kesme işareti) \ (backslash, ters bölü işareti) \b (backspace, bir karakter geri git) \r (carriage return, satırbaşına git) \xdd (hexadecimal olarak ascii kodu [ A için \x41 ] ) \ddd (octal olarak ascii kodu [ A için \101 ]) Deyimin sonu Derleyiciye bir deyimin sona erdiğini bildirmek için, sonuna noktalı virgül (;) konulur. Uyarı 2.1. Bazı derleyiciler fonksiyon adının önüne int yazılmasını ister. Buradaki int 0 ya da başka bir tamsayı değer alır. Bu değerleri derleyici mantıksal değerler olarak algılar. 0 değeri, hiç bir hata olmadan fonksiyonun tamamlandığı anlamına gelir. 0 dan farklı değerler, fonksiyonda hata oluştuğu anlamına gelir. Sözdiziminde hata oluştuğunda, derleme işlemi yapılamaz. Başka bir deyişle derleme hatası oluşur. İyi derleyiciler, hatanın hangi satırda olduğunu bildirir. Böylece, kaynak programdaki hata ayıklanabilir (debug). Bizim kullandığımız derleyici fonksiyonların önüne int konulmasını gerektirmiyor. 2.2 Kaynak Programın Biçemi C dilinde deyimlerin bitişini (;) ile belirttiğimizi söylemiştik. Öyleyse, satırların derleyici açısından bir önemi olmaz. Dolayısıyla, bir satıra birden çok deyim yazılabilir. Ama her deyimin sonunai (;) konulur. Örneğin, deyimi int a,b,c; float gelir, vergi;

2.2. KAYNAK PROGRAMIN BIÇEMI 17 int a,b,c; float gelir, vergi; deyimlerine denktir. Algılamanın kolaylaşması için her deyimin ayrı bir satıra yazılması tercih edilir. Benzer olarak,farklı blokları biraz içerlek (indent) olarak düşey hizada yazmak, bloklar arasına boş satırlar koymak, kaynak programın kolay okunmasını ve algılanmasını sağlar. Ama kaynak programın yazılış biçemi (format) derleyiciyi etkilemez. Hangi biçemde yazılırsa yazılsın, sözdizimi doğru olan kaynak programı derleyici derler. Ne var ki, sözdizimi yanlışı olduğu zaman, hata ayıklama zorlaşır. 2.2.1 Fonksiyon Bildirimi C fonksiyonlarının kullanılışını, ayrı bölümde, daha ayrıntılı olarak ele alacağız. Şimdilik, basit program yapısını açıklayabilmek için gerekseme dyduğumuz fonksiyon bildirimini ve fonksiyon çağrısını kısaca tanımlayacağız. Bir işi yapmak için belirli bir sırayla işlenmek üzere bir araya getirilen deyimlerin oluşturduğu öğedir. Bir C programı en az bir fonksiyon içerir; o da main() fonksiyonudur. main() dışında istenildiği kadar fonksiyon içerebilir. Programın yapacağı işleri yaptıran deyimlerin hepsini, sırasıyla main() fonksiyonunun gövdesine yazmak mümkündür. derleyici buna itiraz etmez. Kaynak programı okuyup değiştirmek, güncellemek isteyenler için böyle yapılması, 5-10 deyim içeren küçük programlarda bir sorun yaratmaz. Ama yüzlerce ve hatta binlerce deyim içeren programlarda, bütün deyimleri main() içine yazılınca, onları düezeltmek, güncellemek çok zorlaşır. Dolayısıyla, belirli işleri yapan deyimleri bir araya getirip main() gövdesi dışında bir yere bir ad vererek yazmak, sonra gerektiğinde onu main() içinde adıyla çağırmak daha uygundur. Bu biçimde yazılan öğelere fonksiyon denilir. Bazı kaynaklarad fonksiyon yerine procedure, subroutine gibi adlar verilir. C dilinde iyi programlar, belirli bir işi yapan deyimleri bir araya getirip onu bir fonksiyon olarak tanımlar. C dilinde iki tür fonksiyon vardır: 1. Kütüphane fonksiyonları 2. Kullanıcı taımlı fonksiyonlar Çok sayıda kütüphane fonksiyonu vardır. Birbirleriyle ilişkili olanlar bir araya getirilip paketler haline getirilmiştir. Örneğin, giriş-çıkış işlemlerini

18 BÖLÜM 2. C PROGRAMLARININ YAPISI yapan fonksiyonlar stdio.h içindedir. Bu pakatlerde olan bir fonksiyonu kullanmak için, programın başına #include <stdio.h> yazmayı öğrendik. Kütüphaneye konulan bu paketlere başlık fonksiyonları diyoruz. Her başlık fonksiyonu #include önişlemcisi ile çağrılabilir. Çağrılan başlık fonksiyonunda olan her şey, çağıran programa girer, sanki o programda yeni yazılmış gibi işlev yaparlar. Kullanıcı tanımlı fonsiyonlar, kütüphanede olmayan, ama programcının gerçekleştirmek için yazdığı deyimlerden oluşan bir birimdir. Fonksiyon bildiriminde belirli bir sözdizimi vardır. Ona uyulmalıdır. Liste 2.1. v e r i \ _ t i p i ad ( p a r a m e t r e l e r ) fonksiyonun g ö v d e s i 4 } Bir fonksiyon bildiriminde (tanımında) belirtilmesi zorunlu olan öğeler şunlardır. Veri_tipi Her fonksiyonun verdiği bir değer ve o değerin bir veri tipi vardır. Ona verdiği (döndürdüğü, return) veri tipi diyoruz. Hiç değer vermeyen fonksiyonların veri tipi void dir. Void boş demektir. Burada, fonksiyon bir değer vermiyor anlamındadır. Bazı dillerde bir iş yapan ama bir değer vermeyen fonksiyonlara procedure denilir. Fonksiyonun bize vereceği değer, fonksiyon gövdesi içine son deyim olarak yazılır. Sözdizimi, return değer; biçimindedir. fonksiyonun adı Her fonksiyona bir ad verilir. Adlandırma kuralına uyularak istenilen bir ad verilebilir. Ama çok sayıda fonksiyon içeren programlarda fonksiyon adları yaptıkları işi çağrıştırı nitelkte olursa, kaynak program daha kolay algılanır. Örneğin, gelir vergisi hesabı yapan bir programa gelir_vergisi_hesapla gibi bir ad verilirse, fonksiyonun ne iş yptığı herkes tarafından anlaşılır. Ama aynı fonksiyona hesap gibi bir ad berilirse, neyin hesabını yaptığı adından anlaşılamaz. Matematikte olduu gibi, C fonksiyonları da bazı değişken değerlerine göre değer verebilirler. Örneğin bir dikdörtgenin alanını bulan alan() fonksiyonu eni 3 birim, boyu 5 birim olan bir tek dikdörtgen için

2.2. KAYNAK PROGRAMIN BIÇEMI 19 Program 2.3. 1 i n t alan ( ) r e t u r n 3 5 ; } diye tanımlanabilir. Ama bunun yerine verilen her dikdörtgenin alanının hesaplayan Program 2.4. 1 i n t alan ( en, boy ) r e t u r n en boy ; } diye tanımlanırsa, boyutları verilen her dikdörtgenin alanını hesaplayabilir. Bunun main() içine nasıl çağrılacağını biraz sonra göreceğiz. Program 2.4 den görüldüğü gibi, parametreler () içine yazılır. Birden çok parametre varsa, aralarına (,) konulur. fonksiyonun gövdesi İkinci satırda başlayan ile başlayan fonksiyon gövdesi, istenen işi yapabilmesi için gerekli olan bütün deyimleri içerir. Son deyim olarak vereceği değer return anahtar sözcüğü ile belirtilir ve fonksiyon gövdesi } ile kapatılır.