C PROGRAMLAMA DİLİ YRD.DOÇ.DR. BUKET DOĞAN 1.

Slides:



Advertisements
Benzer bir sunumlar
STRİNG FONKSİYONLARI.
Advertisements

Soru1: 1’den 4’e kadar olan tamsayıları ekrana tek satırda görülecek şekilde yazdıran bir programı aşağıdaki metotları kullanarak yazınız. Bir printf ifadesi.
ALGORİTMA BULUNMASI
BÖLÜM Atama Deyimi (Assignment)
Karar Verme: Eşitlik ve Karşılaştırma Operatörleri
Algoritma ve Akış Diyagramları
Problemi Çözme Adımları
Bölüm 2 C Dilinin Temelleri
switch - case Yapısı Döngü Yapıları
Değişken Tanımlamaları
C Programlama Diline Giriş
Atama ve Girdi/Çıktı Komutları
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
BPR151 ALGORİTMA VE PROGRAMLAMA - I
String Kütüphanesindeki Arama Fonksiyonları
Bölüm 10 Yapılar ve Birleşimler
Algoritma ve Akış Diyagramları
Yapısal Program Geliştirme – if, if-else
ALGORİTMA ve PROGRAMLAMA
Program Kontrol İfadeleri
Soru1: Kullanıcıdan iki tam sayı girmesini isteyen ve daha sonra büyük olan sayı ile beraber ‘en büyüktür’ ifadesi yazan, ancak sayılar birbirine eşitse.
Görsel C# ile Windows Programlama
Bilgisayar Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
FONKSİYONLAR.
ALGORİTMA VE AKIŞ ŞEMASI
DEĞİŞKENLER.
BİLGİ TEK. VE ALG. GİRİŞ YRD.DOÇ.DR. BUKET DOĞAN 1.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Algoritma & Programlama
BİLGİ TEK. VE ALG. GİRİŞ YRD.DOÇ.DR. BUKET DOĞAN 1.
Temel Giriş/Çıkış Fonksiyonları
PROGRAM DENETİM DEYİMLERİ
ENF 204 Bilgisayar Programlama Algoritma ve Akış Diyagramları
TEK Mİ ÇİFT Mİ? TOPLA YA DA ÇIKAR.
Problem Yaklaşım Temelleri, Algoritma ve Akış Şeması
Bölüm 2 C Diline Genel Bir Bakış. 1/29 /* Örnek1- toplama.c Klavyeden girilen iki tamsayının toplamını bulup ekrana yazar. Erkan Yasan */ #include.
Bu Günkü Konular If yapısı ve karşılaştırma operatörleri
Algoritma, bir işin hangi aşamalardan geçilerek yapılacağını gösteren çalışma planıdır. Algoritma Nedir ?
2. HAFTA 2. Hafta.
ALGORİTMA VE AKIŞ ÇİZELGELERİ
Algoritma Mantığı ve Akış Diyagramları
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
BİLGİSAYAR programlama II
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
BİLGİSAYAR programlama II
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
PROGRAMLAMA MANTIĞI, ALGORİTMA PROBLEM ÇÖZME
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları 1.
PROGRAMLAMA TEMELLERİ Burak UZUN Bilişim Teknolojileri Öğretmeni Burak UZUN.
Algoritma ve Akış Şemaları
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
ALGORİTMA VE AKIŞ ŞEMASI
Algoritmanın Hazırlanması
YAPISAL PROGRAMLAMA Hafta-6
PROGRAMLAMAYA GİRİŞ FORTRAN 77.
Bilgisayar Bilimi Problem Çözme Süreci-2.
Problemi Çözme Adımları
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
Algoritma ve Akış Diyagramları
NİŞANTAŞI ÜNİVERSİTESİ
Aritmetik Operatörler
Sunum transkripti:

C PROGRAMLAMA DİLİ YRD.DOÇ.DR. BUKET DOĞAN 1

PROGRAM - ALGORİTMA –AKIŞ ŞEMASI Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Algoritma bir sorunun çözümü için izlenecek yolun tanımıdır Akış şeması belirli bir işin yapılabilmesi için, basit işlemlerle şema halinde gösterilmesidir. Kısaca algoritmanın şemalarla gösterilmesidir. Algoritma geliştirildikten sonra, daha iyi anlaşılabilir olması ve programlama dillerine aktarımı daha kolay olması nedeniyle, akış şeması haline getirilir. Böylece sorunun çözüm basamakları, birbirleri ile ilişkileri ve bilgi akışı daha kolay görülebilir ve yanlışlıklar düzeltilebilir. 2

Bilgisayar ortamında bir problem çözülürken aşağıdaki adımlar izlenir: Soru Tanımlama Algoritma Geliştirme: Algoritma bir sorunun çözümü için izlenecek yolun tanımıdır. Kısaca algoritma mevcut bilgilerden istenilenlere erişme yöntemidir Girdi ve Çıktı Biçimi Belirleme: Sonuçların dış ortama, dolayısıyla insana aktarımı düzgün bir biçimde yapılmalıdır Akış Şemasını Çizme Kodlama: Akış şemaları çizildikten sonra, sorunu yapısına uygun bir programlama dili seçilir. Programı Sınama 3

Algoritma Algoritma, herhangi bir sorunun çözümü için izlenecek yol anlamına gelmektedir. Çözüm için yapılması gereken işlemler hiçbir alternatif yoruma izin vermeksizin sözel olarak ifade edilir. Diğer bir deyişle algoritma, verilerin, bilgisayara hangi çevre biriminden girileceğinin, problemin nasıl çözüleceğinin, hangi basamaklardan geçirilerek sonuç alınacağının, sonucun nasıl ve nereye yazılacağının sözel olarak i fade edilmesi biçiminde tanımlanabilir.

Algoritma Nedir? Algoritma, bir sorunun çözümüne gidebilmek için tasarlanan yollar,yöntemlerdir. Program geliştirme sürecinde işlem veya işlemlerin hangi sırada ve düzende gerçekleşeceğini belirleyen planların yapılması gerekir. Algoritma doğru bir şekilde oluşturulduktan sonra istenen programlama dili ile kodlama yapılabilir.

Algoritma Adım 1- Başla Adım 2- Alacağın Laptop’ın özelliklerini belirle Adım 3- Bu özellikleri taşıyan en performanslı marka ve modeli belirle Adım 4- Bu marka modelin en ucuz satıldığı firmayı araştır Adım 5- Firmadan siparişi ver Adım 6- Ödemeyi yap

Algoritma Adım 1- Başla Adım 2- Tencereye suyu koy Adım 3- Tencereyi ocağın üstüne yerleştir Adım 4- Tencerenin altını hızlıya aç Adım 5- Tencereye tuz ekle Adım 6- Su kaynadıktan sonra makarnayı ekle Adım 7- Ateşin yavaşa al Adım 8- Makarna yumuşadıktan sonra tencereyi indir

ALGORİTMA VE AKIŞ ŞEMASI: TEMEL KAVRAMLAR Algoritmada kullanılan bazı tanım ve kurallar vardır. Şimdi bu tanım ve kuralları inceleyelim. 1.1. Değişken Kavramı: Farklı zamanlarda farklı değerler alabilen bilgi sahalarına verilen sembolik adlardır. Bilgisayar işlem yaparken RAM belleği(geçici bellek) kullanır. İşte program yazılırken programcının Ram belleği kullanmasını sağlayan değişkenlerdir. Değişkenler Ram bellekte tahsis edilmiş odacıklar olarak düşünülebilir. Yani bir değişken tanımlandığında ram bellekte bir odacık (bir bölüm) açılır ve bu bölüme değişken ismiyle ulaşılır. Program içinde kullanılacak olan değişkenler problemin tanımı ve girdi-çıktı belirleme aşamalarında belirlenmelidir. 8

Örnek bir Algoritma İki sayıyı toplamak için gerekli programa ait algoritmanın oluşturulması. Algoritma: A1 :Birinci sayıyı gir A2 :İkinci sayıyı gir A3 :İki sayının toplamını yap A4 :Toplamın değerini yaz A5 :Bitir. 9

ALGORİTMA VE AKIŞ ŞEMASI: TEMEL KAVRAMLAR 1.2. Aktarma Deyimi: Aktarma deyimi yada operatörü değişkenlere değer aktarmak için kullanılır. A=5 yada A=A+1 şeklindeki bir yazılımda “=” sembolü aktarma deyimi adını alır. Aktarma deyiminin sağ tarafındaki değer yada matematiksel ifadenin sonucu, sol tarafındaki değişkene aktarılır. Aktarma yapılırken değişkenin aldığı bir önceki değer kaybolur. Bu işlem matematiksel mantıkla karıştırılmamalıdır. Matematikte A=A+1 yanlış olduğu halde, bilgisayar mantığında doğrudur. 10

Örnek : Beş sayının toplamını ve ortalamasını veren programa ait algoritmanın oluşturulması Toplam adı için T Ortalama adı için Ort Girilen sayılar için X Arttırma için Sayac kullanılırsa Algoritma: A1 :T = 0, Sayac ¬ 0 A2 :X’i gir A3 :T= T+X A4 : Sayac = Sayac +1 A5 :Eğer Sayac <5 ise A2’ye git A6 :Ort= Top/5 A7 :T ve Ort değerlerini yaz A8 :Bitir 11

Örnek : Verilen bir sayının faktöriyelini hesaplayan programın algoritmasının oluşturulması Sayının faktöriyeli :F Faktöriyel degişkeni :X Faktöriyeli hesaplanacak sayı :Y Algoritma: A1 :F=1, X= 0 A2 :Y’i gir A3 :Y<0 ise 2. adımı tekrarla A4 :X= X+1 A5 :F= F*X A6 :X<Y ise 4. adıma geri dön A7 :F değerini yaz A8 :Bitir 12

Örnek : Dışarıdan girilen iki sayının toplamını bulan programın algoritması aşağıdaki gibi kurulur: A1 : Başla A2 : A değerini gir A3 : B değerini gir A4 : C= A+B A5 : C' yi ekrana yaz A6 : Bitir Hangi amaçlarla kaç değişkene ihtiyaç var?

A2 : A, B ve C sayılarını dışarıdan gir A3 : enBuyuk=A Örnek : Dışarıdan girilen 3 sayıdan en büyüğünü bulan algoritmayı kurunuz. Algoritma: A1 : Başla A2 : A, B ve C sayılarını dışarıdan gir A3 : enBuyuk=A A4 : Eğer enBuyuk<B ise enBuyuk=B yap A5 : Eğer enBuyuk<C ise enBuyuk=C yap A6 : enBuyuk değerini ekrana yaz A7 : Bitir Hangi amaçlarla kaç değişkene ihtiyaç var?

A2 : toplam=0;sayac=1 baslangıç değerlerini ata Örnek: 0’dan 100’e kadar olan sayma sayılarının kümülatif toplamını ekrana yazdıran algoritmayı geliştiriniz. A1 : Başla A2 : toplam=0;sayac=1 baslangıç değerlerini ata A3 : Eğer sayac=100 ise 6. adıma git A4 : toplam=toplam+sayac A5 : sayac=sayac+1 yap ve 3. Adıma geri dön A6 : toplam’ı ekrana yaz A7 : Bitir Hangi amaçlarla kaç değişkene ihtiyaç var?

Akış Şemaları Geliştirilecek olan yazılımın genel yapısının şematik gösterimine akış diyagramı veya blok diyagramı adı verilir. Akış diyagramları, yazılımı oluşturacak program parçalarını ve bu parçaların birbirleri ile olan ilişkilerini belirler. Bir bilgisayar programının oluşturulmasında akış diyagramlarının hazırlanması, algoritma oluşturma aşamasından sonra gelmektedir. Bilgisayar programının oluşturulması sırasında algoritma aşaması atlanarak, doğrudan akış diyagramlarının hazırlanmasına başlanabilir. Programlama tekniğinde önemli ölçüde yol almış kişiler bu aşamayı da atlayarak direkt olarak programın yazımına geçebilirler. Akış diyagramlarının algoritmadan farkı, adımların simgeler şeklinde kutular içinde yazılmış olması ve adımlar arasındaki ilişkilerin (iş akışı) oklar ile gösterilmesidir. 16

Simge Simgenin Adı ve Anlamı Elips Akış diyagramının başlangıç ve bitiş yerlerini gösterir. Başlangıç simgesinden çıkış oku vardır. Bitiş simgesinde giriş oku vardır.  Paralel Kenar: Programa veri girişi ve programdan elde edilen sonuçların çıkış işlemlerini gösterir.   Dikdörtgen Aritmetik işlemler ve değişik atama işlemlerinin temsil edilmesi için kullanılır. Eşkenar Dörtgen Bir karar verme işlemini temsil eder.     Altıgen Program içinde belirli blokların ard arda tekrar edileceğini gösterir. Oklar Diyagramın akış yönünü ,yani her hangi bir adımdaki işlem tamamlandıktan sonra hangi adıma gidileceğini gösterir. Programa ait sonuçların ekrana yazdırılması 17

Akış Şemaları (Karar Verme Yapıları) İŞLEM c<2 DOĞRU 18

Akış Şemaları (Tekrarlı Yapı) 19

İki sayının toplamını ve ortalamasını yapan bilgisayar programının akış diyagramını çiziniz.  Ortalama, Toplam 20

1’den 100’e kadar olan sayıların toplamlarını ve ortalamalarını veren programın akış diyagramını çiziniz. Ortalama, Toplam 21

A²+Bx+C=0 şeklinde verilen 2 A²+Bx+C=0 şeklinde verilen 2. derece denklemin köklerini bulan programın akış diyagramını Kökler Sanal X1,X2 22

MAX ‘ı ekrana yaz MAX  A STOP Y N Başla A,B değerini giriniz MAX B

Başla Notu giriniz hayır evet hayır evet bütünleme orta evet iyi Bitir

1’ den 100’e kadar sayıların karelerini, kareköklerini, küplerini, küpköklerini toplamlarını ve ortalamalarını veren programın akış diyagramını çiziniz Ortalama, Toplam 25

10 tane N sayısının faktöriyelini hesaplayan programın akış diyagramını çiziniz. 26

Örnek 12: p sayısının formülü olduğuna göre serinin paydasındaki ifade 100 oluncaya kadar pi sayısını hesaplayan bilgisayar programının akış diyagramını çiziniz. Pi 27

Programlama Dillerinin Seviyelerine Göre Sınıflandırılması Önce seviye kavramının ne anlama geldiğini açıklamak gerekmektedir. Seviye, bir programlama dilinin insan algılamasına olan yakınlığının bir ölçüsüdür. Yüksek seviyeli diller insan algılayışına daha yakın, alçak seviyeli diller de bilgisayarın doğal çalışmasına daha yakın olan dillerdir. Dillerdeki seviye yükseldikçe programcının işi de kolaylaşır. Öyle ki, çok yüksek seviyeli programlama dillerinde artık bir işin nasıl yapılacağına ilişkin değil, ne yapılacağına ilişkin komutlar bulunur. Seviyenin yükselmesi programcıya kolaylık sağlamakla birlikte genel olarak verimliliği ve esnekliği de azaltır. 28

Orta Seviyeli Programlama Dilleri (C) Çok Yüksek Seviyeli Programlama Dilleri ya da Görsel Diller (FOXPRO, PARADOX, ACCESS.., VISUAL BASIC, IV.KUŞAK DlLLER) Yüksek Seviyeli Programlama Dilleri (PASCAL, COBOL, FORTRAN, BASIC,...) Orta Seviyeli Programlama Dilleri (C) Alçak Seviyeli Programlama Dilleri (Sembolik Makine Dilleri) 29

C NASIL BİR DİL?.. Orta seviyeli bir dildir. Yazılan C kodu ile makina kodu arasında bağlantı kolaylıkla kurulabilir. Sistem programlama dilidir. Bugün işletim sistemleri, derleyiciler, editörler gibi sistem programlarının hemen hepsi yoğun olarak C kodu içermektedir. Ancak sistem programlamanın dışında da birçok uygulamada C verimli olarak kulla­nılabilir. Algoritmik bir dildir. Yalnızca dilin sintaks ve semantik yapısını bilmek yet­mez. Problemleri çözebilecek bir algoritma bilgisine de ihtiyaç duyulur. Diğer diller arasında taşınabilirliği en fazla olanlardan biridir. İfade gücü yüksek ve okunabilirlik özelliği kuvvetli bir dildir. Çok esnektir. Bu yüzden programcının hata yapmayacak bir bilgiye ve deneyime sahip olması gerekir. Atomik bir dildir. Cde altprogramlama tekniği ileri düzeyde kullanılmakta­dır. Güçlü bir dildir. Tasarım özellikleri çok iyidir. Cye ilişkin yapıların ve ope­ratörlerin bir kısmı daha sonra diğer diller tarafından da benimsenmiştir. Verimli bir dildir. C programları seviyesi dolayısıyla daha hızlı çalışır. Doğal bir dildir. C bilgisayar sisteminin çalışma biçimiyle uyum içindedir. C++ ile nesne yönelimlilik özelliğine de sahip olmuştur. 30

PROGRAMIN ÇALIŞMASI source --- compiler -----> object -----> link kaynak derleyeci amaç bağlama kaynak kod : C dili ile yazılmış olan program. derleyeci : Kaynak kodu makina koduna çevirir amaç kodu : Kaynak kodun makina dilindeki karşılığı bağlama : Birden fazla amaç kodu dosyasının tek dosyada birleştirilmesi 31

İLK PROGRAM #include<stdio.h> #include<conio.h> main() {         printf("Bu bir satirlik yazidir."); } 32

VERİ TİPLERİ Int Tip Integer = Tamsayı Tamsayıları içerir. Bellekte 2 Byte tutar. 5 , -19 , 25000 gibi Minimum : -231 = -32768 Maksimum : 231-1 = 32767 Long tip Uzun tamsayı. Bellekte 4Byte tutar. Minimum :-2,147,483,648 . Maksimum :2,147,483,647 33

VERİ TİPLERİ Gerçel Tipler (Float, Double) Gerçel sayıları içerirler. float : Bellekte 4 Byte yer tutar. 3.4E-38 ile 3.4E+38 aralığında değer alır. Hassasiyet 7-8 basamaktır. double : Bellekte 8 Byte ter tutar. 1.7E-308 ile 1.7E308 aralığında değer alır. Hassasiyet 15-16 basamaktır. NOT: Bilimsel gösterim biçimi 2.5*103 = 2.5E3 2.5*10-3 = 2.5E-3 34

VERİ TİPLERİ Char Tip Char : Karakter : Alfanumerik karakterleri içerir. '5' , '*' , 'K‘ gibi 35

VERİ TİPLERİ Tip Aralık unsigned char char unsigned int int Uzunluk (Byte) unsigned char char unsigned int int unsigned long long float double long double 0 .. 255 -128 .. 127 0 .. 65,535 -32,768 .. 32,767 0 .. 4,294,967,295 -2,147,483,648 .. 2,147,483,647 3.4 * (10**-38) .. 3.4 * (10**+38) 1.7 * (10**-308) .. 1.7 * (10**+308) 3.4 * (10**-4932) .. 1.1 * (10**+4932) 1 2 4 8 10 36

Belirleyiciler (Identifier) Bileşenlere isim verme Kısıtlamalar İlk karakteri rakam olamaz Sadece harfler, rakamlar ve _ (underscore) karakterinin birleşiminden oluşabilir. C diline ait saklı (reserved) sözcükler kullanılamaz. En fazla 31 karakter olabilir. Küçük - büyük harf ayırımı vardır. 37

Matematiksel ifadeler % tamsayı bölme sonucundaki kalanı verir (modulus) 7.0/ 2 ---> 3.5 (nokta sayının gerçel yorumlanmasını sağlar) 7 / 2 ---> 3 (sayılar int kabul edilip sonuçta int tipine dönüştürülür) 7 % 2 ---> 1 2 % 7 ---> 2 2 / 7 ---> 0 Matematiksel ifadeler hesaplanırken izlenen adımlar: 1. Önce parantez içindeki ifadeler hesaplanır. İçiçe parantezler var ise hesaplamaya en içteki parantezden başlanır. 2. ilk önce * , / ve % işlemleri daha sonra + ve - işlemleri yapılır. Öncelik sırası aynı olan işlemlerde hesaplama soldan sağa doğru yapılır 38

Bir C Programının Genel Yapısı başlık dosyaları: Kullanılan deyimler ile ilgili main() { sabitler ; sabitlerin tanımlama bölümü değişkenler; değişkenleri tanımlama bölümü deyimler; Program gövdesi } 39

printf Program içinde istenen değerleri çıktı birimlerine göndermek için kullanılır. Normal kullanımında çıktı birimi olarak ekran kabul edilir. Kullanım biçimi: printf( kontrol, <parametreler>) <kontrol> ile belirtilen bilgiye göre parametreleri yazar. Kontrol metini iki kısımdan oluşur. sıradan karakterler: doğrudan yazılırlar. dönüşüm/biçim belirleyici karakterler: Değerlerin nasıl yazılacağı bildirilir. printf(" sonuç = %d", k); 40

DÖNÜŞ KARAKTERLERİ %d : decimal (integer) % f : float/double sayıyı mmm.nnnnn biçiminde yaz % u : unsigned decimal % c : char (tek karakter) % s : string % e : float/double sayıyı bilimsel gösterimde yaz % ld : long integer % lu : unsigned long integer % Le,Lf : long double ESC dizileri : \n : satır başı, \a : zil , \t : tab, \b : bir karakter geri 41

ÖRNEKLER i = 5 ; printf("%d",i) ; 5 printf("‘Sayı=%d",i) ; Sayı=5 printf("i=\n") ; i= printf("%d",i) ; 5 alt satıra geçer printf('i=%d\n",i) ; i=5 alt satıra geçer printf("%d %d",i, 5*i); 5 25 42

#include<stdio.h> #include<conio.h> main() {         printf("Bu bir satirlik yazidir.\n");         printf("Bu bir baska ");         printf(" satirdir.\n");         printf("Bu ucuncu satirdir.\n"); } 43

const tip Belirleyici=değeri; const float PI=3.14; CONST (sabit) : Değeri programın çalışması boyunca değiştirilemez. Kullanım biçimi const tip Belirleyici=değeri; const float PI=3.14; Tip belirtilmez ise tamsayı kabul edilir. DEĞİŞKENLER Değeri programın çalışması boyunca değiştirilekir. Kullanım biçimi: Tip Belirleyici [,Belirleyici] ; int i; float alan; 44

Örnek : Yarıçapı belli dairenin alanını hesaplayan programı yazınız. (ilk yazılan program) #include <stdio.h> main() { const float PI=3.14; float r, alan; r = 7; alan = PI*r*r; printf(“Dairenin Alanı = %f”, alan); } 45

main() {         int index;         index = 13;         printf("Indexin degeri simdi %d\n",index);         index = 27;         printf("Indexin degeri simdi %d\n",index);         index = 10;         printf("Indexin degeri simdi %d\n",index); } 46

Klavyeden üç kenar uzunluğu girilen üçgenin çeşidini bulan programın akış şeması

BILGI SATIRLARI NASIL EKLENIR /* Bu satiri, derleyici kullanmaz */ /* arası derleyici için anlamsızdır*/ 48

m : yazılacak değer için ayırılan alan Biçimli yazdırma % karakteri ile dönüşüm karakteri arasına aşağıdaki karakterler de kullanılabilir.  %m.n f m : yazılacak değer için ayırılan alan n : ondalık değerin kaç karekteri yazılacağı x = 128.5 ; printf("%7.2f",x) ; # 128.50 x = 85.47 ; printf("%6.3f",x) ; 85.470   printf("%6.1f",x) ; ## 85.5 49

float a,b,c; scanf İşlevi Klavyeden veri okumak için kullanılır. Yapı olarak printf işlevi ile hemen hemen aynıdır. Kullanım biçimi:   scanf( format, &değişken)   Girilen değerler, belirtilen biçimlere göre değişkenlere aktarılır. Değişkenler işaretçi tipinde olmalıdır. Yani parametre olarak değişkenin adresi gönderilmelidir. int i; scanf (“%d”, &i); float a,b,c; scanf("%f %f %f ", &a, &b, &c); 50

if (ort>=50 && final>=50) #include<stdio.h> #include<conio.h> main() { float vize, final, ort; printf(“\n Vize notunu giriniz “); scanf(“%f”, &vize); printf(“ \n Final notunu giriniz “); scanf(“%f”, &final); ort = vize * 0.4 + final * 0.6; if (ort>=50 && final>=50) {printf(“\n Gectiniz”); printf(“\n Öğrencinin Ortalaması = %f”, ort);} else printf(“\n Bütünleme”); getch(); } 51

Mantıksal ifadeler İlişkisel işleçler(operatör) : iki değer arasındaki ilişkiyi test etmek için kullanılır. işleç anlamı > büyük >= büyük - eşit == eşit < küçük <= küçük - eşit != eşit değil 52

Mantıksal işleçler İki mantıksal ifade arasındaki ilişki üzerindeki ilişkide kullanılır. ! DEĞİL (NOT) && VE (AND) || VEYA (OR) (X>0) && (X>Y) (X>0) || (Y>0) 53

İfadelerde işleçlerin yürütülme sırası işleç Önceliği ( ) en yüksek (ilk yürütülür) ! *, /, % +, - <, <=, >=, > ==, != &&, || = en düşük (son yürütülür) 54

Unary Gösterim a+=b a=a+b a-=b a=a-b a*=b a=a*b a/=b a=a/b a%=b a=a%b a++ a=a+1 a-- a=a-1 55

#include<stdio.h> #include<conio.h> main() { int   toplam; float kilo; char  harf; double avagadro; toplam = 30; /* integer değer atama*/ kilo = 68.5; /* float değer atama*/ harf = 'A'; /* harf değeri atama*/ avagadro =6.02E23; /* double değer atama*/ printf("toplam sayısının değeri= %d\n", toplam ); printf("kilo değişkeninin değeri= %6.1f\n", kilo ); printf("harf değişkenin değeri= %c\n", harf); printf("avagadro sayısının değeri = %e\n", avagadro ); getch(); } 56

#include<stdio.h> #include<conio.h> main() { float fiyat,kdv; float kdvli; printf(“\n kdv oranını giriniz “); scanf(“%f”, &kdv); printf(“\n Ürün fiyatını giriniz “); scanf(“%f”, &fiyat); kdvli= fiyat+(kdv*fiyat)/100; printf(“\n Ürünün Kdv li fiyatı = %f”, kdvli); getch(); } 57

#include<stdio. h> #include<conio #include<stdio.h> #include<conio.h> main() { float fahrenhayt,derece; printf(“\n sıcaklığı fahrenhayt cinsinden giriniz”); scanf(“%f”, &fahrenhayt); derece=(fahrenhayt-32)*5/9; printf(“\n Sıcaklık= %f derecedir”, derece); getch(); } 58

/. mod operatoru ile girilen saniyeyi dakikaya ceviriyor /* mod operatoru ile girilen saniyeyi dakikaya ceviriyor */ #include<stdio.h> #include<conio.h> main() { int saniye,dakika,kalan; printf(" zamani saniye olarak giriniz \n"); scanf("%d",&saniye); dakika=saniye/60; /* tamsayi bolmesi yapiyor*/ kalan=saniye % 60; /* mod aliyor */ printf("%d saniye, %d dakika ve %d saniye yapiyor", saniye,dakika,kalan); getch(); } 59

#include<stdio.h> #include<conio.h> main() {int r1,r2; Klavyeden girilen paralel iki direncin, toplam direnc değerini hesaplayan programı yapınız #include<stdio.h> #include<conio.h> main() {int r1,r2; float toplam; printf(“\n Birinci direnc degerini giriniz “); scanf(“%d”, &r1); printf(“\n İkinci direnc degerini giriniz “); scanf(“%d”, &r2); toplam=(r1*r2)/(r1+r2); printf(“\n Toplam direnç değeri=%f”,toplam); getch();}

if-then-else Deyimi  Birkaç seçenekten birini seçmek veya bir deyimin bir koşula bağlı olarak işlemek için kulanılır.   if (mantıksal ifade) { blok_doğru;} else { blok_yanlış;} Mantıksal ifade doğru ise blok_doğru, yanlış ise else sözcüğünden sonraki blok_yanlış yürütülür. else kısmı seçimlidir, gerekmiyorsa kullanılmayabilir. 61

Girilen sayının tek/çift olduğunu yazan program #include <stdio.h> #include<conio.h> main() { int i; scanf("%d", &i); if ( i % 2 == 1) printf("Tek"); else printf("Çift"); getch(); }   62

#include <stdio. h> #include <math. h> /. sqrt işlevi için #include <stdio.h> #include <math.h> /* sqrt işlevi için */ #include<conio.h> main() { float a, b, c,delta, x1, x2; printf("a değerini giriniz \n"); scanf("%f",&a); printf(“b değerini giriniz \n"); scanf("%f",&b); printf(“c değerini giriniz \n"); scanf("%f",&c); delta = b * b - 4 * a * c; if (delta<0) printf("Gerçel kök yoktur.\n"); else x1 = (-b + sqrt(delta)) / (2 * a); x2 = (-b - sqrt(delta)) / (2 * a); printf("Birinci kök = %f\n" , x1); printf("ikinci kök = %f\n" , x2); } getch(); 63

If /Else if deyimi if (mantıksal_ifade) { ifade bloğu;} else if (mantıksal_ifade) else 64

float fat_top, vergi_iade; printf("Fatura toplamlarını giriniz "); Vergi iadesini hesaplayan programı yazınız. Fatura toplamı Fatura toplamı 0-60 :ise %10 kdv, Fatura toplamı 60-200 : %8 kdv , Fatura toplamı >200 : %5 kdv main() { float fat_top, vergi_iade; printf("Fatura toplamlarını giriniz "); scanf ("%f", &fat_top); if (fat_top < 60) vergi_iade = fat_top * 0.10; else if (fat_top < 200) vergi_iade = fat_top* 0.08; else vergi_iade = fat_top * 0.05; printf("Ödenecek vergi iadesi = %f\n", vergi_iade); getch();   } 65

#include<stdio.h> #include<stdlib.h> #include<conio.h> main() { int sayi,rasgele; float ortalama; randomize();/* Her seferinde farkli bir deger tutmasi icin*/ rasgele=random(100); printf("\n Tahmin icin sayi giriniz..");scanf("%d",&sayi); if (sayi>rasgele) printf("\n Girilen sayi büyük...."); else if (sayi<rasgele) printf("\n Girilen sayi kücük...."); else printf("\n Tebrikler Bildiniz..."); printf("\n Bilgisayarin tuttugu sayi =%d ...",rasgele); getch();}

switch Deyimi switch(değisken) { case seçenek1 : Deyim; break; default : Deyim; } Değişkenin aldığı değere eşit seçeneğin olup olmadığına bakar. Var ise o noktadan sonraki deyimler yürütülür. switch deyiminin sonuna gelindiğinde veya break deyimi ile karşılaşıldığında yürütme işlemi durur ve programın akışı switch deyimini izleyen deyim ile devam eder. 67

switch Deyimi Switch’deki Değişken integer veya char tipinde olmalıdır Değişken ile switch’deki seçenekler aynı tipte olmalıdır. default kısmı seçimliktir. Seçeneklerin hiçbiri uygun değil ise yürütülür. 68

#include <stdio. h> #include<conio #include <stdio.h> #include<conio.h> main() { char islem; int s1, s2, s3; printf(“ \n işlem için + - * veya/ giriniz "); scanf("%c”, &islem); printf(“\n İki sayı giriniz” ); scanf(“%d %d”,&s1,&s2); switch (islem) { case '+' : s3 = s1 + s2; break; case '-' : s3 = s1 - s2; break; case '*' : s3 = s1 * s2; break; case '/' : s3 = s1 / s2; break; default : printf ("Hatalı işlem"); } printf("\nSonuç = %d",s3); getch(); 69

#include <stdio. h> #include<conio #include <stdio.h> #include<conio.h> main() { scanf("%d", &ay); switch (ay) { case 3: case 4: case 5: printf("ilkbahar"); break; case 6: case 7: case 8: printf("yaz"); break; case 9: case 10: case 11: printf("sonbahar"); break; case 12: case 1: case 2: printf("kış"); break; } getch();} 70

100’lük not sistemine göre klavyeden okutulan notların harflik sisteme göre karşılığını ekrana yazdıran programı yazınız.   A: 85-100 B: 65-84 C: 50-64 D: 0-49 71

if (notu>=0 && notu<50) else if (notu>=50 && notu<65) #include<stdio.h> #include<conio.h> main() {int notu; printf("\n notunuzu giriniz"); scanf("%d",&notu); if (notu>=0 && notu<50) printf("\notunuz D"); else if (notu>=50 && notu<65) printf("\notunuz C"); else if (notu>=65 && notu<85) printf("\notunuz B"); else if(notu>=85 && notu<=100) printf("\notunuz A"); else printf("\lutfen 0-100 arasi deger giriniz"); getch(); }

DÖNGÜLER(while deyimi) while (şart ifadesi) { İfade bloğu; } Şart ifadesi DOĞRU olduğu sürece blok tekrar takrar icra edilir. Şart ifadesi YANLIŞ olduğu zaman döngünün dışına çıkılır. Döngüden etkilenecek blok, {...} işaretleri arasına alınır.

#include<stdio.h> #include<conio.h> main() {int n,i=1,toplam=0; clrscr(); printf(“\n Bir sayi giriniz”); while(i<=10) { toplam=toplam+i; i++; } printf(“\n 1’den 10’a kadar olan sayıların toplamı=%d”,toplam); getch(); Adımlar i toplam İlk değer 1 0 1.adım 2 1 2.adım 3 3 3.adım 4 6 4.adım 5 10 5.adım 6 15 6.adım 7 21 7.adım 8 28 8.adım 9 36 9.adım 10 45 10.adım 11 55

#include<stdio.h> #include<conio.h> main() { int i=0; clrscr(); while(i<=100) if(i%8 ==0) printf(“%4d”,i); i++; } getch();

#include<stdio.h> #include<conio.h> main() {int say=1; int a, faktoriyel=1; printf(“\n faktoriyeli alınacak sayıyı giriniz”); scanf(“%d”,&a); while(a>=say) { faktoriyel=faktoriyel*say; say++; } printf(“\n %d nin faktoriyeli=%d”,a,faktoriyel); getch();

Klavyeden girilen sayıları okuyan ve sayıların toplamı 21'den büyük veya eşit olduğu zaman duran program. #include<stdio.h> #include<conio.h> main() { int i, toplam= 0; while (toplam<21) { scanf("%d",&i); toplam=toplam+i; } printf(“Sayıların Toplam = %d",toplam); getch();

2003 yılı itibarı ile ülke nüfusu 60 milyondur 2003 yılı itibarı ile ülke nüfusu 60 milyondur. Yıllık nüfüs artış oranı %2.3 tür. Sonraki 10 yılda ülke nüfusunu yıllara göre listeleyen program. #include<conio.h> #include <stdio.h> main() { int i; /* sayac */ int yil; /* yillar */ float nufus; /* nufus miktari */ yil=2003; nufus = 60000000; printf("%d …………. %f\n",yil,nufus); i = 1; while (i < 11) nufus = nufus +( nufus*0.023); printf("%d………%f\n",yil + i,nufus); i = i + 1; } getch();

#include<stdio.h> #include<conio.h> main() {float r1; float toplam; toplam=0; printf("\n direnc degerini giriniz..."); scanf("%f", &r1); while(r1!=0) { toplam=toplam+(1/r1); printf("\n direnc degerini giriniz..."); scanf("%f", &r1); } toplam=1/toplam; printf("\n Toplam direnc degeri=%f",toplam); getch();}

#include<stdio.h> #include<conio.h> main() {float a; int say=0; float toplam,ortalama; toplam=0; printf("\n Sayi giriniz..."); scanf("%f", &a); while(a!=0) { toplam=toplam+a; say++; printf("\ n Sayi giriniz...”); scanf("%f", &a); } ortalama=toplam/say; printf("\n Ortalama degeri=%f",ortalama); getch();}

#include<stdio.h> #include<conio.h> main() { float a; float toplam; toplam=0; printf("\n Sayi giriniz..."); scanf("%f", &a); while(a!=0) { toplam=toplam+a; printf("\ n Sayi giriniz...”); scanf("%f", &a); } printf("\n Toplama sonucu=%f",toplam); getch();} 81

{ toplam1=toplam1+sayi; sayac1++;} else #include<stdio.h> #include<conio.h> main() {float sayi; int sayac1=0,sayac2=0; float toplam1=0,toplam2=0; printf("\n Sayı giriniz..."); scanf("%f", &sayi); while(sayi!=0) {if (sayi>0) { toplam1=toplam1+sayi; sayac1++;} else {toplam2=toplam2+sayi; sayac2++;} printf("\n sayi giriniz..."); scanf("%f", &sayi); } printf("\n Pozitif ortalama degeri=%f",toplam1/sayac1); printf("\n Negatif ortalama degeri=%f",toplam2/sayac2); getch();}

#include<stdio.h> #include<stdlib.h> #include<conio.h> main() { int sayi,rasgele,i=0; randomize();/* Her seferinde farkli bir deger tutmasi icin*/ rasgele=random(10); while(i<4) { i++; printf("\n Tahmin icin sayi giriniz..");scanf("%d",&sayi); if (sayi>rasgele) printf("\n Girilen sayi buyuk...."); else if (sayi<rasgele) printf("\n Girilen sayi kucuk...."); else { printf("\n Tebrikler Bildiniz...");getch();exit(0);} } printf("\n Bilgisayarin tuttugu sayi =%d ...",rasgele); getch();}

#include <stdio.h> #include<conio.h> main() { clrscr(); int a, b, c,say; a=1; b=1; say=0; while(say<15) printf("%4d",b); c=a+b; a=b; b=c; say++; } getch();

while(a<=10) { #include<stdio.h> #include<conio.h> main() {float a=0,say; float toplam=1,faktoriyel; while(a<=10) { say=1;a++;faktoriyel=1; while(a>=say) { faktoriyel=faktoriyel*say; say++; } toplam=toplam+1/faktoriyel; printf("\n sonuc=%f",toplam); getch();

DÖNGÜLER(do-while deyimi) İfade bloğu; } while (şart ifadesi) Mantıksal ifade doğru olduğu sürece döngü tekrar edilir. Yanlış olduğunda while sözcüğünden sonraki deyim yürütülür. do.. while döngüsünde kontrol sonda yapıldığı için döngü en az bir kez çalışır.

#include <stdio.h> main()  {     int i;     i=0;     do     {         printf("i nin simdiki degeri= %d\n",i);         i = i + 1;     } while (i<5); }

#include<conio.h> #include <stdio.h> main () { int x; do { printf( "Bir sayi giriniz, ***Durdurmak için sıfır** “); scanf(“%d”, &x); printf (“\Girdiginiz sayi=%d”,x); } while (x != 0); getch(); }

#include<conio.h> #include <stdio.h> main () { int x; int say=0; do { printf( "Bir sayi giriniz"); scanf("%d", &x); if(x % 4==0) say++; } while (x != 0); printf("Dorde bolunen sayiların adedi=%d",say-1); getch(); }

#include<stdio.h> #include<conio.h> main() { int sayi,toplam,say; toplam=0;say=0; float ortalama; do{ say++; printf("\n Bir sayi giriniz..."); scanf("%d", &sayi); toplam=toplam+sayi; } while(sayi!=-1); ortalama=(toplam+1)/(say-1); printf("\n ortlamasi= %f",ortalama); getch();}

#include<stdio.h> #include<conio.h> main() { int sayi=0; int adet=0; do{ sayi++; if (sayi%8==0) { printf("\n %d",sayi); adet++;} } while(sayi<100); printf(“Sayilarin adedi=%d”,adet); getch();}

DÖNGÜLER(for deyimi) for (ilk değer; koşul; artış) { blok; } İlk değer ifadesinden döngü başlar ve koşul ifadesine bakılır. Koşul ifadesi doğru ise blok icra edilir. Daha sonra artış icra edilerek tekrar şart ifadesine bakılır. Eğer şart ifadesi doğru ise tekrar blok ve artış icra edilir. Şart ifadesi yanlış sonuç verene kadar bu şekilde devam edilir Döngünün her adımında i++(i’yi bir artır) yürütülür (artış miktarı). for (i = 1; i < 5; i++) printf("%d ",i);

1’den 10’a kadar olan tamsayıları ekrana yazdıran program: #include<stdio.h> #include<conio.h> main() {int i; clrscr(); for(i=1;i<=10;i++) { printf(“%d\n”,i);} getch(); }

#include <stdio. h> #include<conio #include <stdio.h> #include<conio.h> main() { printf(“\Ay için 1-12 arası değer giriniz”); scanf("%d", &ay); switch (ay) { case 1: printf(“\n Ocak);break; case 2: printf(“\n Şubat);break; case 3: printf(“\n Mart"); break; case 4:printf(“\n Nisan"); break; case 5:printf(“\n Mayıs "); break; case 6: printf(“\n Haziran"); break; case 7: printf(“\n Temmuz "); break; case 8: printf(“\n Ağustos "); break; case 9: printf(“\n Eylül "); break; case 10: printf(“\n Ekim "); break; case 11: printf(“\n Kasım "); break; case 12: printf(“\n Aralık "); break; default: printf(“\n 1-12 arası değer giriniz "); } getch();} 94

for (i=1;i<=4;i++) } #include<stdio.h> #include<stdlib.h> #include<conio.h> main() { int sayi,rasgele,i; randomize();/* Her seferinde farkli bir deger tutmasi icin*/ rasgele=random(11); for (i=1;i<=4;i++) { printf("\n Tahmin icin sayi giriniz..");scanf("%d",&sayi); if (sayi>rasgele) printf("\n Girilen sayi buyuk...."); else if (sayi<rasgele) printf("\n Girilen sayi kucuk...."); else { printf("\n Tebrikler Bildiniz...");getch();exit(0);} } printf("\n Bilgisayarin tuttugu sayi =%d ...",rasgele); getch();}