PROBLEM ÇÖZME VE ALGORİTMALAR

Benzer belgeler
ALGORİTMA KAVRAMI. Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir.

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BMT 101 Algoritma ve Programlama I 3. Hafta. Yük. Müh. Köksal GÜNDOĞDU 1

C# Örnek Uygulamalar I

Algoritmanın Hazırlanması

Dr. Musa KILIÇ Öğretim Görevlisi

Algoritmalar ve Programlama. Algoritma

Programlama Temelleri. Ders notları. Öğr.Gör. Hüseyin Bilal MACİT 2017

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

C# Çalışma Örnekleri

Örnek bir Algoritma. Örneğimiz bir insanın evden çıkıp işe giderken izleyeceği yolu ve işyerine girişinde ilk yapacaklarını tanımlamaktadır.

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)

Algoritma ve Programlamaya Giriş

Bireylerin yaşadığı çevreye uyum sağlaması durumunda ortaya çıkan olumsuzluklara PROBLEM denir.

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

C++ Dilinde Bazı Temel Algoritmalar

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

BİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2

BİLGİSAYAR PROGRAMLAMA MATLAB

C PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

EM205 26/9/2014. Programlamaya giriş Algoritmalar. Amaçlar

TBP101 (4. Hafta) Alıştırma Soruları ve Cevapları

Algoritmalar. 3. Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.

Görsel Programlama 1

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

BİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları

TEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma

GÜMÜŞHANE ÜNĐVERSĐTESĐ MÜHENDĐSLĐK VE DOĞA BĐLĐMLERĐ FAKÜLTESĐ ELEKTRĐK-ELEKTRONĐK MÜHENDĐSLĐĞĐ EEM 114 ALGORĐTMA TASARIMI VE PROGRAMLAMA DĐLLERĐ

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

Basit Algoritma Akış Diagramı Örnekleri

ÖRNEK 1: Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır:

BÖLÜM 2: ALGORİTMALAR


HÜPP PYTHON I.HAFTA ALGORİTMA MANTIĞI, AKIŞ DİYAGRAMLARI VE PYTHON'A GİRİŞ

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

BPR152-Algoritma ve Programlama II Uygulama -8

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

FBEB-512 C++ ile Nesne Tabanlı Programlama Güz 2009 (1. Hafta) (Yrd. Doç. Dr. Deniz Dal)

Pascal Programlama Dili

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

PROGRAMLAMA DİLLERİ I

ALGORİTMA NEDİR? (Adım adım işlem basamaklarının yazılmasıdır.)

Döngüsel Akış Diagramı Algoritmaları

BMT 101 Algoritma ve Programlama I 3. Hafta (Örnekler) Yük. Müh. Köksal GÜNDOĞDU 1

BİLGİSAYAR PROGRAMLAMA DERSİ

C++ Dilinde Bazı Temel Algoritmalar

BLGM BÖLÜM. Problem Çözme Kavramları (Algoritma ve Akış Şemaları)

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

4- ALGORİTMA (ALGORITHM)

Hafta 4 Döngü Yapıları

BİLGİSAYAR PROGRAMLAMA DERSİ

BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1

Programlama Temelleri Örnek Sorular

Programlama Tekniklerine Giriş Vize (Ders kodları ve örnek kodlar)

Erzurum Teknik Üniversitesi Mühendislik Mimarlık Fakültesi Bilgisayar Programlama Dersi Ödevi Soru

ALGORİTMA ÖRNEKLERİ ve YAZILIYA HAZIRLIK SORULARI

Dersin Sorumlusu: Yrd. Doç. Dr. Birol SOYSAL. Sunumları Hazırlayan: Doç. Dr. Bülent ÇAKMAK

DÖNGÜLER BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ LABORATUARI BMÜ-101 ALGORİTMA VE PROGRAMLAMAYA DENEY-4 FÖYÜ GİRİŞ LABORATUARI.

ALGORİTMA TASARIMI VE SCRATCH UYGULAMASI

SİNOP ÜNİVERSİTESİ MESLEK YÜKSEKOKULU MEKATRONİK PROGRAMI

AKIŞ ŞEMASI AKIŞ ŞEMASI AKIŞ ŞEMASI ŞEKİLLERİ GİRİŞ

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

Okut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Algoritma & Matlab.

BPR151-Algoritma ve Programlama I Uygulama -1

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

PROBLEM ÇÖZME PROGRAMLAMA ve ÖZGÜN ÜRÜN GELİŞTİRME

4- ALGORİTMA (ALGORITHM) M.İLKUÇAR - 1

ÜNİT E ÜNİTE GİRİŞ. Algoritma Mantığı. Algoritma Özellikleri PROGRAMLAMA TEMELLERİ ÜNİTE 3 ALGORİTMA

MATLAB de. Programlama. Kontrol Yapıları. Döngü Yapıları. Doç. Dr. İrfan KAYMAZ Matlab Ders Notları

Algoritmik Program Tasarımı, Akış Şemaları ve Programlama. Bilgisayar Mühendisliğine Giriş 1

Algoritma ve Programlamaya Giriş. Mustafa Kemal Üniversitesi Kırıkhan Meslek Yüksekokulu Bilgisayar Teknolojileri Bölümü

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

Algoritma ve Programlamaya Giriş. Mustafa Kemal Üniversitesi Kırıkhan Meslek Yüksekokulu Bilgisayar Teknolojileri Bölümü

C SHARP UYGULAMA ÇALIŞMASI

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

/*int sayi1, sayi2,toplam=0;

ALGORİTMAYA GİRİŞ. Program: Belirli bir işi gerçekleştirmek için gerekli komutlar dizisi olarak tanımlanabilir.

ALGORİTMA (ALGORITHM) M.İLKUÇAR -

PROGRAMLAMAYA GİRİŞ VE ALGORİTMA. Yazılım Nedir Algoritma Akış Seması Örnekler

İÇERİK PROGRAMLAMAYA GİRİŞ ALGORİTMA AKIŞ DİYAGRAMLARI PROGRAMLAMA DİLLERİ JAVA DİLİNİN YAPISI JAVA DA KULLANILAN VERİ TİPLERİ JAVA DA PROGRAM YAZMA

11- FONKSİYONLAR (FUNCTIONS)

Programlama Temelleri Dersi - Algoritma Örnekleri-v0.2

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

BİLGİSAYAR PROGRAMLAMA DERSİ

Değişkenler, içerisinde tek bir değer tutabilen yapılardır. Örneğin haftanın günlerini değişkenlerde tutmak istersek, her bir gün adı için bir

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Algoritma ve Akış Şemaları

BİL1001 Bilgisayar Bilimlerine Giriş 1

ÖRNEK ALGORİTMA VE AKIŞ ŞEMALARI. Örnek 1: Klavyeden girilen 2 sayının toplamını bulan programın algoritma ve akış şemasını yapınız.

Örnek 1: Girilen iki sayıyı toplayıp yazdıran algoritmayı ve akış diyagramını tasarlayınız.

BLG 1306 Temel Bilgisayar Programlama

KBÜ. TBP101 Programlama Temelleri. Öğr. Gör. Dr. Abdullah ELEN KARABÜK ÜNİVERSİTESİ.

M.ilkucar MAKU MYO 1

Transkript:

PROBLEM ÇÖZME VE ALGORİTMALAR Egemen TEKKANAT [ŞİRKET ADI] [Şirket adresi]

ALGORİTMA KAVRAMI Bir sorunu / problemi çözmek veya belirli bir amaca ulaşmak için gerekli olan sıralı mantıksal adımların tümüne algoritma denir. Algoritma bir sorunun çözümü için izlenecek yolun tanımıdır. Kısaca algoritma en basit ifadeyle, bir problemi çözmek için takip edilecek sonlu sayıda adımdan oluşan bir çözüm yoludur. Bir algoritmanın özellikleri şu şekildedir: 1) Başlangıcı olmalı 2) Basit olmalı 3) Problemin çözümünü, mümkün olan en az adım ile en kısa sürede gerçekleştirmeli 4) Sonu olmalı Algoritmanın Temel Özellikleri: 1. Kesinlik : algoritma içindeki ifadeler herkes tarafında aynı şekilde anlaşılabilir olmalı, farklı anlamlara gelebilecek bulanık ifadeler içermemeli. 2. Sıralı olma : adımların hangi sırada gerçekleştirileceği çok önemlidir ve net bir şekilde belirtilmelidir. 3. Sonluluk: algoritma sonlu sayıda adımdan oluşmalı, sınırlı bir zaman diliminde tamamlanmalıdır. Problem çözmek: Problemi çözmek için çözüm yolu (algoritma) geliştirmenin temel adımları: * Problemin tanımı * Çözüm yönteminin belirlenmesi * Programın kodlanması * Programın çalışır duruma getirilmesi * Belgeleme ve güncelleştirme Problemin tanımı: Problemin normal yazı diliyle tanımlanması işlemlerini Kapsamaktadır. Problem çözümüne ilişkin iyi bir program yapabilmek için, problemin iyi bir şekilde tanımlanması gerekir. Çözüm Yönteminin Belirlenmesi: Bu adımda çözümün genel yaklaşımı, temel giriş/çıkışlar belirlenir ve problem çözümü adim adım program akis diyagramlarıyla gösterilir. Programın kodlanması: Program ayrıntılı olarak tanımlanıp çözüm yolları açıkça Belirtildikten sonra program kodlama çalışmalarına başlanabilir. Programın bastan sona Yapısal bir düzende hazırlanması ve uygun bir programlama dili seçilmesi secim işleminin ilk aşamasını oluşturur. Programın çalışır Hale Getirilmesi: Programın kodlanması sırasında yapılan imla hataları, kodlama ve mantık hatalarının giderilmesi işlemlerini kapsar. İyi bir bilgisayar programının doğruluğundan emin olmak için defalarca test edilmiş olması gerekmektedir. 1

Belgeleme ve güncelleştirme: Oluşturulan bir yazılımı, sadece o yazılımı geliştiren Kişilerin kullanabilmesi gibi bir kısıtlamanın önüne geçmek için ayrıntılı referanslar Hazırlanmalı ve programla ilgili bilgiler verilmelidir. ALGORİTMA GELİŞTİRMEK Bir problemi çözmek üzere algoritma geliştiriyorsak, satır algoritma yazabilir ya da akış diyagramı çizebiliriz. İkisini aynı anda da yapabiliriz. Böylece problemin çözümünü programlamadan önce net bir şekilde ifade ederiz. Algoritmanın Temel Öğeleri: 1. Tanımlayıcı: değişken sabit gibi programlama birimlerine programcı tarafından verilmiş isimler. 2. Değişken: programın akışı içinde farklı değerler tutmak için ayrılmış bellek bölümleri. 3. Sabit: program her çalıştığında ve programın içinde herhangi bir anda hep aynı değeri döndüren tanımlayıcılara sabit denir (Ör: Pi=3.14) 4. Aritmetik işlemler: programdaki en temel işlemlerdir. 5. Mantıksal işlemler: bir programın akışı içerisinde, belirli bir koşula göre akışın hangi yönde ilerleyeceğine karar vermekte kullanılırlar. 2

ALGORİTMA YAZIMI Algoritmayı yazılı hale getirmenin üç yöntemi vardır: Satır algoritma Akış diyagramı Sözde kod (pseudo kod) Sözde kod tamamen bilgisayar programlamaya yönelik bir gösterimdir. Algoritma yazımıyla kod yazımı arasında kalan bir kısımdır ama Kodlamaya daha yakındır. 1. Satır algoritma: Satır algoritma, problemlerin günlük konuşma diliyle ifade edilerek ve numaralandırılarak oluşturulur. Algoritma ifade etmede en kolay yöntemdir. Ör.1 / ekrana sırasıyla 1,2,3 değerlerini yazdıran algoritmayı tasarlayın: 1.başla 2.yaz 1 3.yaz 2 4.yaz 3 5.dur Ör.2 / kullanıcıdan 2 sayı alıp, bu iki sayının toplamını ekrana yazdıran algoritma : 1.başla 2. Oku (A,B) 3. C = A + B 4.yaz C 5.dur Burada A ve B değişkenleri girdi, C değişkeni ise çıktıdır. Oku işlemi girilen değerleri hafızaya alır yaz işlemi ise C nin soncunu ekrana yazdıracak olan işlemdir. Ör.3/ kullanıcıdan bir kenarı alınan karenin çevresini hesaplayan algoritma 3

1.başla 2. Oku (K) 3. C = 4 * K 4.yaz C 5.dur Burada k değişkenimiz bir kenarı gösteriyor oku işlemi ile değeri alıyoruz. Çevre ise C ile gösterilmiş. C = 4 * K ile çevreyi buluyor ve yaz işlemi ile C yi ekrana yazdırıyoruz Ör.4/ kullanıcıdan yaş girmesini isteyip. Girilen yaş 18 den büyükse Reşitsiniz, değil ise reşit değilsiniz yazdıran algoritma 1.başla 2. Oku yaşınız? (Y) 3. Eğer 3.1. (Y >=18) yaz Reşitsiniz 3.2(DEĞİLSE) yaz Reşit değilsiniz 4. Dur Burada girdi olarak yaş (Y) değişkenini alıyoruz. Çıktı olarak da yaz işlemini kullanarak reşitsiniz yâda reşit değilsiniz yazısını ekrana yazdırıyoruz. Bu algoritma kullanıcıdan yaşını girmesini ister. 3.1 de olduğu gibi yaş 18 den büyük ve 18 e eşitse ekrana Reşitisniz. 18 den küçük ise de 3.2 olduğu gibi reşit değilsiniz işlemini yapar. Eğer ve değilse fonksiyonları bu koşulu yerine getirmek için kullanılır. Ör.5 / Klavyeden girilen değere göre 45 e eşit ve 45 ten büyükse ekrana geçti değilse kaldı yazacak algoritmayı oluşturalım. 1. Başla 2. Yaz Not giriniz: 3. Oku (N) 4. eğer4 4.2 (N >= 45) Yaz Geçtiniz 4.3 (Değilse) Yaz Kaldınız 5. Dur Klavyeden not girmemizi isteyecek, girdiğimiz notu oku işlemiyle alacak ve girilen not 45 e eşit ve büyük olduğunda ekrana geçtiniz değilse kaldınız yazacaktır. Burada yine eğer ve değilse fonksiyonunu kullanıyoruz Ör.6/ Klavyeden girilen sayıyı 1 den başlayıp girdiği sayıya kadar toplayacak algoritmayı yazalım. 4

1. Başla 2. Sayac = 0, Toplam = 0 3. Oku (A) 4. eğer Dongu >= A, 8. adıma git 5. Toplam = Toplam + Dongu 6. Sayac = Sayac + 1 7. 4. adıma git 8. Yaz Toplam 9. Dur Burada girdi olarak sayı alıcaz bunu da A ile belirttik. Algoritmanın yapacağı işlem ise, girdiğimiz sayıya kadar olan sayıları 1 sayısından başlayarak toplayarak ekrana yazdırır. Dikkat etmemiz gereken kısım toplama işleminin girdiğimiz sayıya kadar olması yani örnek olarak girdiğim sayı 10 ise sonucu 11 olan işlem sonucun ekrana yazdırmayacak. Bu koşulu da 4. eğer Dongu >= A, 8. adıma git işlemi ile sağlıyoruz. Yani toplama işlemi girdiğimiz sayıdan büyükse işlem yapma ve 8.adımdan devam et. 2. Akış diyagramları: Akış diyagramları problemin şekillerle ifade edilmesidir. 5

6

Sıralı algoritmada yaptığımız 1 ve 2 nolu örneklerin akış diyagramları aşağıdaki gibidir. Kareni çevresini bulan sıralı algoritmayı yapmıştık 3.örneğimizde. şimdi akış diyagramına bakalım 7

Sıralı işlemler için algoritma geliştirmek Algoritma geliştirme işleminin en kolay kısmıdır. Burada yapılması gereken en önemli işlem algoritma adımlarının tamamı belirlendikten sonra bunların hangi sırada yapılması gerektiğini belirlemektir. Örneğin; 1.başla 2.yaz 2 YANLIŞ 1.başla 2.yaz 1 3.yaz 2 DOĞRU 3.yaz 1 4.yaz 3 5.dur 4.yaz 3 5.dur ÖR / kişiye adını soracak, daha sonra da adını kullanarak cinsiyet (bay/bayan) soracak ve kullanıcının cinsiyetiyle birlikte adını birleştirerek merhaba X bay/bayan şeklinde ekrana yazdıracak algoritmayı tasarlayalım 8

İlk önce algoritma adımlarını çıkaralım Kişinin adını sor Kişinin adını al Kişinin adını kullanarak cinsiyetini sor Cinsiyetini al Kişinin adı ve cinsiyetini birleştirerek ekran memnun oldum X bay/bayan yazdır Şimdi de bunu satır algoritmaya çevirelim: Sonra da akış diyagramına çevirelim. : 9

Basit koşul yapıları Program akışı içerisinde belirli bir duruma göre bir işin yapılıp yapılmamasına karar verirken basit koşul yapıları kullanırız. Ör: kullanıcıdan adını alıp, eğer karakter sayısı 7 den büyükse ekrana uzun bir isme sahipsiniz mesajı yazdıran algoritmayı tasarlayalım. İki alternatifli koşul yapıları Bu yapıda eğer komutundan sonra gelen koşul ya da durum ifadesinin sonucu doğru (true) ise şarttan sonra gelen komut çalışır. Koşul yanlış (false) ise else'den sonra gelen komut çalışır. if ( koşul ) komut 1; else komut 2; Ör.4/ kullanıcıdan yaş girmesini isteyip. Girilen yaş 18 den büyükse Reşitsiniz, değil ise reşit değilsiniz yazdıran algoritma 1.başla 2. Oku yaşınız? (Y) 3. Eğer 3.1. (Y >=18) yaz Reşitsiniz 10

4. Dur 3.2(DEĞİLSE) yaz Reşit değilsiniz Ör: kullanıcıdan bir sayı alarak, sayının pozitif ya da negatif olduğunu yazdıran algoritmayı tasarlayınız. Sıfır sayısı pozitif olarak kabul edilsin. Örnek satır algoritma 5. dur 1. Başla 2. Yaz bir sayı giriniz 3. Oku (sayı) 4. Eğer 4.1. (Sayı >= 0) Yaz ( Girdiğiniz Sayı Pozitiftir ) 4.2. (Değilse) Yaz ( Girdiğiniz Sayı Negatiftir) 11

İçiçe Döngülerin Kullanılması İçiçe döngü kurulurken en önemli unsur, içteki döngü sonlanmadan bir dıştaki döngüye geçilmemesidir. Diğer bir deyişle döngüler birbirlerini kesmemelidir. En içteki döngü bir dıştaki döngünün her adımında N kez tekrarlanır. 12

Örnek: Bankaya aylık getirisi %8 ile 1000 YTL para yatırılmıştır. Buna göre; a)10 ay sonrası için paranın ne kadar olacağını ve bu süre içerisinde her ay sonunda ne kadar olacağını hesaplayıp ekrana yazan programın akış şemasını nasıldır? b)paranın kaç ay sonra 5000 YTL olacağını hesaplayan programın akış şeması nasıldır? 13

Tekrarlı yapılar: Bir veya bir grup program cümlesi işletilip sona erdikten sonra tekrar işletilmesi gerektiği durumlarda tekrarlı yapılar kullanılır. Tekrarlı işlemler için kullanılan metotlar şunlardır. 1. Başka işlem sorgulaması 2. Sayaç Metodu 3. Son kart metodu 4. Döngü metodu 1.Başka işlem sorgulaması: Bu metot da işlem gerçekleştirilip sona erdikten sonra kullanıcıya işlemin yeni değerler için tekrarlanıp tekrarlanmayacağı sorulur kullanıcı evet cevabını verirse işlem tekrarlanır hayır cevabını verirse program akışı bir sonraki program cümlesine geçer. Örnek 8: Kullanıcının girdiği sayılar toplamını bulan program her defasında kullanıcıya devam edip etmeyeceğini sorar ve kullanıcı hayır cevabını verdiğinde o ana kadar girilen sayılar toplamını ekrana yazar. Program algoritmasını yazınız. 1. Başla 2. Tanımla Sayi,Toplam 0,Cevap 14

3. Oku Sayi 4. Toplam Toplam+Sayi 5. Yaz Devam E/H? 6. Oku Cevap 7. Eğer Cevap= E ise Git 3 8. Yaz Sayılar Toplamı=, Toplam 9. DUR Kullanıcı hayır cevabı verene kadar girilen sayıların toplamını bulan prg algoritması Soru3a:Vize ve final notu girilen öğrencinin ortalamasını bulan program algoritmasını yazınız. Soru3b:Soru3a daki soruyu başka işlem sorgulaması ile tekrarlanacak şekilde düzenleyiniz. Soru4:Kullanıcı hayır cevabını verene kadar girilen her ismi ekrana yazan prg algoritmasını yazınız. 2.Sayaç metodu: Bu metot işlemin tekrarlanma sayısının belli olduğu durumlarda kullanılır. Bu metot da ayrı bir sayaç değişkeni kullanılır ve işlem her tekrarlandığında değeri bir artırılarak istenen değere ulaşıp ulaşmadığına bakılır. İstenen değere ulaşılmış ise işlem sona erdirilir aksi halde işlem tekrarlanır. Örnek 9: Klavyeden girilen 4 sayının toplamını bulan program algoritmasını yazınız. Ör : kullanıcıdan 100 adet sayı alarak, bu sayıların toplamlarını ekrana yazdıran algoritmayı tasarlayınız. Satır algoritması 1. Başla 15

2. Toplam =0, Sayac =1 3. Yaz bir sayı giriniz 4. Oku sayı 5. Eger (sayaç <=100) 5.1 Toplam = toplam + sayı 5.2.Sayaç = sayaç + 1 5.3.Git 4 6. Yaz toplam 7. Dur Koşullu tekrar yapıları Tekrarlı işlemlerde, tekrar edilecek işlem adımlarının kaç kez çalıştırıcağını bazen önceden bilemeyiz. Örneğin şu problemi ele alalım. 16

Kullanıcıların girdiği sayıları toplayan bir algoritmayı tasarlayın. Algoritma sıfır girilene kadar girdiği sayıları alıp toplasın ve sıfır girildiği zaman kullanıcıdan sayı alma işlemini kesip, girilen sayıların toplamını ekrana yazdırın. Sözde-Kod Algoritma adımlarının programlama diline benzeyen bir şekilde ancak günlük dil ile anlatılmasıdır. Yapılacak eylemler günlük hayatta kullanılan sözcüklerle ifade edilir. Sözde kodlar; yapısı itibariyle kullanılacak olan programlama dilinin esnetilmiş halidir. Programlama dilindeki gibi katı kuralları ve kalıpları yoktur. Program yazılmadan önce algoritma oluşturulurken kullanılan dile bağlı olarak sözde kodlar tasarlanır. Satır algoritmalardan sözde kod oluşturma Ör.1 / ekrana sırasıyla 1,2,3 değerlerini yazdıran algoritmayı tasarlayın: 1.başla 2.yaz 1 3.yaz 2 4.yaz 3 5.dur 17

Display 1 Display 2 Display3 Ör.2 / kullanıcıdan 2 sayı alıp, bu iki sayının toplamını ekrana yazdıran algoritma : 1.başla 2. Oku (A,B) 3. C = A + B 4.yaz C 5.dur Get A Get B C = A + B Display C Ör.3/ kullanıcıdan bir kenarı alınan karenin çevresini hesaplayan algoritma 1.başla 2. Oku (K) 3. C = 4 * K 4.yaz C 5.dur Get (K) C = 4 * K Display C Ör.4/ kullanıcıdan yaş girmesini isteyip. Girilen yaş 18 den büyükse Reşitsiniz, değil ise reşit değilsiniz yazdıran algoritma 1.başla 2. Oku yaşınız? (Y) 3. Eğer 3.1. (Y >=18) yaz Reşitsiniz 3.2(DEĞİLSE) yaz Reşit değilsiniz 4. Dur Display Yaşınız Get Y 18

İf Y >= 18 Display Resitsiniz Else Display Resit Degilsiniz Endif Örnek satır algoritmaları 1. Başla 2. Toplam =0, Sayi =1 3. Sayaç (x=1 to 100 step 1) 4. Oku bir sayı giriniz 5. Toplam = toplam + sayı 6. Sayaçsonu 7. Yaz Toplam 8. Dur Örnek sözde kod Toplam =0 For(x=0 to 100 step 1) Toplam = toplam + X Endfor Display Toplam Akış diyagramlarından sözde kod oluşturmak 19

Sayaç = 0, Toplam =0 Get sayi For sayaç = 1 to sayi step 1 Toplam = toplam + sayaç Endfor Display Toplam Display bir sayı giriniz Get sayı İf sayı >0 Display girdiğiniz sayı pozitif End if sayı < 0 Display girdiğiniz sayı negatif Else Display girdiğiniz sayı sıfırdır Endif 20

Temel algoritma örnekleri 1. Klavyeden girilen 5 adet not bilgisinin ortalamasını alan programı yapınız. Klavyeden girilen 10 adet notun en büyük ve en küçüğünü bulan programı yapınız..klavyeden 0 sayısı girilene kadar sayılar okutunuz. Girilen sayıların 2 katını alarak ekrana sonucu yazdırınız. 21

Derste yapılan örnekleri koda dökmek Ör.1 / ekrana sırasıyla 1,2,3 değerlerini yazdıran algoritmayı tasarlayın: 1.başla 2.yaz 1 3.yaz 2 4.yaz 3 5.dur Console.WriteLine( 1 ); Console.WriteLine( 2 ); Console.WriteLine( 3 ); Ör.2 / kullanıcıdan 2 sayı alıp, bu iki sayının toplamını ekrana yazdıran algoritma : 1.başla 2. Oku (A,B) 3. C = A + B 4.yaz C 5.dur int a = 0; 22

int b = 0; int c = 0; string girilen = ""; a = int.parse(girilen); b = int.parse(girilen); c = a + b; Console.WriteLine(c); Ör.4/ kullanıcıdan yaş girmesini isteyip. Girilen yaş 18 den büyükse Reşitsiniz, değil ise reşit değilsiniz yazdıran algoritma 1.başla 2. Oku yaşınız? (Y) 3. Eğer 3.1. (Y >=18) yaz Reşitsiniz 3.2(DEĞİLSE) yaz Reşit değilsiniz 4. Dur int Y = 0; string girilen = null; Console.Write( Yaşınız? ); Y = int.parse(girilen); if (Y >= 18) Console.WriteLine("Reşitsiniz."); else Console.WriteLine("Reşit değilsiniz."); Ör : kullanıcıdan 100 adet sayı alarak, bu sayıların toplamlarını ekrana yazdıran algoritmayı tasarlayınız. Satır algoritması 23

1. Başla 2. Toplam =0, Sayac =1 3. Yaz bir sayı giriniz 4. Oku sayı 5. Eger (sayaç <=100) 5.1 Toplam = toplam + sayı 5.2.Sayaç = sayaç + 1 5.3.Git 4 6. Yaz toplam 7. Dur int toplam = 0; int x = 0; for (x = 1; x <= 100; x++) toplam = toplam + x; Console.WriteLine(toplam); Kullanıcıların girdiği sayıları toplayan bir algoritmayı tasarlayın. Algoritma sıfır girilene kadar girdiği sayıları alıp toplasın ve sıfır girildiği zaman kullanıcıdan sayı alma işlemini kesip, girilen sayıların toplamını ekrana yazdırın. int toplam = 0; int sayi = 0; string girilen = ""; do Console.Write("Bir sayı girin: "); sayi = int.parse(girilen); toplam = toplam + sayi; while ((sayi > 0)); Console.WriteLine(toplam); Ekrana girilen 2 adet sayıyı toplayan kodu yazınız int sayi1 = 0; int sayi2 = 0; int toplam = 0; string girilen = ; 24

Console.Write("Birinci sayıyı girin: "); sayi1 = int.parse(girilen); Console.Write("İkinci sayıyı girin: "); sayi2 = int.parse(girilen); toplam= sayi1 + sayi2; Console.WriteLine("Toplama sonucu = " + toplam); Ekrana girilen 2 sayıyı bölen işlemin kodunu yazınız decimal sayi1 = 0M; decimal sayi2 = 0M; decimal bolum = 0M; string girilen = ; Console.Write("Birinci sayıyı girin: "); sayi1 = decimal.parse(girilen); Console.Write("İkinci sayıyı girin: "); sayi2 = decimal.parse(girilen); bolum = sayi1 / sayi2; Console.WriteLine("Bölme sonucu = " + bolum); Tabanı ve yüksekliği verilen bir üçgenin alanını hesaplayarak ekrana yazdıran kodu yazınız. decimal yukseklik = 0M; decimal taban = 0M; decimal alan = 0M; string girilen = ; Console.Write("Taban uzunluğu = "); taban = decimal.parse(girilen); Console.Write("Yükseklik = "); yukseklik = decimal.parse(girilen); alan = taban * yukseklik / 2; Console.WriteLine("Alan = " + alan); 25

Yarıçapı verilen bir dairenin alanını ve çevresini hesaplayarak ekrana yazdıran kodu yazınız. decimal yaricap = 0M; decimal cevre = 0M; decimal alan = 0M; const decimal PI = 3.14; string girilen = ; Console.Write("Yarıçap = "); yaricap = decimal.parse(girilen); alan = PI * Math.Pow(yaricap, 2); cevre = 2 * PI * yaricap; Console.WriteLine("Çevre = " + cevre); Console.WriteLine("Alan = " + alan); Yarıçapı ve yüksekliği verilen bir koninin hacmini hesaplayarak sonucu ekrana yazdıran kodu yazınız. decimal yaricap = 0M; decimal yukseklik = 0M; decimal hacim = 0M; string girilen = ; const decimal PI = 3.14; Console.Write("Yarıçap = "); yaricap = decimal.parse(girilen); Console.Write("Yükseklik = "); yukseklik = decimal.parse(girilen); hacim = PI * yaricap * yaricap / yukseklik; Console.WriteLine("Hacim = " + hacim); İnç cinsinden verilen bir uzunluğu santimetre cinsinden karşılığını bulup yazdıran algoritmayı tasarlayınız? 1 inç = 2,54 cm dir. Girdi: uzunluk_inç Çıktı: uzunluk_cm Satır algoritması: 1. Başla 26

2. Yaz uzunluk (inç) = 3. Oku uzunluk_inç 4. Uzunluk_cm = uzunluk_inç * 2,54 5. Yaz uzunluk (cm) = 6. Yaz uzunluk_cm 7. Dur Sözde kodu: İuzunluk = 0, suzunluk =0 Display Uzunluk (inç) = Get iuzunluk suzunluk = iuzunluk * 2,54 display uzunluk (cm) = + suzunluk Fahrenhayt olarak verilen sıcaklık değerini santigrat a çeviren algoritmayı tasarlayınız oc= (of-32) / 1.8 satır algoritması : 1. başla 2. yaz sıcaklık (F) = 3. oku fsicaklık 4. csıcaklık = (fsicaklık-32) / 1.8 5. yaz sıcaklık C = 6. yaz csicaklık 7. dur Sözde kodu: fsicaklık = 0, csıcaklık =0 Display Sıcaklık (F) = Get fsicaklık csicaklık = (fsicaklık -32) / 1.8 display Sicaklık (C) = + Csicaklık bilgisayar kodu : static void Main(string[] args) double Fsicaklık = 0; double Csicaklık = 0; string girilen = " "; Console.WriteLine("Sıcaklık (F) = "); Fsicaklık = double.parse(girilen); Csicaklık = (Fsicaklık - 32) / 1.8; Console.WriteLine("Sicaklık (C) = " + Csicaklık); 27

Console.ReadKey(); BİRİNCE DERECEDEN DENKLEM ÇÖZMEK Ör: klavyeden katsayıları verilen 1.dereceden bir denklemin köklerini hesaplayarak ekrana yazdıran algoritmayı tasarlayalım Ax + b = 0 X = -b / a Girdiler: sayi1, sayi2 Çıktı: sayı1 in sayı 2 ye göre durumu Satır algoritması: 1. Başla 2. Yaz X in katsayısı = 3. Oku a 4. Yaz b değeri = 5. Oku b 6. X = -1*b / a 7. Yaz X = 8. Yaz x 9. Dur Sözde kodu: X=0, a = 0, b=0 Display X in katsayısı Get a Diplay b değeri Get b X = -1*b/a Display X = +x Bilgisayar kodu : static void Main(string[] args) decimal a = 0M; decimal b = 0M; decimal x = 0M; string girilen = ""; Console.Write("X'in katsıyısı = "); a = decimal.parse(girilen); Console.Write("B = "); 28

b = decimal.parse(girilen); x = -1 * b / a; Console.WriteLine(" X = " + x); Console.ReadKey(); Başarı Ölçmek 100 üzerinden 60 başarı notuyla, ekrana girilen nota göre kullanıcıya başarılı olup olmadığını söyleyen algoritma Girdi: not Çıktı: başarı durumu Satır algoritması: 1. Başla 2. Yaz notunuzu giriniz 3. Oku N 4. Eğer 4.1. (N >= 60) yaz Başarılı 4.2. (değilse) yaz Başarısız 5. Dur Sözde kod: Display notunuzu giriniz Get N İf N >=60 then Display Başarılı Else Display başarısız Endif Bilgisayar kodu : static void Main(string[] args) int vize = 0; int final = 0; double ortalama = 0; string girilen = ""; Console.Write("Vize Notunuzu giriniz = "); vize = int.parse(girilen); Console.Write("Final Notunuz Giriniz = "); final = int.parse(girilen); 29

ortalama = (vize * 0.30) + (final * 0.70); Console.Write("ortalama notunuz = " + ortalama); if (ortalama >=60) Console.WriteLine(" Başarılısınız!!!"); else Console.WriteLine(" Başarılı Değilsiniz!!!"); Console.ReadKey(); Tam Bölünüyor mu? Girilen 2 sayıdan ilkinin ikincisine tam bölünüp bölünmediğini bulup ekranda yazdıran algoritmayı tasarlayın Girdiler: sayı1, sayı 2 Çıktı: sayı1 in sayı2 ye göre durumu Satır algoritması: 1. Başla 2. Yaz 1.sayı 3. Oku sayı1 4. Yaz 2.sayı 5. Oku sayı2 6. Eğer 6.1. (s1 mod s2 =0) yaz S1 S2 ye tam bölünür 6.2. (Değilse) yaz Tam bölünmez 7. Dur Sözde kodu: Display sayı 1 = Get sayı1 Display sayı2 Get Sayı2 İf s1 mod s2 =0 then Display s1 s2 ye tam bölünür Else Display s1 s2 ye tam bölünmez Endif Bilgisayar Kodu: 30

static void Main(string[] args) int sayı1 = 0; int sayı2 = 0; string girilen = ""; Console.Write("Sayı 1 = "); sayı1 = int.parse(girilen); Console.Write("Sayı 2 = "); sayı2 = int.parse(girilen); if((sayı1 % sayı2)==0) Console.WriteLine("Sayı1 Sayı 2'ye Tam bölünür"); else Console.WriteLine("Sayı 1 Sayı 2'ye Tam bölünmez"); Console.ReadKey(); İki sayıyı karşılaştırmak Girilen iki sayıyı karşılaştırıp, bu sayıların büyüklük, küçüklük ve eşitlik durumlarını bulan algoritma Girdiler: sayı1 ve sayı2 Çıktı: sayı 1 in sayı 2 ye göre durumu Sayı 1 = sayı 1 Sayı1 > sayı2 Sayı1 < sayı2, Satır algoritması 1. Başla 2. Yaz 1.sayı 3. Oku s1 4. Yaz 2.sayı 5. Oku s2 6. Eğer 6.1. (s1 > s2) yaz sayı 1 sayı 2 den büyüktür 6.2. (s1 <s2 ) yaz sayı 1 sayı2 den küçüktür 7. (değilse) yaz sayı 1 sayı 2 ye eşittir 8. Dur Sözde kodu Display birinci sayı 31

Get s1 Display ikinci sayı Get s2 İf s1 >s2 then Display s1 >s2 Else if s1 < s2 then Display s2 >s1 Else Display s1=s2 Endif Bilgisayar kodu : static void Main(string[] args) int s1 = 0; int s2 = 0; string girilen = ""; Console.Write("Birinci sayıyı Giriniz"); s1 = int.parse(girilen); Console.WriteLine("ikinci sayıyı giriniz"); s2 = int.parse(girilen); if(s1>s2) Console.WriteLine("S1 S2 den büyüktür"); else if(s1 < s2) Console.WriteLine("S2 S1 den büyüktür"); else Console.WriteLine("iki sayı eşittir"); Console.ReadKey(); Algoritma öğreniyorum Ekrana 10 kez algoritma öğreniyorum yazdıran algoritmayı tasarlayınız 1. Başla 2. Sayaç (x=1 to 10 step 1) 3. Yaz algoritma öğreniyorum 4. Sayacsonu 5. Dur 6. For x = 1 to 10 step 1 32

7. Display algoritma öğreniyorum 8. Endfor Girilen sayıları 3 er 3 er arttırmak 1. Başla 2. Sayaç( x=5 to 20 step 3) 3. Yaz x 4. Sayacsonu 5. Dur Sözde kodu For x=5 to 20 step 3 Display x Endfor Sayıların küplerini yazdırmak 1 den 10 a kadar olan sayıları alıp bu sayıların küplerini ekranda yazdıralım Satır algoritması 1. Başla 2. Sayaç(x=1 to 10 step 1) 3. Yaz x*x*x 4. sayacsonu 5. dur Sözde kodu for(x=1 to 10 step 1) display (x*x*x) endfor Tek ve çift sayılar 1 den 10 a kadar olan sayıların tek mi çift mi olduklarını bulan algoritmayı yazalım Satır algoritması 1. Başla 2. Sayaç(X=1 to 10 step 1) 3. Eğer 3.1. (x mod 2 =0) yaz x + - çift sayıdır 3.2. (değilse) yaz x + -tek sayıdır 4. sayacsonu 5. dur Sözde kodu for x =1 to 10 step 1 33

if x mod 2 =0 then display X + - çift sayıdır else display X + tek sayıdır endif endfor bilgisayar kodu : static void Main(string[] args) int x = 0; for(x=1 ; x<=10; x++) if ( x % 2 == 0) Console.WriteLine(x + "- çift sayıdır"); else Console.WriteLine(x + "- tek sayıdır"); Console.ReadKey(); En büyük sayı Klavyeden girilen 5 adet sayıdan en büyüğünü bulup ekrana yazdıran algoritmayı tasarlayınız? Girdiler: 5 adet sayı Çıktı: en büyük sayı Satır algoritması: 1. başla 2. enbüyük=0 3. sayaç ( X=1 to 5) 4. yaz x +.sayı 5. oku sayı 6. eğer 6.1. (sayi > enbüyük) enbüyük = sayı 7. Sayacsonu 8. Yaz En büyük = + enbüyük 9. Dur Sözde kodu Enbüyük = 0, sayı=0 For x=1 to 5 Display x +.sayı Get sayı 34

İf sayi > enbüyük then Enbüyük = sayı Endif Endfor Display en büyük = + enbüyük Bilgisayar kodu : static void Main(string[] args) int x = 0; int enbüyük = 0; int sayi =0; string girilen = ""; for( x=1 ; x<=5; x++) Console.Write(x + ".sayı ="); sayi = int.parse(girilen); if (sayi > enbüyük) enbüyük = sayi; Console.WriteLine("En Büyük =" + enbüyük); Console.ReadKey(); Ortalama bulmak Klavyeden girilecek olan sayıların ortalamasını bularak ekranda yazdıracak olan algoritmayı tasarlayalım Girdiler: girilen sayılar Çıktı: sayıların ortalaması Satır algoritması 1. Başla 2. Toplam :0, adet :0 3. Yaz ortalaması alınacak sayıları giriniz 4. Oku adet 5. Sayac (x=1 to adet) 6. Yaz X +.sayı 7. Oku sayı 8. Toplam = toplam + sayı 9. Sayacsonu 10. Yaz ortalama = + (toplam / adet) 11. Dur 35

Sözde kod: Adet :0, toplam :0 Display sayıları giriniz Get adet For x = 1 to adet Display X +.sayı Get sayı Toplam = toplam + sayı Endfor Display ortlama = + (toplam / adet) Bilgisayar kodu : static void Main(string[] args) int x = 0; int sayi = 0; int toplam = 0; int adet = 0; string girilen = ""; Console.Write("Ortalaması alınacak sayı adedini giriniz"); adet = int.parse(girilen); for (x = 1; x <= adet; x++) Console.Write(x + ".sayı"); sayi = Convert.ToInt32(girilen); toplam = toplam + sayi; Console.WriteLine("Ortalama = " + toplam / adet); Console.ReadKey(); Faktöriyel hesabı : Faktöriyel, 1 den başlayarak n ye kadar olan pozitif tam sayıların çarpımına denilmektedir. Bu çarpıma n faktöriyel denir ve n! şeklinde gösterilir. 1. Başla 2. Fakt =1, sayı :0 3. Yaz sayı : 4. Oku sayı 5. Sayaç (x=sayi to 1 step -1) 6. Fakt = fakt * sayaç 7. Sayacsonu 8. Yaz sayi +! = + fakt 9. Dur 36

Sözde kodu : Fakt =1, sayı=0 Display sayı Get sayı For(x=sayi to 1 step -1) Fakt = fakt *x Endfor Display sayi +!= + fakt Bilgisayar kodu: static void Main(string[] args) int sayi = 0; int faktöriyel = 0; int x = 0; string girilen = ""; faktöriyel = 1; Console.Write("sayı ="); sayi = int.parse(girilen); for (x = sayi; x >= 1; x--) faktöriyel = faktöriyel * x; Console.WriteLine(sayi + "! =" + faktöriyel); Console.ReadKey(); Fibonacci sayısı : Fibonacci Sayı Dizisi Nedir Her sayının kendisinden önce gelen iki sayının toplamı şeklinde yazılıp devam ettiği sayı dizisine Fibonacci Sayı Dizisi denir. 1,1,2,3,5,8,13,21,34,55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, 6765, 10946, Örnek: 1,1, 1+1= 2, 1+2=3, 2+3=5, 3+5=8, 5+8=13, 8+13=21 İkiöncekisayı Biröncekisayı yenisayı 0 1 1 1 1 2 37

İkiönceki = biröncekisayi Biröncekisayı = yenisayı Yenisayı = ikiöncekisayı +biröncekisayı Başlangıç (0,1) ikiöncekisayı biröncekisatyı yenisayı 1 1 2 0 1 = 1 1 1 = 2 1 2 = 3 2 3 = 5 3 5 = 8 5 8= 13 Satır Algoritması: 1. Başla 2. İkiöncekisayı=0, biröncekisayı=1 3. Yenisayi=0 4. Yaz ikiöncekisayi 5. Yaz biröncekisayı 6. Sayaç(x =3 to 10) 7. Yeni sayi = ikiöncekisayı + biröncekisayı 8. Yaz yenisayı 9. İkiöncekisayı = biröncekisayı 10. Biröncekisayı = yenisayı 11. Sayacsonu 12. Dur Sözde kod: İkiöncekisayı=0, biröncekisayı=1 Yenisayi=0 Display ikiöncekisayı Display biröncekisay For x = 3 to 10 Yenisayı= ikiöncekisayı + biröncekisayı Display yenisayı İkiöncekisayı = biröncekisayı Biröncekisayı = yenisayı Endfor Bilgisayar kodu: static void Main(string[] args) int ikiöncekisayı = 0; int biröncekisayı = 0; int yenisayı = 0; int x = 0; 38

ikiöncekisayı = 0; biröncekisayı = 1; Console.WriteLine(ikiöncekisayı); Console.WriteLine(biröncekisayı); for (x = 3; x <= 40; x++) yenisayı = ikiöncekisayı + biröncekisayı; Console.WriteLine(yenisayı); ikiöncekisayı = biröncekisayı; biröncekisayı = yenisayı; Console.ReadKey(); 39