Download as pps, pdf, or txt
Download as pps, pdf, or txt
You are on page 1of 65

Bilgisayar

Programlamaya Giriş

Yrd. Doç.Dr. Nilgün GÜLER BAYAZIT


e-mail:guler@yildiz.edu.tr
Dersin Amacı
 Karşılaştıkları problemleri bilgisayar
ortamında çözebilme becerisi
 Algoritma analiz etme becerisi
Ders Konuları
 Programlamaya giriş: C Dili
 Veri tipleri
 Ekran Giriş/Çıkış komutları
 Program kontrol ifadeleri
 Döngüler
 Fonksiyonlar
 Pointer’lar
 Stringler
Kaynaklar
 Ders Notları

 C How TO Program,
Deitel & Deitel, 4th
edition.
Puanlama
 1. Vize (%20)
 2.Vize (%25)
 Ödevler (%15)
 Final (%40)
Genel Kavramlar
TOC
Bilgisayarın Temel Birimleri
Bilgi Saklama
Bilgisayara İstediğimiz İşleri Nasıl Yaptırırız
C Programlama Dili Nedir?
C Programının Derlenmesi
Bilgisayar

Bilgisayar

Donanım Yazılım
(Hardware) (Software)
Bilgisayarın Temel Birimleri
Bilgisayarda Bilgilerin
Kodlanması
 Bilgisayarda bilgiler, iki farklı durumun
belirlenmesi ile kodlanır.
 Bu iki farklı durum:
 Bir telden akım geçip geçmemesi,
 Bir kartın delinip delinmemesi
 Manyetik şerit üzerinde bir bölgenin N veya S kutup
 Matematiksel olarak bu iki farklı durum
0(sıfır) ve 1 (bir) ile gösterilir.
Bilgi Saklama

Bir Bit Bilgi Saklama

Bir Bayt Bilgi Saklama

Bir bayt alanı içinde 256 (28) farklı bilginin saklanması mümkündür.
Bilgi Saklama

(101)2 = (1 x 22) + (0 x21) + (1 x 20)

(101)2 = (1 x 4) + (0 x 2) + (1 x 1) = (5)10
Bilgi Saklama
0 1 2 3 4 5 6 7 8 9
0 nul soh stx etx eot enq ack bel bs ht
1 nl vt ff cr so si dle dcl dc2 dc3
2 dc4 nak syn etb can em sub esc fs gs
ASCII 3 rs us b ! " # $ % & ‘
4 ( ) * + , - . / 0 1
Karakter 5 2 3 4 5 6 7 8 9 : ;
6 < = > ? @ A B C D E
Seti 7 F G H I J K L M N O
8 P Q R S T U V W X Y
9 Z [ \ ] ^ _ ` a b c
10 d e f g h i j k l m
11 n o p q r s t u v w
12 x y z { | } ~ del
Problem çözme
 Problem çözmede, soruna hemen girişmek
yerine, dikkatli ve sistematik yaklaşım ilke
olmalıdır.
 Problem iyice anlaşılmalı ve mümkün olduğu
kadar küçük parçalara ayrılmalıdır.
“Discourse on Methods”
Descartes
 Doğruluğu kesin olarak kanıtlanmadıkça, hiç birşeyi
doğru olarak kabul etmeyin; tahmin ve
önyargılardan kaçının
 Karşılaştığınız her güçlüğü mümkün olduğu kadar
küçük parçalara bölün
 Düzenli bir şekilde düşünün; anlaşılması en kolay
olan şeylerle başlayıp yavaş yavaş daha zor ve
karmaşık olanlara doğru ilerleyiniz
 Olaya bakışınız çok genel, hazırladığınız ayrıntılı
liste ise hiçbir şeyi dışarıda bırakmayacak kadar
kusursuz ve eksiksiz olsun
Bilgisayara İstediğimiz İşlemleri
Nasıl Yaptırırız?
 Algoritmalar:
 Belirli bir görevi yerine getiren sonlu sayıdaki
işlemler dizisidir.
Her algoritma aşağıdaki
kriterleri sağlamalıdır.
 1.Girdi: sıfır veya daha fazla değer dışarıdan
verilmelidir.
 2. Çıktı: En azından bir değer üretmeli
 3. Açıklık: Her işlem(komut) açık olmalı ve
farklı anlamlar içermemeli
 4. Sonluluk: Her türlü olasılık için algoritma
sonlu adımda bitmeli
 5. Etkinlik : Her komut kişinin kalem veya
kağıt ile yürütebileceği kadar basit olmalı
Bilgisayara İstediğimiz İşlemleri Nasıl Yaptırırız?

Algoritma
Örnek: Telefon Etmek
1. Başla
2. Ahizeyi kaldır
3. Sinyali kontrol et, sinyal yoksa arızaya haber ver ve 9. adım’a git
4. Eğer telefon numarası yurt dışında ise iki kere sıfır tuşuna bas ve
ülke ve alan kodunu tuşla, 6. adıma git
5. Eğer telefon numarası şehir dışında ise bir kere sıfır tuşuna bas ve
alan kodunu tuşla
6. Telefon numarasını tuşla
7. Eğer hat meşgul ise ya da cevap vermiyorsa 9. adıma git
8. Telefon konuşmasını gerçekleştir
9. Telefonu kapat
10. Bitiş
Bilgisayara İstediğimiz İşlemleri Nasıl Yaptırırız?

Akış Şeması
Komut İşlem (Process): Yapılması istenen işlemle ilgili tanımlamalar

Koşul Karar (Decision): Bir karara bağlı olarak farklı yolların izlenmesi

Veri Veri (Data): Her farklı veri grubu için farklı isim verilmelidir.

Doküman Doküman: Çıktı olarak gösterilmek istenen veriler ve işlemler

Bağlantı: Büyük yazılımlarda bir sonraki sayfadaki işlemlerin


A hangi noktadan devam edeceğini göstermesi

Başla/Bitir Başla/Bitir: Akış şemasının başlangıç ve bitiş noktaları


Bilgisayara İstediğimiz İşlemleri Nasıl Yaptırırız?

Başla

Örnek: Telefon Ahizeyi kaldır


Etmek
Sinyal Hayır Arızaya haber ver
var mı?

Evet
Bir kere sıfıra İki kere sıfıra
Evet Şehir Hayır Yurt Evet
bas ve şehir bas ve ülke , alan
dışı mı? dışı mı?
kodunu tuşla kodunu tuşla

Hayır

Telefon
numarasını
tuşla

Telefon
Hayır Meşgul/ Evet Telefonu kapat
konuşmasını
cevap yok?
gerçekleştir

Bitir
Yazılım(Software)
 İşletim Sistemi
(MS Windows xx, Unix, IBM –OS, etc)
 Database Programları
(Oracle, Sybase, MS SQL Server, etc.)
 Office programları
(Word, Excel, Powepoint)
 Programlama dilleri
(QBasic, Fotran, Pascal, C, C++, .Net etc.)
Programlama Dilleri Tarihçesi
(Sembolik kodlar)

 Assembly (makina kodu)


 FORTRAN (FORmula TRANslation –1954)
(matematiksel işlem ağırlıklı, bilgisayara bağımlılık
göstermeyen bilimsel çalışmalarda kullanılmak üzere)
 COBOL (Common Business-Oriented Language)
(Bilgi depolamak ve işlemek)
 Yüksek seviyeli diller (PL/I, Algol,
Pascal, Basic,...)
Dillerin Karşılaştırması
 Düşük seviyeli Diller
 Hızlıdır
 Yüksek Seviyeli Diller
 Kolay anlaşılır
 Kolay yazılabilir
 Her bilgisayarda uygulanabilir
 Çok hızlı programlar yazmak mümkün olmamıştır
Programlama Dilleri Türleri
 Sırasal diller (Q basic)
 Yapısal Diller (pascal, C)
 Nesne Yönelimli Diller (C++, Java,
EIFELL, .Net)
C’nin Kısa Öyküsü
 1970 AT&T Bell Lab. Dennis M.Ritchie
 B dili üzerine kurulu bir yapı
 Unix işletim sisteminin yazımı için yaratıldı
 Bell Lab., Akademik çevre, askeri proje
 1975 yılından itibaren her yerde...
C’nin avantajları
 C’de yazılan programlar Assembler’a göre daha kısa
zamanda yazılabilir, daha anlaşılabilir ve daha hızlıdır
 C derleyicileri sahip oldukları geniş fonksiyon
kütüphaneleri ve zengin işlemci grubu sayesinde
esnek bir yapıya sahiptir.
 İfadelerden tasarruf sağlar:normal matematiksel
ifadeler, C’nin zengin operatörleri vasıtasıyla çok daha
kısa ve basit bir biçime getirilebilir.
 Diğer sistemlere adapte edilebilen büyük programlar
hızlı bir şekilde kolayca yazılabildiği için özellikle
sistem programlamalarında tercih edilir.
C Programlama Dili Nedir?

Makine diliyle iki sayıyı toplamak:


01000011100011010000111000...

Assembly diliyle iki sayıyı toplamak:


LOAD X
ADD Y
STORE Z

• C derleyicisi bir çok farklı donanım üzerinde çalışabilir.


• C ile sistem üzerinde en alt düzeydeki fonksiyonlara erişilebilir
• C ile yazılmış olan programlar oldukça hızlı çalışabilmektedir.
C Programının Derlenmesi

1. Programın yazılması
2. Yazım kuralları kontrolü
3. Ön işlemcinin çalışması ve programın derlenmesi
4. Programın kütüphaneden kullanılan fonksiyonlar ile
bağlanması (Birleştirme)
5. Çalışabilen program kodunun elde edilmesi
6. Programın çalıştırılması
• C Programın fazları: Editor Disk
Program editör yazılır
ve harddiskte saklanır
Önişlemci program
1. Edit Preprocessor Disk kodu işler
Compiler object code
2. Preprocess Compiler Disk yaratır ve hardiskte
saklar
3. Compile Linker Disk Linker object
code libraries’e linkler
Primary Memory
4. Link Loader
Loader programı
5. Load Disk ..
memori’ye yükler.
..
..

6. Execute Primary Memory


CPU her bir
CPU Instruction’ı alır ve
execute eder

..
..
..
C Programının Derlenmesi
C’nin Program Yapısı
Preprocessor Direktifleri
Global değişken bildirileri
Fonksiyon Prototipleri
Fonksiyon tanımlamaları
main()
{
İfade_1; Programın başlangıcı
İfade_2;
İfade_3;
: İfade Bloğu
.
İfade_N; (Programın ana gövdesi)
}
Programın sonu
C Dilinin Temelleri
Genel Kavramlar
Yazım ve Noktalama Kuralları
C Kütüphaneleri
C Dilindeki Sözcükler
Değer Sabitleri
Veri Tipleri
Değişkenler
Genel Kavramlar

Ana Fonksiyon: main( )

int main(void)
{
program_komutları
return(0);
}
Genel Kavramlar

return(

): Fonksiyonun çağrıldığı yere geri
dönmesini sağlar. main( ) fonksiyonu içinde
kullanılan return() komutu programın
sonlandırılarak işletim sistemine geri dönülmesini
sağlar.
Genel Kavramlar

Örnek Program

#include <stdio.h>
int main (void)
{ printf("Merhaba Dunya");
return(0);
}

Çıktı: Çıktı:
Genel Kavramlar

printf(): çıktı fonksiyonu ekrana çeşitli çıktıların yazılması

printf(“format_dizgisi”);

Bu fonksiyonun programımız tarafından kullanılması için


<stdio.h> kütüphanesinin program başında
tanımlanması gerekir.

#include <stdio.h>
Genel Kavramlar

Örnek Program
Ekranda “Bu benim ilk programim.” cümlesini görüntüleyecek
programı yazınız.
#include <stdio.h>
int main(void)
{
printf(“Bu benim ilk programim. “);
return(0);
}
Çıktı:
Bu benim ilk programim.
Yazım ve Noktalama Kuralları

Noktalı Virgül: Her komutun bittiği yer ‘;’


işareti ile belirtilir.
#include <stdio.h>
Ayraç İşaretleri: C dili bloklardan oluşur. int main(void)
Bloklar ‘{‘ ve ‘}’ ayraç işaretleri içinde {
belirtilen komutların bir araya gelmesi ile printf(“Ilk program“);
oluşur. return(0);
}
Açıklama Satırları: Program içindeki
açıklamanın başlangıç ve bitiş noktaları
“/*” ve “*/” işaretleri ile belirlenmelidir.
Yazım ve Noktalama Kuralları

include <stdio.h>
int main (void)
{
/*Bu program bilgisayarinizin ekranina
Merhaba Dunya kelimelerini yazar.*/
printf(“Merhaba Dunya”);
return(0);
/*Burasi programin sonudur*/
}
Yazım ve Noktalama Kuralları

 Bir bloğu oluşturan tüm include <stdio.h>


komutlar ve açıklama int main (void)
{
satırları ayraç işaretlerine /*Bu program ekrana
göre daha içeride yazılır. Merhaba kelimesini
yazar.*/
printf(“Merhaba”);
 Böylece blokların return(0);
birbirinden ayrılması ve /*Burasi programin
yazılan program kodunun sonudur*/
}
daha anlaşılır bir hale
gelmesi sağlanır.
C Kütüphaneleri

 Yapılan işin özelliğine göre programa dahil edilir.


 Kodu daha önce yazılmış, programcının
kullanımına hazır fonksiyonları içerir.
 Bu fonksiyonların her defasında tekrar tekrar
yazılması engellenmiş olur ve daha standart bir
yapıda yaygın olarak kullanımı sağlanır.
Standart girdi/çıktı: <stdio.h>
Matematiksel işlemler: <math.h>
Dizgiler: <string.h>
C Dilindeki Sözcükler

Özel amaçlı sözcükler

Tanıtıcı isimleri (değişken)

Tanıtıcı isimleri (fonksiyon)


C Dilindeki Sözcükler

Özel Amaçlı Sözcükler


C Dilindeki Sözcükler

Tanıtıcılar: Özel amaçlı sözcüklerin dışında


yapılan tanımlamalardır. Tanıtıcı isimleri
 içinde harf (a ..z, A.. Z), sayı (0..9) veya alt çizgi
(underscore ‘_’) bulunabilir.
 bir harf ya da alt çizgi ‘_’ işareti ile başlamalıdır.
 içinde özel karakterler ( #, $, &, ö, ş “ v.b. ) bulunamaz.
 C dilindeki özel amaçlı sözcüklerden biri olamaz.
 büyük-küçük harfler farklı (case-sensitive) algılanır.

Örnek: ogrenci_yasi _06_yili_ucreti ucret Short


Değer Sabitleri
Tamsayılar: 0-9 rakamlarından oluşan, ondalık değerleri olmayan
sayılardır. Örnek: 3 5
Reel Sayılar: tam ve ondalık kısımları olan sabitlerdir.
Örnek: 5.7 4.2

Karakterler: tek tırnak işareti arasında bulunur.


Örnek: ‘A’ ‘k’
Dizgiler: Çift tırnak işareti “ ” ile tanımlanırlar ve birden fazla
karakterin bir araya gelmesinden oluşurlar.
Örnek: “Merhaba” “2” “aa12aa”
Veri Tipleri
Değişkenler
Program içinde kullanılan temel nesnelerdir.
Farklı tipteki verilerin (int, double, char) bellekte tutulması için
kullanılır.
Bu isimler ile bellek hücrelerine veri aktarabilir ve bu hücrelerde
saklanan veriler program içinde kullanılabilir.
toplam

Bellek görüntüsü

Örnek: char cinsiyet;


double maas;
int x,y;
Başka bir basit program: İki
tamsayının toplanması
#include <stdio.h>
main()
{
int sayi1, sayi2, topla;
printf("İlk tamsayıyı giriniz\n");
scanf("%d",&sayi1);
printf("İkinci tamsayıyı giriniz\n");
scanf("%d",&sayi2);
topla=sayi1+sayi2;
printf("Toplam = %d\n",topla);
return 0;
}
Değişken Kavramı
 Bilginin bellekte belli bir adresten başlıyarak
belli bir uzunluğu işgal etmesi, bilginin
varlığını gösterir ve bu bilginin
isimlendirilmesine değişken denir
Değişken tanımlama
veri_tipi <değişken_adı>;
örneğin:
int x;
char ch, ch1;
float y;
printf ÇIKIŞ Fonksiyonu
Printf (Format Stringi, Değer Listesi);
 Çıkış Format Stringi: “ ”
 Açıklama kısımları
 Çıkış formatının belirtildiği kısımlar: %
 Escape düzeninin verildiği kısımlar: \
Çıkış format karakterleri

Nümerik Değerler için Karakterler için


Tip karakterleri Çıkış biçimi Tip karakterleri Çıkış biçimi
d İşaretli tamsayı c Tek
karakter
i İşaretli tamsayı s string
u İşaretsiz tamsayı % % karakteri
f Gerçel sayı
e Üssel gerçel
sayı
ld Long tamsayı
lf Double gerçel
sayı
ESCAPE Düzeni Karakterleri
\n Kursoru bir alt satırın başına getirir (yeni satır-new line)
\r Kursoru satırın başına getirir (carriage return)
\b Kursoru bir kolon geri çeker
\a Zil sesi verir
\t Yatay tab
\v Printer için yeni satır başı
\f Printer için yeni sayfa başı
\0 NULL karakteri
\\ Sadece \ karakteri
\” Sadece “ karakteri
scanf Giriş Fonksiyonu
Scanf (Format Stringi, Adres stringi)
scanf (“%d”, &a);
scanf(“%d %d”, &x,&y);
scanf(“%s %s”, ad, soyad);
Giriş Format Karakterleri
Tip karakterleri Çıkış biçimi
d İşaretli tamsayı
D Long işaretli
tamsayı
u İşaretsiz tamsayı
U Long işaretsiz
tamsayı
e Üssel gerçel sayı
f Gerçel sayı
lf Double gerçel sayı
c Karakter
s String
Operatörler
 Operatörler belli bir amaca yönelik olarak bir bilgiyi
daha değişik bir forma sokan veya iki bilgiden yeni
bir bilgi edinilmesini sağlayan sembolik araçlardır.
 Atama Operatörü (=)
 Aritmatik operatörler (*, /, +,-,%,++,--)
 Karşılaştırma operatörlerin (>,<,>=,<=,==,!=)
 Mantık Operatörleri (&&, ||,!)
 Adres operatörü (&)
 Boyut operatörü (sizeof)
 Üçlü koşul operatörü (?:)
 Ve diğer operatörler
Atama Operatörü
 Bir değeri bellekteki bir değişkene atamak için eşit (=) karakteri
kullanılır.
 Bu sembol sağındaki değeri solundaki değişkene atar.
int x;
int y=8; /*ilk değer ataması*/
main()
{x=10;
y=x;
t=5; /*yanlış: t değişkeni tanımlanmadı */
}
Aritmatik işlem operatörleri
 C’de tamsayılar ve gerçel
sayıların işlenmesi için
 Birleşik Atama operatörleri
gerekli tüm operatörler Basit hali Kısatılmış hali
mevcuttur. x=x+y x+=y
 İkili Operatörler x=x-y x-=y
 Toplama operatörü (+) x=x*y x*=y
 Çıkartma operatörü (-)
x=x/y x/=y
 Çarpma operatörü (*)
 Bölme operatörü (/)
x=x%y x%=y
 Mod operatörü (%)
 Tekli (Unary) Operatörler
 Arttırma operatörü (++)
 Eksiltme operatörü (--)
Karşılaştırma operatörleri
 Karşılaştırma sonucunun doğru veya yanlış
olmasına dayanan bir sonuç üretir.
 Yanlış ise 0 (sıfır)
 Doğru ise 1 (Bir)
Örnek a=2, b=10 ve c=5
a>b 0 (Yanlış)
a>=2 1(Doğru)
b!=c 1(Doğru)
10==b 1(Doğru)
c<=4 0(Yanlış)
‘a’ > ‘b’ 0(yanlış)
Mantıksal Operatörler
 AND operatörü (&&)
 OR operatörü (||)
 Not operatörü (!)
sizeof Boyut Operatörü
 Verilen bir tipin veya değerin hafızada işgal ettiği
bölgenin bayt olarak sayısını verir.
Kullanımı: sizeof(tip)
cevap
sizeof(char) 1
sizeof(int) 2
sizeof(float) 4
sizeof(double) 8
int x;
sizeof(x) 2
Üçlü Koşul(Ternary)
Operatörü(?:)
 Üçlü koşul operatörü(?:), bir ifadenin doğru
veya yanlış olmasına göre farklı ifadelerin
yerine getirilmesini sağlar.
ifade1 ?ifade2 : ifade3
Örnek: z=max(x,y)
z=(x>y) ? x : y;
Operatörlerde işlem önceliği
ve işlem yönü
Soru1: 5x2+2 fonksiyonun x=4.8 noktasındaki
değerini hesaplayınız.

#include <stdio.h>
main()
{float x, y;
x=4.8;
y=5*x*x+2;
printf(“y=%f”,y);
}
 Soru 2: Yarıçapı 7 olan olan bir dairenin
alanını ve çevresini hesaplayınız
#include <stdio.h>

main()
{float PI=3.14;
float cevre, alan;
int r=7;
cevre=2*PI*r;
printf(“cevre=%f\n”,cevre);
alan=PI*r*r;
printf(“alan=%f\n”,alan);
Soru 3: Vize ve Final notlarından geçme
notunu hesaplayınız

#include <stdio.h>

main()
{float vize, final, ortalama;
vize=60;
final=70;
ortalama=vize*0.60+final*0.40;
printf(“ogrenci %f ile gecti\n”,ortalama);
}

You might also like