ENF-106 TEMEL BİLGİSAYAR PROGRAMLAMA VE FORTRAN. Prof. Dr. H. Mehmet SAHIN, Assoc. Prof. Dr. E. Kurt
|
|
- Deniz Toner
- 6 yıl önce
- İzleme sayısı:
Transkript
1 ENF-106 TEMEL BİLGİSAYAR PROGRAMLAMA VE FORTRAN Prof. Dr. H. Mehmet SAHIN, Assoc. Prof. Dr. E. Kurt
2 GİRİŞ
3 PROGRAM ve PROGRAMCI Bilgisayar ve Hesap Makinası Bilgisayar insan müdahalesi olmaksızın gerçekleştirir. Veriler arasında karşılaştırmalar yaparak bir sonraki işleme kararlar verir ve gerçekleştirir. Hesap makinası bunları yapamaz. Bir problemi nasıl çözeceğini anlatmak üzere bilgisayara vereceğimiz komutlara KOD (code) veya PROGRAM denir. Kod, bilgisayara neler yapacağını adım adım anlatır. Bilgisayara verilecek komutları hazırlamaya KODLAMA (coding) veya PROGRAMLAMA, işlemi gerçekleştiren kişiye PROGRAMCI (programmer) denir.
4 PROGRAMLAMA DİLLERİ İnsan ile bilgisayar arasında haberleşmeyi bilgisayar dilleri sağlar. Bilgisayara verilecek komutlar, kullanılacak program dilinin gramerine uygun olmalıdır. Bilgisayar dillerinde kesinlik vardır. Sözgelimi READ yerine REOD yazılamaz.
5 MAKİNA DİLİ (Assembly) Bilgisayarın ana dili dir. Bu dil sadece 1 ve 0 gibi sayılardan oluşur. Bilgisayarlarla iletişim bu dil ile kurulur. Makine dilinde bir program yazmak oldukça zordur. Çünkü 1 ve 0 bize bir anlam ifade etmez. Bunun yerine PROGRAMLAMA dilleri geliştirilmiştir. Bunlar; FORTRAN, BASIC, PASCAL, COBOL, C gibi dillerdir. Bu PROGRAMLAMA dilini MAKİNA DİLİ ne çeviren yazılımlara DERLEYİCİ (compiler) denir.
6 TARİHÇE 1953 yılının sonlarında, IBM'de çalışan John W. Backus ve ekibi assembly diline alternatif olarak IBM 704 ana bilgisayarında daha verimli çalışabilecek bir programlama dili önermiştir. İlk taslak "The IBM Mathematical FORmula TRANslating System" adı altında 1954'de tamamlanıp 1957'de 32 deyim içeren ilk Fortran derleyicisi dağıtımı yapılmıştır.
7 Neden FORTRAN? Sayısal hesaplamada güçlü ve yeterince esnek bir dildir. Tanımlayıcı adları küçük-büyük harf ayrımı yapmaz (case insensitive). Basit bir yapısı olduğu için, programlama girişi iyi bir dildir. Farklı platformlarda (windows, linux, unix) derleyicilere sahiptir. Özel veri tipi tanımlamasına izin verir. Taşınabilir bir dildir. Diğer dillerde olmayan esnek kütüphane fonksiyonlarına sahiptir. Yapısal bir dildir. Sayısal hesaplamada C/C++, Java ve görsel programlama dillerinden daha güçlü ve hızlıdır.
8 BİR SORUNUN BİLGİSAYAR İLE ÇÖZÜM AŞAMALARI Sorun Analizi Algoritmanın Hazırlanması Akış Diyagramının Çizilmesi Programın Kodlanması Test ve Uygulama
9 SORUN ANALİZİ Her şeyden önce sorunun programcı tarafından iyice anlaşılmış olması gerekir. Giriş-çıkış birimleri ve bilgileri, bilgilerin desenleri (biçim, şekil, format, düzen) belirlenir. Programda kullanılacak değişkenler tanımlanır ve türleri belirlenir. Sorunun çözüm yolu belirlenir ve çözüm için gerekli matematiksel modeller kurulur.
10 Örnek Problem: Klavyeden girilen iki sayının toplamının ekrana yazdırılmasını sağlayan kodun algoritmasını yazınız? i. İstenenler: 1. Sayıların klavyeden girilmesi 2. Toplamının bulunması 3. Toplamının ekrandan görüntülenmesi ii. Verilenler : Giriş düzeni belirtilmeyen iki sayı iii. Değişken Tanımı: A: Birinci sayıyı B: İkinci sayıyı C: İki sayının toplamı iv. Çözümün matematiksel modeli C=A+B
11 ALGORİTMANIN HAZIRLANMASI Algoritma nedir? Herhangi bir sorunun çözümü için izlenecek yoldur. Algoritmada; 1. Verilerin bilgisayara hangi çevre birimlerinden girileceğini, 2. Problemin nasıl çözüleceğini, 3. Hangi aşamalar kullanılarak sonuç alınacağını, 4. Sonucun nasıl ve nereye yazılacağını alternatif bir yoruma izin vermeden ifade edilmelidir. Algoritma hazırlanırken, çözüm için yapılması gereken işlemler, öncelik sıraları göz önüne alınarak, ayrıntılı bir biçimde tanımlanır.
12 ÖRNEK 2. Verilen iki sayının toplamını bulan algoritmayı yazınız? Adım 1- Başla Adım 2- Birinci sayıyı oku (A) Adım 3- İkinci sayıyı oku (B) Adım 4- İki sayıyı topla (C=A+B) Adım 5- Toplamı yaz ( C ) Adım 6- Dur NOT: Bir algoritma yazımında mutlaka sorun çözümünün başladığını gösteren BAŞLA ifadesi ile işlemlerin bittiğini belirten DUR ifadesi olmalıdır.
13 ÖRNEK 3. f ( x) sin( x) cos( x) x x Klavyeden girilen bir x [0, 1] değeri için yukarıdaki fonksiyonun değerini hesaplayan ve yazdıran programın algoritmasını yazınız? İstenenler: 1. Sayının klavyeden girilmesi 2. f(x) in hesaplanması 3. f(x) in yazdırılması Değişken tanımı: x: verilen sayı fx: fonksiyonun değeri Çözüm : Verilen matematiksel ifade
14 Algoritma: Adım 1- Başla Adım 2- x in değerini oku Adım 3- x in değeri 0 dan büyük eşit ve 0.5 den küçük ise Adım 6 ya git Adım 4- fx = cos(x) Adım 5- Adım 7 ye git Adım 6- fx = sin(x) Adım 7- fx i yaz Adım 8- Dur
15 AKIŞ DİYAGRAMLARI Herhangi bir sorunun çözümü için izlenmesi gerekli olan aritmetik ve mantıksal adımların söz veya yazı ile anlatıldığı algoritmanın görsel olarak simge yada sembollerle ifade ediliş şekline AKIŞ ÇİZGELERİ (flowchart) adı verilir. Akış Diyagramlarının oluşturulma nedeni: 1. Sorun çözme sürecini daha anlaşılır hale getirir. 2. İş akışını kontrol eder. 3. Programın kodlanmasını kolaylaştırır. Uygulamada önce programın ana hatlarını gösteren genel bir akış çizgesi hazırlanır. Daha sonra ise her adım için ayrıntılı akış çizgesinin çizimi yapılır.
16 AKIŞ ÇİZGELERİ SİMGELERİ Algoritmanın başladığını yada sona erdiğini belirtmek için kullanılır. Klavye aracılığı ile giriş yada okuma yapılacağını gösterir. Yazıcı aracılığı ile çıkış yapılacağını gösterir. Araç belirtmeden giriş yada okuma yapılacağını gösterir.
17 Hesaplama yada değerlerin değişkenlere aktarımını gösterir Aritmetik ve mantıksal ifadeler için karar verme yada karşılaştırma durumunu gösterir. Diskten okuma yada diske yazmayı gösterir. Disketten okuma yada diskete yazmayı gösterir.
18 Teyp (manyetik şerit) kütüğünü gösterir. Döngü gösterir. i Akış diyagramında iki nokta arası ilişkiyi gösterir. i herhangi bir sembol olabilir. Döngü sonunda veya diyagramın çizilemediği durumlarda kullanılır. Akış yönünü gösterir.
19 AKIŞ ÇİZGELERİNİN ÇEŞİTLERİ Akış çizgeleri içerik ve biçimlerine göre üç grupta sınıflandırılabilir. 1. Doğrusal Akış Çizgeleri 2. Mantıksal Akış Çizgeleri 3. Döngülü Akış Çizgeleri 1. Doğrusal Akış Çizgeleri: İş akışları, giriş, hesaplama, çıkış biçiminde olan akış çizgeleri bu grup kapsamına girer.
20 ÖRNEK 3. İki sayının çarpımının bulunması ile ilgili algoritmayı yazınız? A: Birinci sayı B: İkinci sayı C: İki sayının çarpımını göstersin C=A*B ALGORİTMA 1 Adım1- Başla Adım2- A yı oku Adım3- B yi oku Adım4- C=A*B yi hesapla Adım5- C yi yaz Adım6- Dur
21 BAŞLA Okuma yaptırılacak aygıt belirsiz A OKU B OKU C=A*B Aritmetik işlem C YAZ Yazma yaptırılacak aygıt belirsiz DUR
22 ÖRNEK 1. F = 2x 2 +3x-4 G = sin(x) olmak üzere Verilen bir x değeri için F*G ve F/G değerlerini hesaplayıp yazıcıda yazdıran bir programın algoritmasını ve akış diyagramını oluşturun? x : verilen sayı F : 1. Fonksiyon G: 2. Fonksiyon C: iki fonksiyonun çarpımı B: iki fonksiyonun oranı Algoritma : Adım 1. Başla Adım 2. X i oku Adım 3. F=2*X**2+3*X - 4 Adım 4. G= SIN(X) Adım 5. C=F*G Adım 6. B=F/G Adım 7. C yi yaz Adım 8. B yi yaz Adım 9. 22Dur
23 Algoritma : Adım 1. Başla Adım 2. x i oku Adım 3. F=2*X**2+3*X - 4 Adım 4. G= SIN(X) Adım 5. C=F*G Adım 6. B=F/G Adım 7. C yi yaz Adım 8. B yi yaz Adım 9. Dur Başla X F=2*X**2+3*X - 4 G= SIN(X) C=F*G B=F/G C,B Dur
24 2. Mantıksal Akış Çizgeleri Geniş ölçüde mantıksal karaları içeren akış çizgeleridir. Hesap düzenleri genellikle basittir. Örnek 1. a ve b gibi iki sayıdan büyüğünü yazıcıda yazdıran algoritma ve akış diyagramı. Algoritma: Adım 1. Başla Adım 2. A,B yi oku Adım 3. A=B ise Adım 7 e git Adım 4. A>B ise Adım 6 ya git Adım 5. B yi Yaz Adım 8 e git Adım 6. A yi Yaz Adım 8 e git Adım 7. A ve B eşit mesajını yaz Adım 8. Dur
25 Başla A, B B < = A: B A ve B eşit > A Dur
26 Örnek kişilik bir sınıfta arası her yaş grubunda kaç öğrencinin bulunduğunu belirleyip yazan akış çizgesini oluşturun Değişkenler: oy I18 I19 I20 I21 I22 : Öğrenci yaşı : 18 yaşında olan öğrenci sayısını : 19 yaşında olan öğrenci sayısını : 20 yaşında olan öğrenci sayısını : 21 yaşında olan öğrenci sayısını : 22 yaşında olan öğrenci sayısını iyos : İşlem yapılan öğrenci sayısını göstersin
27 Algoritma: Adım 1. Adım 2. Adım 3. Adım 4. Adım 5. Adım 6. Adım 7. Adım 8. Başla i18=0, i19=0, i20=0, i20=0, i21=0, i22=0, Iiyos=0 oy OKU oy =18 ise i18 i 1 artır. Adım 9 a git oy =19 ise i19 i 1 artır. Adım 9 a git oy =20 ise i20 i 1 artır. Adım 9 a git oy =21 ise i21 i 1 artır. Adım 9 a git oy =22 ise i22 i 1 artır. Adım 9 a git Adım 9. iyos = iyos +1 Adım 10. Adım 11. Adım 12. iyos < 100 ise Adım 3 e git i18, i19, i20, i21, i22 yaz Dur
28 Sayaç Tanımlama: Bir sporcunun attığı turları sayalım Bu işlemi bir sayaç ile gerçekleştirebiliriz Başlangıç i=0 i=i+1
29 Başla i18=0 i19=0 i20=0 i21=0 i22=0 iyos=0 OY H OY=18 OY=19 E E i18=i18+1 i19=i19+1 H OY=20 E i20=i20+1 H OY=21 E i21=i21+1 H OY=22 E i22=i22+1 H iyos=iyos+1 E iyos<100 H i18 i19 i20 i21 i22 Yaz Dur
30 3. Yineli (Döngülü) Akış Çizgeleri: Sorunu çözümü için, çözümde yer alan herhangi bir adım yada aşamanın birden fazla kullanıldığı akış diyagramlarına döngülü akış diyagramları denir. İş akışları genel olarak bir başlangıç değeri verme, hesaplama, kontrol biçiminde olmaktadır. Örnek 1. 3 öğrencinin bir sınavdan aldıkları notların ortalamasını bulan ve yazan bir programın algoritma ve akış diyagramını yapınız? Değişkenler: ONOT: öğrencinin notu NOTT: notların toplamı NORT: notların ortalaması ISAYI : öğrenci sayısını göstersin NOTT=ONOT1+ONOT2+ONOT3 ISAYI=ISAYI+1 NOTT=NOTT+ONOT NORT=NOTT/ISAYI NOTT=ONOT1 NOTT=NOTT+ONOT2 NOTT=NOTT+ONOT3
31 Algoritma: Adım 1. Başla Adım 2. NOTT=0 Adım 3. ISAYI=0 Adım 4. ONOT oku Adım 5. NOTT=NOTT+ONOT Adım 6. ISAYI=ISAYI+1 Adım 7. ISAYI < 3 ise adım 4 e git Adım 8. NORT=NOTT/ISAYI Adım9. NORT yaz Adım 10. Dur Başla NOTT=0 ISAYI=0 ONOT NOTT=NOTT+ONOT ISAYI=ISAYI+1 < > ISAYI:3 = NORT=NOTT/3 NORT DUR
32 Bu akış diyagramında Not okuma : 3 kez Toplam hesaplama : 3 kez Öğrenci sayısını artırma: 3 kez tekrarlanmaktadır. Eğer bu işler 100 öğrenci için yapılsaydı tekrar sayısı 100 olurdu. Üç öğrencinin notları 50, 60, 70 olsaydı akış diyagramının işletilmesi aşağıdaki sonuçları verecektir. ISAYI NOTT ONOT Karşılaştırma NORT =1 0+50=50 50 (ISAYI=1)<3 1+1= = (ISAYI=2)<3 2+1= = (ISAYI=3)=3 60
33 Yineleme sembolü ile Başla Başla INOT=0 ISAYI=0 INOT=0 ONOT ISAYI=1,3,1 INOT=INOT+ONOT ONOT Yineleme Sembolü ISAYI=ISAYI+1 INOT=INOT+ONOT < > ISAYI:3 = NORT=INOT/3 ISAYI NORT=INOT/3 NORT NORT DUR DUR
34 BÖLÜM 2 FORTRAN PROGRAMLAMA DİLİNE GİRİŞ Fortran Programlama dili soruna yönelik bir sembolik programlama dilidir. Genellikle bilimsel hesaplamalarda kullanılmaktadır Fortran Karakterleri: Fortran programlama dilinde deyimleri yazabilmek için kullanılan karakterler: 0 dan 9 a kadar 10 RAKAM A dan Z ye İngiliz alfabesindeki 26 HARF %, #, $, [, (, ) gibi özel işaretler ve işlem işaretleri + toplamayı, - çıkarmayı, / bölmeyi * çarpmayı simgeler
35 2.2. Bilgi Türleri : Fortran Programlama dilinde kullanılan bilgi türleri üç grupta toplanabilir. i. Sayısal bilgiler ii. Alfa sayısal Bilgiler iii. Mantıksal bilgiler Ayrıca bu bilgi türlerinin her birisi i. Değişmezler ii. Değişkenler olmak üzere ikiye ayrılır Sayısal Değişmezler Fortran programlama dilinde yazılan programlarda genellikle sayısal bilgiler kullanılır.
36 Sayısal değişmezler dört gruba ayrılırlar: a. Tamsayılar b. Kesirli sayılar c. Çift duyarlıklı sayılar d. Karmaşık sayılar a. Tamsayı değişmezler: Bu bilgiler 0 dan 9 a kadar olan rakamlarla + ve işaretlerden oluşur. + veya işareti taşımayan bilgiler pozitif olarak kabul edilir. Geçerli örnekler: Geçersiz örnekler:
37 b. Kesirli sayı değişmezler : Bu bilgiler 0 dan 9 a kadar rakamlar ile +, - ve ondalıklı nokta işaretlerinden oluşur. Tamsayı değişmezlerinde olduğu gibi işareti zorunlu olup + işareti zorunlu değildir. İşaretsiz bilgiler pozitif kabul edilir. Kesirli sayılar fortran dilinde iki şekilde gösterilebilir: 1. Sabit noktalı kesirli sayı değişmeler: Bilgilerde ondalıklı nokta kullanılan sayılardır Kayan noktalı kesirli sayı değişmezler: İki kısımdan oluşur Mantis adı verilen sayısal bölüm Üs adı verilen 10 un kuvvetleri Üs kısmı E harfi ile gösterilir *10^ E *10^(-6) 1.212E-6 Üs kısmı bilgisayardan bilgisayara değişmektedir.
38 c. Çift duyarlılıklı değişmezler: Kesirli sayıların mantis kısmının bilgisayar belleğinde saklanması birtakım zorluklar içerir. Mantis için ayrılan uzunluk yeterli olmayabilir. Mantis 4 uzunluğunda bir yere yerleşiyorsa; 2/3 sayısı bilgisayar belleğinde olarak saklanır. Hesaplamalar sonunda bulunan sayılar ilk dört rakamla saklanır. FORTRAN programlama dilinde daha duyarlı olarak kullanılan sayılara çift duyarlıklı sayılar (DOUBLE) denir. Bu sayıların mantisi kesirli sayılara oranla bilgisayar belleğine iki kat daha uzun yere yerleşir. Üs kısmı D harfi ile gösterilir. Örnekler: D2.5 (Üs tamsayı olmalı) E-3 (kesirli sayıdır) 0.166*10^(-10) 0.15 D
39 d. Karmaşık Değişmezler: Karmaşık sayılar gercel ve sanal olmak üzere iki kısımdan oluşur. (2.5, -12) Gerçek Kısım Sanal Kısım Tamsayı Kesirli sayı Çift duyarlılıklı sayı Tamsayı Kesirli sayı Çift duyarlılıklı sayı Geçersiz örnekler: (14 22) virgül eksik (2.23E4,1.1D3) aynı duyarlılıklı değil (33.123) iki değişmez kullanılmalı
40 ii. Alfasayısal Değişmezler: Eğer bir bilgi geçerli bütün Fortran karakterlerini kullanabiliyorsa (A, k, +, %, &,...) onlara alfa sayısal denir. Alfa sayısal değişmezler iki türlü yazılır (Derleyiciden derleyiciye değişir). 1. Yazılacak bilgi tırnak içine alınır bilgi Ders Listesi 2. WH bilgi formu W: Bilgide bulunan karakter sayısı H: Bilginin alfa sayısal olduğunu gösterir. bilgi: Bilginin kendisi Örnek : Adım 7. A=B yaz A=B veya 3HA=B
41 iii. Mantıksal Değişmezler: Mantıksal değişmezler karar verme işlemleri sırasında kullanılır. İki tanedir: 1..TRUE. Belleğe 1 2..FALSE. Belleğe 0 yerleşir Değişkenler: FORTRAN programının uygulanması sırasında farklı değerler alabilen büyüklüklere değişkenler denir. Değişkenler sembolik isimlerdir. i. Sayısal Değişkenler: a. Tamsayı değişkenler b. Kesirli değişkenler c. Çift duyarlılıklı değişkenler d. Karmaşık değişkenler
42 ii. Alfa sayısal değişkenler iii. Mantıksal değişkenler Değişkenlerin her birisi basit ve dizinli değişken olmak üzere ikiye ayrılır. Değişkenin sembolik adı belirlenirken dikkat edilecek kurallar: 1. Değişken adının ilk karakteri harf olmalıdır. sayı (geçerli) 1sayı (geçersiz) 2. Değişken adı en çok 6 karakter içermelidir. sayı sayısal (geçersiz) Not: Derleyiciden derleyiciye değişir. 3. Değişken adı alfabetik ve sayısal karakterlerden oluşmalıdır. I31 I+I2
43 4. Tersi söylenmedikçe I, J, K, L, M, N harflerinden birisi ile başlayan değişkenler tamsayı değişkenleridir. ISAYI 5. Tersi söylenmedikçe I, J, K, L, M, N harfleri dışındaki 20 harften biri ile başlayan değişkenler kesirli sayı değişkenleridir. SAYI 6. Tamsayı ve kesirli sayı değişkenler yukarıdaki kurala uymadıkları zaman, alfa sayısal ve mantıksal değişkenler ise her zaman programda tanımlanmalıdır. 7. Değişkenlerin bilgisayar belleğindeki görünümü, aynı türden değişmezler gibidir.
44 3.2.3 Değişken türlerinin programda Tanımlanması: Değişkenlerin türleri, FORTRAN programının başında uygulanabilir deyimlerden önce tip deyimleri kullanılarak yeniden tanımlanabilir. Örnek. INTEGER SAYI, ORT (Tam sayı değişken ismi tanımlar) REAL ISIM, N (Kesir sayı değişken ismi tanımlar) COMLEX A,B,C (Karmaşık sayı değişken ismi tanımlar) LOGICAL P,R,S (Mantıksal değişken ismi tanımlar) CHARACTER *18 ILADI (Alfasayısal değişken ismi tanımlar) Alfa sayısal tipteki değişkenleri tanımlamak için CHARACTER deyimi kullanılır. CHARACTER * uzunluk D1 D1: Birbirinden virgül ile ayrılmış değişken listesi uzunluk : değişkenlerin alabilecekleri en fazla karakter sayısıdır.
45 Değişkenler basit yada dizinli olabilir: ÖRNEK: CHARACTER * 5, A, B, C(2) A, B, C değişkenlerinin alabileceği değerler en çok 5 karakter uzunluğunda olabilir. A= AYSE B= DURU C(1)= 1.60m C(2)= 47 kg boşluk 1 karakter yerine geçer. Burada C bir dizinli değişkendir. (2) onun boyutudur. Eğer dizinli bir değişkenin boyutu CHARACTER deyiminde belirtilmemişse mutlaka DIMENSION deyimi ile tanımlanmalıdır. CHARACTER * 5 DAT, FAT*10, SECIM Burada DAT 5 karakter, FAT 10 karakter, SECIM 1 karakter uzunlukludur.(secim için uzunluk tanımlanması yoktur)
46 2.3.Aritmetik İşlemler ve FORTRAN Aritmetik Deyimleri Aritmetik İşlemler Beş aritmetik işlem vardır. Simgeleri ve öncelik sıraları aşağıdaki gibidir. Aritmetik işlem Simgeler Öncelik Sırası Toplama + 3 Çıkarma - 3 Çarpma * 2 Bölme / 2 Üs alma ** 1 İşlemler soldan sağa doğru hangi işlem önce gelir ise bilgisayar tarafından yapılır.
47 ÖRNEK: A=2-4/2*3 A=2-2*3 A=2-6 A=-4 A=(2-4)/2*3 A=-2/2*3 A=-1*3 A=-3 A=(2-4)/(2*3) A=-2/6 A= Bir aritmetik işlemde parantez öncelik sırasını değiştirir.
48 FORTRAN Aritmetik deyimleri: Birbirinde aritmetik işlem simgeleri ve parantezlerle ile ayrılmış ve bazı kurallara uygun olarak yazılmış sayısal değişken ve değişmezler dizisine FORTRAN aritmetik deyimi denir. FORTRAN Aritmetik deyimlerinin yazımında uyulması gerekli kurallar: 1. Fortranda parantezler çarpma işlemi yerine kullnılmaz. İşlem gruplarını ayırır. A=(X**2)(2+Y) A=(X**2)*(2+Y) 2. İki aritmetik İşlem simgesi yan yana kullanılmaz. A=X*-B A=X/-B A=X*(-B) A=X/(-B) 3. Birbirini takip eden üs alma işlemlerinde, işlem sırası parantezlerle ifade edilmelidir. A (B C) A**B**C yada A**(B**C)
49 4. Fortran aritmetik deyimlerinde iç içe parantezler kullanıldığında öncelik sırası en içteki parantezden dışa doğrudur. 5. Değişmez / değişmez sonucunda elde edilen sayı değişmezlerle aynı türdendir. A**(1/2)=A**0=1 dir Doğrusu A**(1./2.) olmalıdır. A Mantıksal İşlemler Fortran programlama dili mantıksal bilgiler üzerinde işlem yapma olanağı sağlar. Mantıksal işlemlerde mantıksal deyimler, mantıksal elamanlar ve mantıksal bağlantı elamanları kullanılır. i. Mantısal deyimler: Mantıksal deyimler mantıksal değerleri bulmak için kullanılır. Sonuçta bulunan değer doğru veya yanlış olabilir.
50 Mantıksal deyim bazı kurallara uygun olarak yazılmış sayısal/mantıksal değişken /değişmezler dizisidir. Örnek: P,R mantıksal, A,B,C de sayısal değişkenler olsun P.OR.R (A+B*C).EQ.(A*B) ii. Mantıksal Elemanlar: Mantıksal değişmez/değişken/deyimler arasında kullanılan mantıksal elamanlar üç tanedir. a. Olumsuzluk elamanı (.NOT.) mantıksal değerin tersini verir. P doğru ise.not.p yanlış P yanlış ise.not.p doğru
51 b. VE elamanı (.AND.) P.AND.R P ve R mantıksal değişmez olmak üzere: P R P.AND.R yanlış yanlış yanlış yanlış doğru yanlış doğru yanlış yanlış doğru doğru doğru c. VEYA elamanı(.or.) P R P.OR.R yanlış yanlış yanlış yanlış doğru doğru doğru yanlış doğru doğru doğru doğru
52 Mantıksal elamanların kullanımına ait kurallar: 1. Mantıksal elamanları değişken adlarından ayırabilmek için baş ve sonlarına birer nokta konulur. 2. Mantıksal elamanlarda öncelik sırası şöyledir. Mantıksal elaman Öncelik sırası.not. 1.AND. 2.OR Aritmetik işlemlerde olduğu gibi mantıksal deyimlerde birden fazla aynı öncelik sırasında mantıksal elaman kullanılmışsa mantıksal elamanlarda öncelik sırası soldan sağa doğru olur. 4. İşlem sırası parantezler kullanılarak değiştirilebilir.
53 P,R,T,Y mantıksal değerler olmak üzere: Geçerli Deyimler:.NOT.P T.AND.P R.OR.Y P.AND.Y.OR.R Geçersiz mantıksal deyimler: P.AND.OR.T (iki mantık deyimi yan yana gelmez) P.OR.NOT.P P.OR.(.NOT.P)
54 iii. Mantıksal Bağlantı Elamanları Mantıksal bağlantı elamanları iki sayısal değer arasına yazılır. Mantıksal bağlantı elamanları ile karşılaştırılan aynı türden iki sayısal değerin sonucu doğru veya yanlıştır. İşareti Anlamı FORTRAN < Küçük.LT. Küçük eşit.le. = Eşit.EQ. Eşit değil.ne. > Büyük.GT. Büyük eşit.ge.
55 ÖRNEK: A.GE.(B+1.) Eğer A (B+1.) ise sonuç doğru Eğer A < (B+1.) ise sonuç yanlış iv. Mantıksal İşlemlerde Öncelik Sırası Bir mantıksal deyiminin hesaplanmasındaki işlemlerin öncelik sırası şöyledir. 1. Aritmetik deyimler 2. Mantıksal Bağlantı elamanları 3. Mantıksal elamanlar A,B,C ve D sayısal değişkenler ve P ve Q mantıksal değişkenler (A-2*B).LT.C.AND.P.OR.Q : (A-2*B).LT.C.AND.P.OR.Q
56 2.4.AKTARMA DEYİMLERİ: Aritmetik Aktarma Deyimi: Bir aritmetik deyimin değerini hesaplayıp bir sayısal değişkene aktarır. Genel Yazılışı: D: Değişken AD: Aritmetik deyim olmak üzere D = AD Aritmetik aktarma deyiminde uyulması zorunlu kurallar: 1. Eşitliğin sol tarafında sayısal değişken adından başka bir şey bulunamaz. Değişken adından önce + veya işareti bulunamaz. Y=X-Z -Y=Z-X X=A6+C-Y X+Y=A6+C 2. Eşitliğin sağ tarafında geçerli bir deyim olmalıdır.
57 3. = işaretinin anlamı cebirdeki gibi değildir. I=I+1 cebirsel olarak yanlıştır, fortran da doğrudur. I ya 1ekle I ya aktar anlamındadır. 4. Aritmetik deyim ile sayısal değişken aynı türden olmak zorunda değildir. A=1.1, J=2, K=4 olmak üzere X=A+J*2+A*K= =9.5 L=A+J*2+A*K= Mantıksal Aktarma Deyimi: Bir mantıksal deyimin değerini hesaplayıp bir mantıksal değişkene aktaran deyime denir. Mantıksal değişken = Mantıksal deyim Mantıksal değişkenlere aktarılan değerler ya doğru.true. yada yanlış FALSE olur.
58 Mantıksal aktarma deyiminin özellikleri: i. Eşitliğin sol tarafında basit veya dizinli bir mantıksal değişken bulunabilir. ii. Eşitliğin sağ tarafında herhangi bir mantıksal deyim bulunabilir. iii. = işaretin sağındaki mantıksal deyimin değerini hesaplayıp soldaki değişkene aktarma işlevini yerine getirir. FORTRAN da P=P.AND.R tipindeki deyimler doğrudur. LOGICAL P,R,Y P=.TRUE. R=.FALSE. Y=P.OR.R
59 2.5. Önceden Tanımlanmış Fonksiyonlar: Fonksiyon Matematiksel FORTRAN X in karekökü X SQRT(X) X in mutlak değeri X in eksponansiyeli e x X ABS(X) EXP(X) X in sinüsü sinx SIN(X) X in cosinüsü cosx COS(X) X in doğal log. lnx LOG(X) X in Logaritması Log x LOG10(X)
60 DERLEYİCİ
61
62
63
64
65
66
67 FORTRAN KODU 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 12! prog1.f95: ilk Fortran 95 programı! Bir çemberin alanını ve çevresini hesaplar PROGRAM Cember IMPLICIT NONE REAL :: R, Alan, Cevre REAL, PARAMETER :: PI = PRINT *,"Cemberin yaricapini girin: " READ *,R Alan = Pi * R**2 Cevre = 2 * Pi *R PRINT *,"Alan = ",Alan PRINT *,"Cevre = ",Cevre END PROGRAM Şekilde verilen Cember programı yarıçapı girilen bir çemberin çevresini ve alanını hesaplar. Satır başlarına yerleştirilen 1:, 2: 3:... rakamlarının yazılmasına gerek yoktur. Bu rakamlar sadece daha sonra program ile ilgili açıklama yapılırken, ilgili satırda bulunan kodlar izah edilirken kullanılacaktır. Bu program bilgisayara ilk.f95 (ilk.f90) adı ile kaydedilmiştir.
68 PROGRAM; deyimi ana programın başladığını gösterir. Programın adı Cember olarak verilmiş. IMPLICIT NONE; deyimi program içinde kullanılacak değişken ve sabitlerin hepsini tanımlamaya zorlar. Aksi halde, ilk harfi I,J,K,L,M,N ile başlayan değişkenler tamsayı diğerleri ise gerçel sayı kabul edilir. REAL :: R, Alan, Cevre; program içerisinde kullanılan R, Alan ve Cevre değişkenlerinin veri tipi gerçel sayı tipi (real) olarak bildirilmiştir. PARAMETER; program çalıştığı sürece içeriği değişmeyecek olan sabitlerin bildirimi için kullanılan bir deyimdir. PRINT; ekrana sabit veya değişkenleri yazdırmak için kullanılır. READ; klavyeden veri okumak için kullanılan bir deyimdir. * ve ** * çarpma işlemi için, ** kuvvet alma işlemi için kullanılan aritmetik operatörlerdir. END PROGRAM; ana programın bittiği yeri işaret eder.
69 PROGRAMIN DERLENMESİ VE ÇALIŞTIRILMASI
70
71
72
73
74
75
76 KOD YAZIMI İÇİN TAVSİYELER Program açıklamaları ve doküman hazırlama program yazıldıkça yapılır. Bu unutulmaması gereken çok önemli husustur. IMPLICIT NONE deyimi program başında mutlaka kullanılmalıdır. Fortran kodların büyük harf küçük harf ayrımı yapmasa da, anahtar kelimeler (PROGRAM, PRINT, READ, PARAMETER,...) büyük harflerle yazılır. Tanımlayıcıların (değişken, sabit, fonksiyon,... adları) ilk harfi büyük sonrakiler küçük olabilir. Örneğin; Sicaklik Asal Son_Alinan_Bit Isik_Hizi
77 Her alt yapıya girerken birkaç boşluk veya TAB tuşunu kullanın. Bu okunabilirliği arttıracaktır. Örneğin; PROGRAM Ortalama! ! 10 tamsayının ortalamasını hesaplar.! IMPLICIT NONE INTEGER :: I, X, Toplam = 0.0 REAL :: Ort DO I = 1, 10 READ *,X! sayıları oku Toplam = Toplam + X! toplamını hesapla END DO Ort = Toplam / 10.0 PRINT *, "Ortalama = ",Ort END PROGRAM Ortalama
78 2. TEMEL FORTRAN İŞLEVLERİ Giriş Veri Tipleri Tanımlayıcılar Değişkenler PARAMETER Deyimi PROGRAM Deyimi IMPLICIT NONE Deyimi Atama Operatörü (=) Aritmetik Operatörler Tip Dönüşümleri İki Kullanışlı Operatör
79 GİRİŞ Orta ve yüksek seviyeli dillerin hemen hemen hepsinde veri tipi ve değişken kavramı bulunmaktadır. Bu kısımda Fortran programlama dilindeki temel veri tipleri, tanımlayıcılar, değişkenler ve sabitler konu edilecektir.
80 VERİ TİPLERİ Veri tipi (data type), program içinde kullanılacak değişken, sabit, fonksiyon isimleri gibi tanımlayıcıların tipini, yani bellekte ayrılacak bölgenin büyüklüğünü, belirlemek için kullanılır. Bir programcının bir programlama dilinde ilk olarak öğrenmesi gereken o dile ait veri tipleridir. Çünkü bu, programcının kullanacağı değişkenlerin ve sabitlerin sınırlarını belirler. Fortran programlama dilinde beş temel veri tipi bulunmaktadır. Bunlar; INTEGER REAL CHARACTER COMPLEX LOGICAL
81 INTEGER Sabitler Bu veri tipi ile tamsayı (pozitif, negatif, sıfır) bilgisi tutulur. Aşağıda geçerli/geçersiz tamsayı sabitlere örnek verilmiştir ile arasında değişir. Geçerli sabitler Geçersiz sabitler ,
82 REAL Sabitler Bu veri tipi (pozitif, negatif, sıfır) gerçel sayı bilgisi tutulur. Aşağıda geçerli/geçersiz gerçel sayı sabitlere örnek verilmiştir. Geçerli sabitler Geçersiz sabitler ,
83 Gerçel sayılar üstel gösterimle de temsil edilebilir. Örneğin sayısı şu şekilde de yazılabilir: E2 Bu aslında matematikteki x 10 2 gösterimine eşdeğerdir. Buna göre aşağıdakiler birbiri yerine kullanılabilir E e E E E-3
84 CHARACTER Sabitler Karakter sabitler (strings) Fortran karakter kümesinden seçilen rakamlar, harfler ve özel simgeler içeren semboller topluluğudur. Fortranda karakter sabitler tek veya çift tırnak içinde belirtilir. Örneğin; ile "Ben gelmedim kavga icin..." 'Ben gelmedim kavga icin... aynı anlamda (26 karakter uzunlukta) geçerli karakter sabitlerdir.
85 Aşağıda geçerli ve geçersiz karakter sabilere örnek verilmiştir. Geçerli sabitler Geçersiz sabitler "Fortran" 'Fortran" 'Gazi Universitesi' "Gazi Universitesi' "Ali'nin kitabi" 'Ali'nin kitabi Birden çok karakter sabit birleştirme operatörü, //, ile bir araya getirilir. Yani, "Ben ezelden beridir " // "hür yaşadım, hür yaşarım. işlemi ile, iki karakter sabit aşağıdaki gibi tek bir çatı altında toplanabilir. "Ben ezelden beridir hür yaşadım, hür yaşarım."
86 COMPLEX Sabitler Fortran karmaşık (complex) sayılarla çalışmaya izin verir. Herhangi bir complex sayı a + bi şeklinde gösterilir. Burada i 2 = -1 dir. a ve b gerçel sayı olmak üzere, bir karmaşık sayı Fortranda; (a, b) şeklinde ifade edilir. Örneğin; (3.0, 4.0) ==> i (0.0, 1.0) ==> i (1.0, 0.0) ==> 1.0 (1.3E-2, 0.1) ==> i
87 LOGICAL Sabitler Fortran'da iki tane mantıksal (logical) sabit vardır. Bunlar.TRUE. ve.false. dır. Koşullu işlem gerektiren deyimlerde kullanılır. Örneğin aşağıdaki fonksiyon N sayısı çift ise doğru (.TRUE.) değilse yanlış (.FALSE.) değeri gönderir. LOGICAL FUNCTION Cift(N) INTEGER,INTENT(IN) :: N IF(MOD(N,2)==0) THEN Cift =.TRUE. ELSE Cift =.FALSE. END IF END FUNCTION
88 TANIMLAYICILAR Tanımlayıcılar (Identifiers) program içinde kullanılan değişken, sabit, fonksiyon, modül, yapısal veri tipi gibi nesnelere verilen sembolik isimlerdir. Bir tanımlayıcı kullanırken aşağıdaki kurallara uyulmalıdır. Bir tanımlayıcı; En fazla 32 karakterden oluşabilir. 32 karakterden uzun değişken adları ilk 32 karakteri değerlendirilir. Geriye kalan karakterler işleme tabi tutulmaz, İngiliz alfabesinde bulunan karakterler (A-Z) veya (a-z), rakamlar (0-9) ve alt çizgi ('_') karakterleri kullanılarak oluşturulmalıdır. Türkçe karakterler, özel karakter veya boşluk karakteri kullanılamaz. Herhangi bir rakam ile başlayamaz. İlk karakter bir harf olmalıdır. Sonrakiler rakamlardan oluşabilir.
89 Bu kurallara göre aşağıdaki tanımlayıcıların geçerliliğini inceleyiniz. Değişken/Sabit/Fonksiyon/Yapı Adı Geçerlilik Açıklama Asal geçerli - Momentum geçerli - ivme geçerli - Olasilik geçerli - IsikHizi geçerli - isik_hizi geçerli _ kullanılabilir isik hizi ışık_hızı 1Bit geçersiz Boşluk kullanılmaz geçersiz Türkçe karakter olmaz geçersiz Rakamla başlanamaz
90 DEĞİŞKENLER Değişkenler bilgisayarın geçici belleğinde bilginin saklandığı gözlere verilen sembolik adlardır. Fortranda, bir değişken tanımlandığında bu değişken için bellekte bir hücre ayrılır. Değişkenin tipi, ilgili hücreye yazılacak sayısal verinin tipini belirler. Değişken adları geçerli bir tanımda olmalıdır ve programın başında bulunmalıdır. Değişken bildirimi şöyle yapılır; Veri Tipi :: değişkenler listesi Burada veri Tipi genellikle beş temel veri tipinden (INTEGER, REAL, CHARACTER, COMPLEX, LOGICAL ) biridir. değişkenler listesi birbirinde virgüllerle ayrılmış değişken adlarıdır. Örneğin, INTEGER :: Kutle, I, J, Faktoriyel REAL :: X, Ivme, Hiz Değişkenlere aşağıdaki gibi başlangıç değeri verme işi yine bildirim kısmında yapılır. INTEGER :: Kutle = 70, I, J, Faktoriyel = 1 REAL :: X, Ivme = 9.8, Hiz = 0.0
91 Programlama dillerinde karakter toplulukları katar (string) olarak adlandırılır. Fortranda, en fazla 10 karakter tutabilen Ad ve 20 karakter tutabilen Soyad katarları şöyle tanımlanabilir; CHARACTER (LEN=10) :: Ad CHARACTER (LEN=20) :: Soyad Katar uzunluğunu gösteren LEN deyiminin kullanımı isteğe bağlıdır. Bildirim aşağıdaki gibi de yapılabilir: CHARACTER (10) :: Ad CHARACTER (20) :: Soyad Katar uzunlukları belirtmek için *n işlemi de kullanılabilir. Burada n katarın uzunluğunu gösterir. CHARACTER (10) :: Ad, Soyad*20
92 Burada Ad 10, Soyad 20 karakter uzunluğundadır. Katarlara ilk değer ataması aşağıdaki gibi yapılır: CHARACTER (10) :: Ad = "Mustafa" veya CHARACTER (20) :: Soyad = "Özüdoğru" CHARACTER (10) :: Ad, Soyad*20 Ad = "Mustafa" Soyad = "Özüdoğru" COMPLEX veri tipine sahip değişkenlerin bildirimi: COMPLEX :: Z1, Z2 şeklinde yapılır. Bu tip değişkenlere başlangıç değeri verme, diğer veri tiplerinde olduğu gibi, bildirim kısmında yapılır: COMPLEX :: Z1 = (3.0, 4.0), Z2 = (1.7, -2.1)
93 PARAMETER Deyimi Program içerisinde sık kullanılan sabitlere isim vermek mümkündür. Sabit bildirimi, başlangıç değeri verilen değişken bildirimi gibi yapılır. Ancak, veri tipinden sonra PARAMETER anahtar sözcüğü konmalıdır. Örneğin; REAL, PARAMETER :: Pi = , IkiPi = 2.0*Pi INTEGER, PARAMETER :: EOF= -1, Max = 100 gibi sabit bildirimleri geçerli olup bunların içerikleri program boyunca değiştirilemez. Yalnızca kullanılabilir.
94 PROGRAM Deyimi Fortran ana programları PROGRAM deyimi ile belirtilen yerden başlar, END PROGRAM deyimi ile son bulur. PROGRAM deyiminin kullanımı zorunlu değildir. Eğer kullanılmazsa, programın sonu END ile bitirilmelidir. PROGRAM deyimi kullanıldığında, programa geçerli tanımlayıcı olan bir isim verilmesi gerekir. END PROGRAM'dan sonra bu isim isteğe bağlı belirtilebilir. Aşağıdaki iki programın çıktısı Merhaba Fortran! dır. PROGRAM Mesaj PRINT *,"Merhaba Fortran!" END PROGRAM Mesaj PRINT *,"Merhaba Fortran!" END
95 IMPLICIT NONE Deyimi Bir değişkene veya sabite program başında bir tip verilmesi zorunlu değildir. Herhangi bir değişkenin tipi bildirilmemişse, Fortran bu değişkene INTEGER veya REAL veri tip atar. Eğer değişkenin adı I, J, K, L, M, N (veya i, j, k, l, m, n) ile başlıyorsa, değişken INTEGER aksi halde REAL veri tipine sahipmiş gibi değerlendirilir. Bu özellik iç isim çevrimi (implicit naming conversion) olarak adlandırılır. İç isim çevrimini iptal emek için IMPLICIT NONE deyimi kullanılır. Bu sayede kullanıcı bütün değişkenlerin tipini kendi belirler. Uzman Fortran programcıları IMPLICIT NONE deyimini her zaman kullanmayı tercih ve tavsiye ederler. IMPLICIT NONE REAL, PARAMETER :: Pi = INTEGER :: I, N...
96 ATAMA OPERATÖRÜ(=) = sembolü birçok programlama dilinde eşitliği değil bir atama işlemini gösterir. Derleyici; X = A + B gibi bir satırla karşılaştığında, önce = sembolünün sağındaki A + B işlemini hesaplayıp sonucunu x'e atar. Buna göre aşağıdaki atamaları inceleyiniz. IMPLICIT NONE INTEGER :: K, Y, X = 2 K = X + 5! K = 7 K = K + 1! K = 8 X = X * 2! X = 4 Y = X / 4! Y = 1
97 ARİTMETİK OPERATÖRLER ( ) * / + - ** operatörleri aritmetik işlemleri kotarmak için kullanılır. Bunlar sırasıyla parantez içi, çarpma, bölme, toplama, çıkarma ve kuvvet alma operatörleridir. Yandaki programda, 6 aritmetik operatörün kullanımı gösterilmiştir. 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: PROGRAM Aritmetik_Operatorler! ! prog02.f95! Aritmetik Operatörlerin kullanımı! IMPLICIT NONE INTEGER :: x = 15, y = 3 PRINT *,"x + y = ", x + y PRINT *,"x - y = ", x - y PRINT *,"x * y = ", x * y PRINT *,"x / y = ", x / y PRINT *,"x **y = ", x ** y PRINT * PRINT *,"x+y/2 = ", x+y/2 PRINT *,"(x+y)/2 = ", (x+y)/2 END PROGRAM ÇIKTI x + y = 18 x - y = 12 x * y = 45 x / y = 5 x **y = 3375 x+y/2 = 16
98 Bir formül içerisinde bir çok değişken veya sabit olabilir. Bu değişken ve sabitler birbirinden farklı tipte olursa, hesap sonucunun hangi tipte olacağı önemlidir. Bir bağıntıda, içeriği dönüşüme uğrayan değişkenler eski içeriklerini korurlar. Dönüştürme işlemi için geçici bellek alanı kullanılır. Dönüştürülen değer kullanıldıktan sonra o alan serbest bırakılır. INTEGER T; REAL G; TİP DÖNÜŞÜMLERİ bildirimlerine göre: Bağıntı Sonuç Tipi T+5 INTEGER T*5 INTEGER T+5.0 REAL G+T REAL G+T-2 REAL T/2 INTEGER T/2.0 REAL NOT: Tamsayılar arası bölme kesme hatalarına (truncation error) neden olur. Bunun anlamı iki tamsayının oranı yine bir tamsayıdır. örneğin: 4/2 = 2; ama 3/2 = 1 (1.5 değil). Fakat 4/2.0 = 2.0 ve 3/2.0 = 1.5 dir.
99 Aşağıdaki program, tip dönüşümlerinin önemini gösteren oldukça basit bir örnektir. 01: PROGRAM Tip_Donusumleri 02:! : :! prog03.f95 05:! Tip dönüşümleri 06:! : : IMPLICIT NONE 09: REAL :: A, B, C 10: INTEGER :: I, J, K 11: A = 3. 12: B = 4. 13: I = 5 14: J = 3 15: C = A + I / J 16: K = A / I + 2 * B / J 17: PRINT *, C, K 18: END PROGRAM 19: ÇIKTI
100 İKİ KULLANIŞLI OPERATÖRLER Son olarak Fortran 90 ile gelen ve programın anlaşılabilirliğini arttıran iki operatörden bahsedelim. Bu operatörler & ve ; sembolleri ile temsil edilir. & Operatörü Bu operatör sayesinde, uzun aritmetik deyimler içeren formülleri kesmek mümkündür. Örneğin; Z = ( (X**2 + 2.*X + 3.)/(5.+Y)**0.5 - (( *X**3)/Y**1.5)**0.5 ) / (X**2-4.*X*Y - 5.*X**(-0.8)) gibi bir uzun formül aşağıdaki gibi ikiye Z = ( (X**2 + 2.*X + 3.)/(5.+Y)**0.5 - (( *X**3)/Y**1.5)**0.5 ) & / (X**2-4.*X*Y - 5.*X**(-0.8)) veya üçe Z = ( (X**2 + 2.*X + 3.)/(5.+Y)**0.5 - & (( *X**3)/Y**1.5)**0.5 ) & / (X**2-4.*X*Y - 5.*X**(-0.8)) bölünerek yazılabilir:
101 ; Operatörü Bu operatör & operatörünün tersine, bir satırda birden çok işlem veya formülü yazmaya izin verir. Örneğin; v= *t ; x = *t - 9.8*t**2 satırı aşağıdaki satırlarla aynı anlamdadır. v = *t x = *t - 5.0*t**2
102 3. BASİT VE FORMATLI OKUMA/YAZMA
103 GİRİŞ Temel giriş/çıkış deyimleri bütün programla dillerinde mevcuttur. Bu deyimler, kullanıcıya ekrana, dosyaya veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden veya bir dosyadan veri girişi yapmasına izin verir. Bazen giriş ve çıkışın biçimi kullanıcı tarafından belirlenmesi gerekebilir. Bu durumda Formatlı giriş/çıkış işlemleri devre girer.
104 1. GİRİŞ/ÇIKIŞ DEYİMLERİ Giriş ve çıkış deyimleri, kullanıcılar veya cevre üniteler ile bilgisayar arasında iletişim yada bilgi alışverişi sağlayan deyimlerdir. Bilgisayara; giriş deyimi ile girilecek ham bilgiler, çıkış deyimi ile de dış ortama aktarılacak işlenmiş bilgiler tanıtılır. Bilgisayarlarda değişik tipte ve sayıda giriş/çıkış birimleri kullanılabilir. Bazı bilgisayarlarda giriş çıkış birimlerinin numaraları: Çevre birimi Numarası Ekranlı terminal 1 Manyetik bant okuyucu 3 Kart okuyucu 5 Satır okuyucu 6 Kart çıkışı 7 Giriş/Çıkış birimi belirtmeden okutma ve yazma yaptırılabilir.
105 OKUMA : READ YAZMA : WRITE FORMAT deyimi: FORMAT deyimleri: Bilgisayara okutulacak veya yazdırılacak bilgilerin türlerini, uzunluklarını ve desenlerini belirtmek için kullanılır. Deyimin genel yazılışı....) n FORMAT ( alan tanımlayıcı, alan tanımlayıcı, n - deyim numarası Girdilerin okutulması ve çıktıların yazılmasında kullanılan değişkenlerin sıraları ile FORMAT deyiminde bulunan alan tanımlayıcıları bire bir eşlenmiş olmalı ve tipleri uymalıdır.
106 ÖRNEK: READ(5,10) A,K,S 10 FORMAT(3X,F6.1,2X,I3,2X,E20.7) WRITE(6,10)A,K,S Kart okuyucudan okur satır yazıcıdan yazar. FORMAT deyiminin uygulanışı soldan sağa doğrudur. Giriş Deyimi: (READ) Genel yazılışı: READ(m,n)d1 m giriş birimi numarası(tamsayı) n FORMAT deyim numarası d1 verilerin depolanacağı bellek konum isimlerini tanımlayan değişkenler
107 FORMAT tanımlanmasının yapılıp yapılmaması isteğe bağlıdır. FORMAT tanımlaması yapılmayacak ise READ deyimi aşağıdaki şekilde yazılır. READ(1,*)d1 FORMAT satır numarası yerine * kullanılır. (NOT: Eğer giriş/çıkış birimi olarak ekran kullanılacak ise 1 yerine * kullanılabilir READ(*,*)d1) ÖRNEK: READ(*,*)A, B Eğer giriş birimi belirtilmeden formatlı okuma yaptırılacak ise, READ(*,10)A,B 10 FORMAT(alan tanımlayıcıları)
108 Giriş alan tanımlayıcıları: Giriş verilerinin okutulması için kullanılan alan tanımlayıcılarıdır. Giriş ortamlarında bilgi alanları sayısal, alfa sayısal ve boşluk biçiminde olabilir. Sayısal bilgilerin okunmasında kullanılan alan tanımlayıcıları ile okuma yapıldığında, sayısal bilgilerin giriş ortamına sağa yanaşık yazılması gerekir. İşaretsiz değerler pozitif olarak yorumlanır.(not:aynı satırda birden fazla giriş yapılacaksa) I. Alan tanımlayıcı: Tamsayı bilgilerin okutulmasında kullanılır. Genel yazılışı Iq I: tamsayı tanımlayıcı; q: bilginin alan genişliği (işaretsiz bir tam sayı) READ(*,5) ISAYI ISAYI (-99, 999) arasında değer 5 FORMAT(I3) alabilir.
109 ÖRNEK: Okuma yapılacak satırda birinci sütundan başlamak üzere aşağıdaki sayı ve semboller yer alsın READ(*,5)I,J,K,L 5 FORMAT(I2,I4,I6,I3) I=75 J = -240 K= L= -11 değerlerini aktarır I=23 J = 1440 K=22325 L=620. READ(*,2)L Giriş satırı: FORMAT(I2) Bellek değeri: -1
110 F Alan Tanımlayıcısı: Ondalıklı sayıların okutulmasında kullanılır. tam sayı Genel Yazılışı Fg.d F: ondalık sayı tanımlayıcısı g: Ondalık nokta dahil olmak üzere bilginin alan uzunluğu gösteren d: Bilginin kesir kısmının uzunluğu (Eğer bilgi ondalıklı nokta ile gösterilir ise d göz önüne alınmaz. READ(*,5) B GİRİŞ SATIRI: FORMAT(F9.3) GİRİŞ ALAN TANIMLAYICI BELLEKTEKİ DEĞER b415.5 F F
111 E Alan Tanımlayıcısı: Üslü biçimdeki sayıların okutulmasında kullanılır. Genel Yazılışı Eg.d E: üslü sayı tanımlayıcısı g: bilginin alan uzunluğu gösteren tam sayı d: Bilginin kesir kısmının uzunluğu (Eğer bilgi ondalıklı nokta ile gösterilir ise d göz önüne alınmaz. READ(*,5) A 5 FORMAT(E14.6) GİRİŞ SATIRI: E+03
112 A Alan Tanımlayıcısı: Alfasıyal bilgi tanımlayıcısıdır. Genel Yazılışı Ag A: alfasayısal bilgi tanımlayıcısı g: bilgi uzunluğu CHARACTER *5 A,B,C Bilgi: AliKitapOku READ(*,10)A,B,C Bellek: A= Ali, B= Kitap 10 FORMAT(A3,A5,A2) C= Ok dur X Alan Tanımlayıcıs: Aktarılacak değerler arasında boşluk bırakır. qx X: Boşluk alan tanımlayıcısı q: Boşluk uzunluğu
113 Çıkış Deyimi: (WRITE) Genel kullanılışı: WRITE(m,n)d1 m: Çıkış cevre birim numarası n: Format deyim numarası d1: değerleri yazdırılacak değişkenlerin listesini göstermektedir. m, n ve d1 genel yapısı READ deyimdeki kullanışı ile aynıdır. write(*,5) a, i, b 5 format(2x,f7.2,2x,i3,2x,e9.3) Not: Alan tanımlayıcıları READ deyimindeki alan tanımlayıcıları ile aynıdır.ancak bellekteki değer alan tanımlayıcısı tarafından oluşturulamadığında ******** şeklinde yazar.
114 Satır atlatma ve aynı satıra yazma: a=2.3 i=124 write(*,5)a 5 format(f3.1/) 5 format(f3.1,\) write(*,6)i 6 format(2x,i3) stop end / satır atla yaz (yanyana kaç tane kullanılır ise o kadar satır atlar) \ aynı satıra yaz Alfasayısal Karakter Yazdırma: write(*,5) 5 format( program bitti ) Ekrana program bitti yazar write(*,*) program bitti
115 KONTROL DEYİMLERi FORTRAN deyimleri aksi bildirilmedikçe birbiri ardı sıra işler. Deyimlerin işleyiş sırası değiştirilmek istendiğinde kontrol deyimleri kullanılır. GOTO IF DO-CONTINUE PAUSE STOP END
116 Koşulsuz GOTO deyimi : Genel Kullanılışı: GOTO n sapılacak deyim numarasını gösterir. Gönderilen deyime mutlaka deyim numarası verilmelidir. CHARACTER*20 isim 10 READ(*,*) isim WRITE(*,*)isim GOTO 10 END
117 Mantıksal IF deyimi: Mantıksal bir karar verme yada yapma durumunda kullanılır. Genel Kullanılışı IF(Mantıksal ifade) deyim Bilgisayarda işlenirken mantıksal ifade doğru ise arkasından gelen deyim işlenir. Yanlış ise bir alt satır işlenir. i=1, k=3, p=.turue. IF(i.le.k.and.p) I=I+1 IF(i.le.k.and.p) goto 20
118 Algoritma: (İki sayıdan en büyüğünü bulma) Adım 1. Başla Adım 2. A,B yi oku Adım 3. A=B ise Adım 7 e git Adım 4. A>B ise Adım 6 ya git Adım 5. B yi Yaz Adım 8 e git Adım 6. A yi Yaz Adım 8 e git Adım 7. A ve B eşit mesajını yaz Adım 8. Dur READ(*,*) I1,I2 IF(I1.EQ.I2) GOTO 7 IF(I1.GT.I2) GOTO 6 WRITE(*,5) I2 5 FORMAT( BUYUK SAYI=, I4) GOTO 8 6 WRITE(*,5) I1 GOTO 8 7 WRITE(*,10) 10 FORMAT( I1=I2 ) 8 STOP END
119 Aritmetik IF deyimi: Aritmetik ifadelerin işaretlerinin test edilmesinde kullanılır. IF(aritmetik ifade) K,L,M K, L, M aritmetik ifadenin değerine göre sapılacak deyim numaraları Aritmetik ifade < 0 ise K nolu satıra gider Aritmetik ifade = 0 ise L nolu satıra gider Aritmetik ifade > 0 ise M nolu satıra gider K <0 >0 ifade = 0 M L
120 Bir IF deyiminde K, L, M satır numaralarının hepsinin birbirinden farklı olması gerekmez. ÖRNEK: 1. IF(A-5) 20,20,30 2. IF(B**2-4*A*C) 10,20,30 3. IF(A)10,20,20 Aritmetik IF deyimi bir veya daha fazla GOTO ve Mantıksal IF deyiminin yapacakları işi gerçekleştirir. Örnek: Verilen iki sayının büyüğünü bulan algoritmanın FORTRAN programını yazınız.
121 Algoritma: Adım 1. Başla Adım 2. A,B yi oku Adım 3. A=B ise Adım 7 e git Adım 4. A>B ise Adım 6 ya git Adım 5. B yi Yaz Adım 8 e git Adım 6. A yi Yaz Adım 8 e git Adım 7. A ve B eşit mesajını yaz Adım 8. Dur READ(*,*)I1,I2 IF(I1-I2)10,20,30 10 WRITE(*,5) I2 5 FORMAT( BUYUK SAYI=,I4) GOTO WRITE(*,6) 6 FORMAT( I1=I2 ) GOTO WRITE(*,5)I1 40 STOP end
122 Hesaplanmış GOTO deyimi: Çok sayıda dallanmaya imkan veren bir deyimdir. GOTO (K 1,K 2,...,K N ),J K i (i=1,...,n) gönderme yapılmak istenen deyim numaralarıdır. İşlem sırasında J=1 ise K 1 numaralı satıra sapılır. İşlem sırasında J=N ise K N numaralı satıra sapılır. ÖRNEK: IF (K.EQ.1) GOTO 10 IF (K.EQ.2) GOTO 20 IF (K.EQ.3) GOTO 30 IF (K.EQ.4) GOTO 40 IF (K.EQ.5) GOTO 50 GOTO(10,20,30,40,50), K
123 Blok IF deyimi: Ardışık mantıksal karar verme durumlarında kullanılır. i. IF/THEN yapısı IF(koşul) THEN (deyimler) ENDIF Eğer koşul doğru ise THEN kelimesinden sonra gelen deyimler uygulanır. Yanlış ise ENDIF kelimesi ile IF bloğundan çıkılır. doğru deyim1 deyim2 ENDIF yanlış
124 READ(*,*)I1,I2 IF(I1.GT.I2) THEN WRITE(*,5)I1 5 FORMAT( BUYUK SAYI=,I4) goto 40 ENDIF WRITE(*,5)I2 40 STOP END
125 i. IF/THEN/ELSE yapısı IF(koşul1) THEN (deyim1) ELSE (Deyim2) ENDIF Eğer koşul doğru ise ELSE den önce gelen yanlış ise sonra gelen deyimler uygulanır. ENDIF kelimesi ile IF bloğundan çıkılır. yanlış doğru Deyim 1 Deyim 1 ENDIF Deyim 2
126 READ(*,*)I1,I2 IF(I1.GT.I2) THEN WRITE(*,5)I1 ELSE WRITE(*,5)I2 ENDIF 5 FORMAT( BUYUK SAYI=,I4) STOP END
127 Örnek: İkinci derece denklemlerin köklerini bulan bir program yazınız. ax 2 +bx+c=0 Adım1 Başla Adım2 Oku A,B,C Adım3 DELTA=B**2-4*A*C Adım4 Eğer DELTA < 0 ise Adım 9 a git Adım5 x1=(- B+SQRT(DELTA))/(2*A) Adım6 x2=(-b- SQRT(DELTA))/(2*A) Adım7 Yaz x1,x2 Adım8 Adım10 a git Adım9 Kök kompleks yaz Adım10 Dur READ(*,*)A,B,C DELTA=B**2-4*A*C IF(DELTA)20,10,10 10 X1=(- B+SQRT(DELTA))/(2*A) X2=(-B- SQRT(DELTA))/(2*A) WRITE(*,*)X1,X2 GOT WRITE(*,*) Kök Kompleks 30 STOP END
128 BASİT OKUMA/YAZMA İŞLEMLERİ Birçok programlama dilinde standart giriş klavye, standart çıkış kullanıcı ekranı (monitör) olarak belirlenmiştir. Ancak veri giriş/çıkışı bir dosyadan da yapılabilir. Bu durum şekilde gösterilmiştir. Bir derleyici için giriş ve çıkış
129 Fortranda, giriş için READ, çıkış için PRINT ve WRITE deyimleri kullanılır. Bu deyimlerin formatlı (formated) ve formatsız veya serbest format (free format) olmak üzere iki kullanımı vardır. Formatsız kullanımda okuma/yazma biçimi derleyici tarafından, formatlı kullanımı ise programcı tarafından belirlenir. Basit, yani formatsız, okuma deyimi READ *, giriş listesi veya READ (*,*) giriş listesi şeklinde ve formatsız veri yazma deyimleri PRINT *, çıkış listesi WRITE (*,*) çıkış listesi şeklinde genel kullanıma sahiptir. Burada giriş listesi: birinden virgüllerle ayrılmış değişkenler, dizi veya katar (karakter topluluğu) olabilir. çıkış listesi: birinden virgüllerle ayrılmış değişkenler, dizi, katar, veya bir formül olabilir.
130 Örneğin; READ *, A, B PRINT *, "okunan A ve B değerleri ", A, B gibi. PRINT ve WRITE deyimlerinden ile çıkış listesi ekrana yazıldıktan sonra imleç bir alt satıra geçer. PRINT *,"Dökülmüştür kirpikleri kaşları," PRINT *,"Başları üstünde hece taşları," PRINT *,"Ne söylerler ne bir haber verirler... satırları ile karşılaşan derleyici ekrana aşağıdaki gibi bir çıktı verir: Dökülmüştür kirpikleri kaşları, Başları üstünde hece taşları, Ne söylerler ne bir haber verirler...
131 PRINT ve WRITE deyimleri aşağıdaki gibi çıkış listesi belirtilmeden kullanılabilir. PRINT *, "Dökülmüştür kirpikleri kaşları," PRINT * WRITE (*,*) "Başları üstünde hece taşları," WRITE (*,*) PRINT (*,*) "Ne söylerler ne bir haber verirler... Bu kullanımda ekrana boş bir satır basılır. Dökülmüştür kirpikleri kaşları, Başları üstünde hece taşları, Ne söylerler ne bir haber verirler...
132 Aşağıdaki programda, basit okuma yazma deyimleri kullanılarak üç gerçel sayının ortalaması hesaplanmıştır. 01: PROGRAM Ortalama 02:! : :! prog04.f95 05:! Üç sayının aritmetik ortalaması 06:! : : IMPLICIT NONE 09: REAL :: A, B, C, Ort 10: WRITE (*,*) "Bu program üç sayının 11: ortalamasını hesaplar." 12: WRITE (*,*) "Sayıları girin:" 13: READ (*,*) A, B, C 14: Ort = (A + B + C)/3.0 15: WRITE (*,*) "Ortalama = ", Ort 16: END PROGRAM 17: ÇIKTI Bu program üç sayının ortalamasını hesaplar. Sayıları girin: Ortalama = READ ile okunan sayılar, aşağıdaki gibi alt alta da girilebilirdi. ÇIKTI Bu program üç sayının ortalamasını hesaplar. Sayıları girin: Ortalama =
133 4. TEMEL KÜTÜPHANE FONKSİYONLARI
134 FONKSİYONLARIN LİSTESİ Bu kısımda sık kullanılan kütüphane fonksiyonlarına değinilecektir. Tablo da bundan sonraki kısımlarda kullanılacak bazı kütüphane fonksiyonları listelenmiştir.
135 Fonksiyon Açıklama Argüman tipi Geri dönüş tipi Örnek Sonuç ABS(x) x in mutlak değeri INTEGER veya REAL Argümanla aynı ABS(-1.55) 1.55 SQRT(x) x in karekökü REAL REAL SQRT(2.77) INT(x) x in tam kısmı REAL INTEGER INT(4.69) 4 NINT(x) x e en yakın tamsayı REAL INTEGER NINT(4.69) 5 FLOOR(x) x i aşağı yuvarlar REAL INTEGER FLOOR(4.69) 4 CEILING(x) x i yukarı yuvarlar REAL INTEGER CEILING(4.69) 5 REAL(x) x i gerçel sayıya çevirir INTEGER REAL REAL(4) 4.0 EXP(x) e x değerini hesaplar REAL REAL EXP(-1.4) LOG(x) log e (x) = lnx değerini hesaplar REAL REAL LOG(3.5) LOG10(x) log 10 (x) = logx değerini hesaplar REAL REAL LOG10(x)
136 Fonksiyon Açıklama Argüman tipi Geri dönüş tipi Örnek Sonuç COS(x) x in kosinüsü REAL REAL COS(0.5) SIN(x) x in sinüsü REAL REAL SIN(0.5) TAN(x) x tanjantı REAL REAL TAN(0.5) ACOS(x) Kosinüsü x olan açı REAL REAL ACOS(1.0) 0.0 ASIN(x) Sinüsü x olan açı REAL REAL ASIN(1.0) ATAN(x) Tanjantı x olan açı REAL REAL ATAN(1.0) MOD(X, Y) X (mod Y) değerini hesaplar INTEGER INTEGER MOD(15, 4) 3 MAX(x1, x2 [,...]) Argümanların enbüyüğü INTEGER veya REAL Argümanla aynı MAX(3,5,7,12, 4) 12 MAX(x1, x2 [,...]) Argümanların enbüyüğü INTEGER veya REAL Argümanla aynı MIN(0.0,- 4.2,1.0) -4.2
137 Bu kütüphane fonksiyonları kullanılırken aşağıdaki durumlara dikkat edilmelidir. Argüman tipi REAL olan fonksiyonlara geçirilecek değişken veya sabit mutlaka REAL olmalıdır. y = SQRT(4.0) ile y değişkenine 2.0 değeri atanır, fakat 4 bir tamsayı sabiti olduğu için y = SQRT(4) ataması geçersizdir. Bunu yerine y = SQRT(REAL(4)) ataması kullanılabilir. Trigonometrik fonksiyonlara geçirilen açı (arguman) radyan olarak kabul eder. y = SIN(1.5) ile 1.5 radyanın sinüsü y değişkenine atanır. Derece cinsinden bir açının sinüsü hesaplanmak istendiğinde, 2*Pi radyan = 360 derece (Pi = ) eşitliği kullanılabilir. Buna göre, 10 derecenin sinüsü şöyle hesaplanır: y = SIN(10.0*Pi/180.0). MOD(x, y) fonksiyonu x/y den kalanı hesaplar. Örneğin: z = MOD(20,4) ile z değişkenine 0 atanırken, z = MOD(13,2) ile 1 değeri atanır. Bu fonksiyon aslında x - INT(x/y)*y işlemini yapar. Şöyle ki MOD(13,2) = 13 - INT(13/2)*2 = = 1 MAX() ve MIN() fonksiyonları
138 Trigonometrik Kütüphane Fonksiyonu ÖRNEKLER 01: PROGRAM Trigonometrik 02:! : :! prog05.f95 05:! Trigonometrik kütüphane 06: fonksiyonları 07:! : : REAL :: Aci, Pi 10: PRINT *,"Derece cinsinden bir açı 11: girin:" 12: READ *,Aci 13:! Pi sayısı 14: Pi = 4.0 * ATAN(1.0) 15:! derece -> radyan dönüşümü 16: Aci = Aci * Pi / : PRINT *," Pi: ",Pi 18: PRINT *,"SIN: ",SIN(Aci) 19: PRINT *,"COS: ",COS(Aci) 20: PRINT *,"TAN: ",TAN(Aci) ÇIKTI Derece cinsinden bir açı girin: 30 Pi: SIN: 0.5 COS: TAN:
139 Üstel ve Logaritmik Fonksiyonlar 01: PROGRAM Logaritmik 02:! : :! prog06.f95 05:! Üstel ve logaritmik fonksiyonlar 06:! : : REAL :: X, Log7 09: PRINT *,"Pozitif bir x değeri 10: girin :" 11: READ *,X 12:! log7(x) değerinin hesabı 13: Log7 = LOG(x) / LOG(7.0) 14: PRINT *," EXP(x) = ",EXP(x) 15: PRINT *," LOG(x) = ",LOG(x) 16: PRINT *,"LOG10(x) = ",LOG10(x) 17: PRINT *," LOG7(x) = ",Log7 18: END PROGRAM 19: 20: ÇIKTI Positif bir x değeri girin : 2.0 EXP(x) = LOG(x) = LOG10(x) = LOG7(x) =
140 5. KARŞILAŞTIRMA DEYİMLERİ
141 GİRİŞ Program içerisinde bazen iki veya daha fazla değerin karşılaştırılması gerekebilir. Bunun için, bütün programlama dillerinde karşılaştırma deyimleri mevcuttur. Fortran dili, IF ve CASE deyimleri ile karşılaştırma işlemi yapmaya izin verir.
142 KARŞILAŞTIRMA OPERATÖRLERİ VE MANTIKSAL OPERATÖRLER İki veya daha fazla değerin mukayese edilmesi için karşılaştırma operatörleri ve mantıksal operatörler kullanılır. Bu operatörlerin listesi Tablo da verilmiştir. Operatör Eski Yeni Açıklama Örnek Anlamı.GT. > büyüktür x > y x, y den büyük mü?.lt. < küçüktür x < y x, y den küçük mü?.eq. == eşittir x == y x, y ye eşit mi?.ge. >= büyük-eşittir x >= y x, y den büyük yada eşit mi?.le. <= küçük-eşittir x <= y x, y den küçük yada eşit mi?.ne. /= eşit değil x /= y x, y den farklı mı? Karşılaştırma Operatörleri Tablo daki Eski sütunundaki operatörler FORTRAN 77'ye kadar ki dönemde kullanılmaktaydı. Fortran 90'dan itibaren, aynı anlama gelen Yeni sütunundaki operatörler dahil edilmiştir. Fortran 90'da hem Eski hem de Yeni operatörleri kullanmaya izin verir.
143 Birden çok karşılaştırma işlemi, Tablo 'deki Mantıksal Operatörlerle birleştirilebilir. Operatör Açıklama Örnek Anlamı.AND. mantıksal VE x>2.and. x<y x, 2 den büyük VE y den küçük mü?.or. mantıksal VEYA x>2.or. x<y x, 2 den büyük VEYA y den küçük mü?.not. mantıksal DEĞİL.NOT. x>2 x, 2 den büyük DEĞİL ise.eqv. mantıksal EŞDEĞER (veya x ve y mantıksal olarak x.eqv. y DENK) DENK mi?.neqv. mantıksal EŞDEĞER (veya x ve y mantıksal olarak x.neqv. y DENK) DEĞİL DENK DEĞİL mi? Mantıksal Operatörler Fortranda, bir mantıksal işlemin sonucu doğru (olumlu),.true. veya yanlış (olumsuz),.false. olabilir. LOGICAL veri tipi kullanılarak, bir mantıksal işlemin sonucunu değerlendirmek mümkündür. Diğer slaytta LOGICAL veri tipinin kullanımı gösterilmiştir.
144 Mantıksal işlemler 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: PROGRAM Mantiksal! ! prog07.f95! Mantıksal işlemler! LOGICAL :: L1, L2, L3, L4, L5, L6, L7, L8, L9 INTEGER :: x = 1, y = 2; L1 =.TRUE. L2 =.FALSE. L3 = L1.OR. L2 L4 = 9 > 4 L5 = x < 3 L6 = x >= y.and. y > 0 L7 =.NOT. L4 L8 = L1.EQV. L5 L9 = L4.NEQV. L5 PRINT *,"L1 L2 L3 : ", L1, L2, L3 PRINT *,"L4 L5 L6 : ", L4, L5, L6 PRINT *,"L7 L8 L9 : ", L7, L8, L9 END PROGRAM ÇIKTI L1 L2 L3 : T F T L4 L5 L6 : T T F L7 L8 L9 : F T F
145 Program çıktısındaki T harfi doğru (.TRUE.), F harfi yanlış (.FALSE.) mantıksal değerine karşılık gelir. 10. ve 11. satırda, L1 =.TRUE. ve L1 =.FALSE. ile mantıksal değişkenlere ilk değerler atanmıştır. 12. satırda, L1 VEYA L2 den birinin doğru olması aranmaktadır. Sonuç olumlu olduğu için L3 =.TRUE. olmuştur. 14. satırda, L4 = 9 > 4 atamasının sağ tarafı her zaman doğrudur. Bu yüzden L4 =.TRUE. dur. 15. satırda, L5 = x < 3 atamasında x < 3 olduğu için L5 =.TRUE. dur. 16. satırda, x >= y.and. y > 0 işleminin sonucunun mantıksal değeri yanlıştır. Bu yüzden L6 =.FALSE. olur. 18. satırda, L4 mantıksal değerinin olumsuzu (veya değili) L7 ye atanmıştır. L4 =.TRUE. olduğuna göre, L7 =.FALSE. olur. 19. ve 20. satırda, mantıksal denklikler sorgulanmıştır.
146 Bu operatörler kullanılarak, bütün mantıksal operatörler için aşağıdaki Tablo da verilen doğruluk denklik tablosu oluşturulabilir. Doğruluk Değerleri p q p.not. p p.and. q p.or. q p.eqv. q p.neqv. q F F T F F T F F T T F T F T T F F F T F T T T F T T T F
147 IF, IF ELSE IF ELSE YAPILARI Bu deyimler, koşullu işlem yapan deyimlerdir. IF ve ELSE tek bir karşılaştırma deyimi olup ELSE kullanımı isteğe bağlıdır. Basit IF Yapısı IF deyiminin en basit kullanımı: IF(koşul) deyim şeklindedir. koşul olumlu ise IF deyiminin yanındaki deyim icra edilir. Aksi halde bu satır atlanır. Örneğin: IF( X > 0.0 ) Y = SQRT(X)
148 Blok IF Yapısı IF(koşul) THEN küme END IF Burada küme bir veya daha fazla satırdan oluşan deyimler grubudur. Eğer bu koşul olumlu ise THEN den sonraki bölüm (küme) yürütülür. Blok IF yapısı END IF ile son bulur. Örneğin; IF( X > 0.0 ) THEN Y = SQRT(X) Z = Y + 1.0/X END IF IF... ELSE Yapısı IF(koşul) THEN küme1 ELSE küme2 END IF Eğer bu koşul olumlu ise THEN 'den sonraki bölüm (küme1), olumsuz ise ELSE den sonraki bölüm (küme2) yürütülür.
149 Bir tamsayının çift olup olmadığını sınar Bu yapının kullanılmasına dair bir örnek yanda gösterilmiştir. Program, klavyeden girilen bir tamsayının çift olup olmadığını sınar. Bilindiği gibi, çift sayılar, 2 ile kalansız bölünebilen sayılardır. 01 : 02 : 03 : 04 : 05 : 06 : 07 : 08 : 09 : 10 : 11 : 3 PROGRAM Cift_Tek! ! prog08.f95! Bir tamsayının çift olup olmadığını sınar! INTEGER :: X PRINT *,"Bir sayi girin:" READ *,X! X/2 den kalanı sorgula IF( MOD(X,2) == 0 ) THEN PRINT *,"sayi cifttir" ELSE PRINT *,"sayi tektir" END IF END PROGRAM ÇIKTI Bir sayi girin:
150 Mantıksal Operatörler kullanarak birden çok karşılaştırma birleştirilebilir. Buna iyi bir örnek diğer sayfadaki Program gösterilmiştir. Program, bir klavyeden girilen bir tamsayıyı yıl bilgisi olarak kabul eder ve yılın artık yıl olup olmadığını sınar. Bir yıl içinde, Şubat ayı 29 gün olursa o yıl artık yıl olarak adlandırılır. Artık yıl periyodik olarak 4 yılda bir gelir. Genel kanı "bir yıl 4 ile tam bölünebilirse o yıl artık yıldır" şeklindedir. Fakat 1996 artık yıl iken 1800 artık yıl değildir. Genel sorgulama şöyle olmalıdır: Eğer bir yıl 4 ile tam bölünüyorsa VE 100'e tam bölünmüyorsa VEYA 400 'e tam bölünüyorsa o yıl artık yıldır.
151 Bir yılın artık olup olmadığını sınar 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: PROGRAM Artik_Yil! ! prog09.f95! Bir yılın artık olup olmadığını sınar! INTEGER :: Yil PRINT *, "Bir yil girin:" READ *, Yil IF( MOD(Yil,4) == 0.AND. MOD(yil, 100).NE. 0 &.OR. MOD(Yil, 400) == 0 ) THEN PRINT *, Yil, " artik yil" ELSE PRINT *, Yil, " artik yil degil" END IF END ÇIKTI Bir yil girin: 1996
152 IF... ELSE IF... ELSE Yapısı Eğer program içinde kullanılacak koşulların sayısı ikiden çok ise aşağıdaki yapı kullanılır: IF(koşul_1) THEN küme_1 ELSE IF(koşul_2) THEN küme_2.. ELSE IF(koşul_N) THEN küme_n ELSE küme_n+1 END IF
153 Aşağıdaki gibi parçalı fonksiyon düşünelim Bu fonksiyon Fortranda aşağıdaki gibi bir yapıya sahip olur IF (x <= 0) THEN F = -x ELSE IF(x>0.AND. x<1) THEN F = x**2 ELSE F = 1.0 END IF
154 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18 Aşağıdaki Program ax 2 + bx + c = 0 formundaki ikinci dereceden bir polinomun gerçel (reel) köklerini hesaplar. Bu program IF, ELSE IF ve ELSE yapısı göstermek için klasik bir örnektir. PROGRAM Kuadratik! ! prog10.f95! ax**2 + bx + c = 0 denkleminin gerçel köklerinin bulunması! IMPLICIT NONE REAL :: a, b, c, Delta, x1, x2 PRINT *, "a, b, c degerlerini girin:" READ *, A,B,C Delta = B**2-4.0*A*C IF( Delta > 0.0 ) THEN x1 = ( -B + SQRT(Delta) )/( 2.0*A ) x2 = ( -B - SQRT(Delta) )/( 2.0*A ) WRITE (*,*) "Gerçel kökler: ", x1, x2 ELSE IF( Delta == 0.0 ) THEN x1 = -B /( 2.0*A ) x2 = -B /( 2.0*A ) WRITE (*,*) "Kökler eşit: ", x1, x2 ELSE WRITE (*,*) "Kökler gerçel değil! " END IF END PROGRAM ÇIKTI a, b, c degerlerini girin: Kökler gerçel değil! ÇIKTI a, b, c degerlerini girin: Gerçel kökler:
155 Bu deyim bir değişkenin içeriğine bakarak, programın akışını bir çok seçenekten birine yönlendirir. CASE (durum) deyiminden sonra değişkenin durumu belirlenir ve takip eden satırlar (deyimler) işleme konur. Bütün durumların aksi söz konu olduğunda gerçekleştirilmesi istenen deyimler DEFAULT deyiminden sonraki kısımda bildirilir. Genel yazım biçimi: SELECT CASE ( değişken ) CASE (durum_1) küme_1 CASE (durum_') küme_2.. CASE (durum_n) küme_n CASE DEFAULT hata deyimleri veya varsayılan deyimler END SELECT CASE YAPISI
156 Burada: değişken tamsayı (INTEGER) veya karakter (CHARACTER) veri tipinde olmalıdır. durum_i bir değeri veya bir değer aralığını temsil eder. Şöyle ki; değer değer1 : değer2 değer1 : : değer2 tek bir değer değer1'den değer2'ye kadar bütün ara değerler değer1'den büyük bütün değerler değer2'den küçük bütün değerler
157 Örneğin, aşağıdaki CASE yapısı ile, bilinen bir notun harf karşılığı belirlenebilir. SELECT CASE(Not) CASE(0:49) Harf = "F" CASE(50:64) Harf = "D" CASE(65:74) Harf = "C" CASE(75:84) Harf = "B" CASE(85:) Harf = "A" CASE DEFAULT PRINT *,"Geçersiz not", Not END SELECT
158 Burada, Not 0-49 arası ise Harf değişkenine "F", arası "D", arası "B" ve 85'den büyük ise "A" değeri atanmaktadır. Hata durumunda, yani not 0'dan küçük olduğunda, ekrana "Geçersiz not" iletisi bastırılır. Diğer sayfadaki programda, klavyeden girilen iki sayıyı, yapılan seçime göre sayıların toplamı, farkı, çarpımı veya oranı ekrana yazdırır.
159 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: : PROGRAM Dort_Islem! ! pro11.f95! CASE yapısı ile dört işlem! IMPLICIT NONE REAL :: X, Y, Sonuc INTEGER :: Secim PRINT *, "Iki sayi girin:" READ *, X, Y WRITE(*,*) "*** Menu ***" WRITE(*,*) "[1] Toplama" WRITE(*,*) "[2] Cikarma" WRITE(*,*) "[3] Carpma" WRITE(*,*) "[4] Bolme" WRITE(*,*) WRITE(*,*) "Seciminiz?"; READ (*,*) Secim SELECT CASE( secim ) CASE (1) sonuc = x + y; PRINT *, "Toplam = ",sonuc CASE (2) sonuc = x-y; PRINT *, "Fark = ",sonuc CASE (3) sonuc = x * y; PRINT *, "Carpim = ",sonuc CASE (4) sonuc = x/y; PRINT *, "Oran = ",sonuc CASE DEFAULT PRINT *,"Yanlis secim " ÇIKTI Iki sayi girin: 5 3 *** Menu *** [1] Toplama [2] Cikarma [3] Carpma [4] Bolme Seciminiz? 4 Oran =
160 CASE yapısı IF-ELSE yapısının bir alternatifidir. Yani, bir önceki programdaki CASE kısmı, IF-ELSE yapısı ile de aşağıdaki gibi yazılabilirdi. SELECT CASE( secim ) CASE (1) sonuc = x + y PRINT *, "Toplam = ",sonuc CASE (2) sonuc = x - y PRINT *, "Fark = ",sonuc CASE (3) sonuc = x * y PRINT *, "Carpim = ",sonuc CASE (4) sonuc = x / y PRINT *, "Oran = ",sonuc CASE DEFAULT PRINT *,"Yanlis secim " END SELECT IF(secim == 1) THEN sonuc = x + y PRINT *, "Toplam = ",sonuc ELSE IF(secim == 2) THEN sonuc = x - y PRINT *, "Fark = ",sonuc ELSE IF(secim == 3 ) THEN sonuc = x * y PRINT *, "Carpim = ",sonuc ELSE IF(secim == 4) THEN sonuc = x / y PRINT *, "Oran = ",sonuc ELSE PRINT *,"Yanlis secim " END IF
161 İSİMLENDİRİLMİŞ KOŞUL YAPILARI Fortran 90 ile birlikte gelen yeniliklerden bir tanesi de isimlendirilmiş yapı (named construct) kavramıdır. İsimlendirilmiş yapılar olarak kontrol deyimlerinde (IF, CASE) ve döngü yapılarında (DO) kullanıldığında, programın okunurluğunu arttırır. Bu yenilik sayesinde IF ve CASE yapıları bir etiket (label) kullanılarak isimlendirilir. IF yapısı için genel kullanım biçimi etiket: IF(koşul) THEN... END IF etiket şeklindedir. Örneğin; guncelle: IF( x > xmax ) THEN xmax = x ymax = y konum = k END IF guncelle
162 Benzer olarak CASE yapısı için aşağıdaki örnek verilebilir. PRINT *,"Kaç yaşındasın?" READ *,Yas Mesaj: SELECT CASE(Yas) CASE( :12); PRINT *,"Daha cocuksun" CASE(12:19); PRINT *,"Gençlige adım atıyorsun" CASE(20:35); PRINT *,"Genç birisin" CASE(36:50); PRINT *,"Orta yaşlısın" CASE(51: ); PRINT *,"Yaşlanıyorsun" END SELECT Mesaj
163 Bu yapının kullanımıyla ilgili bir örnek Program gösterilmiştir. Program, klavyeden girilen kenar uzunluklarına göre bir üçgenin tipini, alanını çevresini ve açılarını hesaplamaktadır. Aşağıdaki gibi kenar uzunlukları a, b ve c olan bir üçgen düşünelim.
164 Verilen kenar uzunlukları ile üçgen oluşturabilmek için, kenarlar arasında önce aşağıdaki şartın sağlanması gerekir: Şart sağlandıktan sonra, "üçgenin tipi" şu şekilde belirlenebilir. Bu üçgenin çevresi ve alanı aşağıdaki basit formüllerle hesaplanabilir.
165 burada Son olarak, üçgenin açılarını bulmak için "kosinüs kuramı" kullanılabilir. Buna göre her bir kenar ve açı arasındaki ilişki şeklindedir. Buradan açılar aşağıdaki formülle hesaplanabilir: Bu Programda, yukarıda anlatılan bütün hesaplamalar, içi içe geçmiş iki IF ELSE yapısı kullanılarak kotarılmıştır. Olası her durum için dört program çıktısı da alta verilmiştir.
166 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28 PROGRAM Ucgen! ! prog12.f95! Kenarları bilinen bir üçgenin geometrik özellikleri! IMPLICIT NONE REAL, PARAMETER :: Pi = REAL :: A, B, C, U, Cevre, Alan REAL :: Alfa, Beta, Teta PRINT *,"Üçgenin kenarlarını girin:" READ *,A, B, C! Bu kenarlardan üçgen olur mu? UcgenOlurmu: IF( A+B>C.AND. A+C>B.AND. B+C>A )THEN! Üçgenin tipini belirle UcgenTip: IF(A==B.AND. A==C) THEN PRINT *, "Bu bir eşkenar üçgen." ELSE IF(A==B.AND. A /= C.OR. & A==C.AND. A /= B.OR. & B==C.AND. A /= B) THEN PRINT *, "Bu bir ikizkenar üçgen." ELSE PRINT *, "Bu bir çeşitkenar üçgen." END IF UcgenTip! Alan ve cevre hesapla Cevre = A + B + C U = (A + B + C)/2.0 Alan = SQRT(U*(U-A)*(U-B)*(U-C))! açıları hesapla ve dereceye çevir Alfa = ACOS( (B**2+C**2-A**2)/(2.0*B*C) ) * 180.0/Pi Beta = ACOS( (A**2+C**2-B**2)/(2.0*A*C) ) * 180.0/Pi Teta = ACOS( (A**2+B**2-C**2)/(2.0*A*B) ) * 180.0/Pi PRINT '("Üçgenin çevresi : ", F8.2)',Cevre PRINT '("Üçgenin alanı : ", F8.2)',Alan PRINT '("Üçgenin açıları : ", 3F8.2)',Alfa, Beta, Teta ELSE PRINT *,"Bu kenarlardan üçgen oluşturulamaz..." END IF UcgenOlurmu END PROGRAM ÇIKTI Üçgenin kenarlarını girin: Bu kenarlardan üçgen oluşturulamaz... ÇIKTI Üçgenin kenarlarını girin: Bu bir eşkenar üçgen. Üçgenin çevresi : Üçgenin alanı : 6.93 Üçgenin açıları : ÇIKTI Bu bir ikizkenar üçgen. Üçgenin çevresi : Üçgenin alanı : 7.15 Üçgenin açıları : ÇIKTI Üçgenin kenarlarını girin: Bu bir çeşitkenar üçgen. Üçgenin çevresi : Üçgenin alanı : Üçgenin açıları FORTRAN : ENERGY SYSTEMS 90.00
167 6. DÖNGÜLER
168 GİRİŞ Döngü (loop) deyimleri, bir kümenin belli bir koşul altında tekrar edilmesi için kullanılır. Fortranda, Sayaç Kontrollü DO,DO ve DO WHILE olmak üzere üç tip döngü deyimi vardır. Diğer programlama dillerinde olduğu gibi, bu deyimlerle istenildiği kadar iç içe döngü yapısı kullanılabilir.
169 Fortran 90'dan önce de kullanılan tekrarlama deyimidir. Tekrarlama bir döngü sayacı kullanılarak yapılır. Genel yazım biçimi; Burada; SAYAÇ KONTROLLÜ DO DÖNGÜSÜ DO değişken = deyim1, deyim2, deyim3... döngüdeki deyimler (küme)... END DO döngü parametreleri değişken, deyim1, deyim2 ve deyim3, INTEGER veri tipinde değişken veya sabit olmalıdır. değişken, döngü sayacı veya DO indisi olarak adlandırılır. deyim1, döngü sayacının başlangıç değeridir. deyim2, döngü sayacının son değeri veya limitidir. deyim3, döngü sayacının artım miktarıdır. Bu deyimin kullanılması isteğe bağlıdır. Kullanılmazsa deyim3 1 kabul edilir. Döngü içindeki kümenin tekrarlanma sayısı INT( (deyim2- deyim1+deyim3)/deyim3 ) formülü ile hesaplanır.
170 Aşağıdaki program parçasını düşünelim. DO I = 1, 6, 1 PRINT *, I, I**2 END DO Bu kod 1 den 6 ya kadar olan sayıları ve karelerini ekrana aşağıdaki gibi basar: döngüdeki artım miktarı 1'in yazılmasına gerek yoktur. Yani yukarıdaki kod, aşağıdaki ile eşdeğerdir. DO I = 1, 6 PRINT *, I, I**2 END DO
171 Gerçel değerle üreten döngü oluşturmak mümkündür. Örneğin aşağıdaki program parçası, 10 derecelik adımlarla, 0 dan 90 dereceye kadar olan açıların sinüs ve kosinüs değerlerini ekrana basar. Pi = DO Der = 0, 90, 10 Rad = Der * Pi/180.0 PRINT *, SIN(Rad), COS(Rad) END DO Diğer sayfadaki programda 1 den N'ye kadar olan tamsayıların toplamını hesaplar. Bu toplamın değeri N*(N+1)/2 formülü ile hesaplanır.
172 01: PROGRAM Toplama 02:! : :! prog13.f95 05:! N toplamını hesaplar 06:! : : IMPLICIT NONE 09: INTEGER :: K, N, Top = 0 10: 11: 12: 13: 14: 15: PRINT *,"N sayısını girin:" READ *,N DO K = 1,N Top = Top + K END DO PRINT *,"Hesaplanan toplam : ", 16: Top 17: PRINT *,"Kuramsal toplam : ", 18: N*(N+1)/2 19: END PROGRAM ÇIKTI N sayısını girin: 10 Hesaplanan toplam : 55 Kuramsal toplam : 55
173 Bu türden döngü yapısı ile yineleme sayaç ile değil, mantıksal bir işlemle yapılır. Genel olarak DO-EXIT ve DO-CYCLE yapıları ile mantıksal düşünce işleyişi kullanılır. DO - EXIT Yapısı Genel kullanım biçimi: DO küme 1 IF ( koşul ) EXIT küme 2 END DO DO DÖNGÜSÜ şeklindedir. Burada döngü koşul olumsuz olduğu sürece yinelenir. koşul olumlu olduğunda döngü EXIT deyimi ile sonlanır.
174 Aşağıdaki sayaç kontrollü döngüyü düşünelim. DO I = 1, 6 PRINT *,I, I**2 END DO Bu döngü aşağıdakine eşdeğerdir. I = 1 DO PRINT *,I, I**2 I = I + 1 IF ( I >= 6 ) EXIT END DO Diğer sayfadaki programda, klavyeden girilen sayı 0'dan büyük olduğu sürece girilen sayıyı ve karekökünü ekrana yazar.
175 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: PROGRAM KareKok! ! prog14.f95! Girilen sayının karekökü hesaplar.! IMPLICIT NONE REAL :: X DO WRITE (*,FMT='(A)', ADVANCE='No') "Bir sayı girin: " READ *,X IF( X<0.0 ) THEN PRINT *,"X = ",X, " < 0" EXIT END IF WRITE (*,FMT='(A,F8.3)', ADVANCE='No') "Karekökü : ", SQRT(X) PRINT * END DO PRINT *,"Döngü bitti." END ÇIKTI Bir sayı girin: 4 Karekökü : Bir sayı girin: 12 Karekökü : Bir sayı girin: 55 Karekökü : Bir sayı girin: 0 Karekökü : Bir sayı girin: -5 X = -5. < 0 Döngü bitti.
176 DO WHILE DÖNGÜSÜ Yinelenmesi gereken küme için koşul sınaması döngüye girilmeden yapılır. Koşul olumlu olduğu sürece çevrim yinelenir. DO WHILE döngüsü C/C++ programlama dilindeki while ile aynı mantıkta çalışır. Genel yazım biçimi: DO WHILE( koşul )... döngüdeki deyimler (küme)... END DO
177 Hava sürtünmesinin ihmal edildiği bir ortamda, bir futbol topunun yukarıya doğru belli bir ilk hız (v 0 ) ile atıldığını varsalım. Uygun bir koordinat seçimiyle, bu topun hızı (v), konumu (y) ve çıkabileceği en yüksek nokta (h max ) aşağıdaki denklemlere göre hesap edilir.
178 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: Aşağıdaki program, v 0 = 10 m/s için, 0.1 saniye aralıklarla v ve y yi hesaplar. h max değeri ise program içinde IF ile bulunabilir. Gerçekte h max = 100/2/9.81 = m dir. PROGRAM Top! ! prog15.f95! Serbest düşen bir topun dt zaman aralıklarıları ile! hızını, konumunu ve çıkacağı en yüksek noktayı hesaplar.! IMPLICIT NONE REAL, PARAMETER :: g = 9.81! m/s2 REAL, PARAMETER :: v0 = 10.0! m/s REAL, PARAMETER :: dt = 0.1! s REAL :: t, v, y, Hmax y = 0.0 Hmax = 0.0 t = 0.0 DO WHILE( y>=0.0 )! Hareket denklemleri v = v0 - g*t y = v0*t - 0.5*g*t**2! Maksimum yükseklik IF(y > Hmax) Hmax = y PRINT 10,t,v,y! zamanı arttır t = t + dt END DO PRINT *,"Hmax = ", Hmax, " m" 10 FORMAT (3F9.2) ÇIKTI Hmax = m
179 İÇ İÇE GEÇMİŞ DÖNGÜLER Bir program içinde birbiri içine geçmiş birden çok döngü de kullanılabilir. Bu durumda program tarafından (bütün programlama dillerinde olduğu gibi) önce içteki döngü, daha sonra dıştaki döngü okunur. İç içe geçmiş döngülere iyi bir örnek bir sonraki slaytta verilmiştir.
180 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: PROGRAM Carpim_Tablosu! ! 06prg04.f95! Basit bir carpim tablosu.! IMPLICIT NONE INTEGER :: K, J, C WRITE(*, FMT='(A)', ADVANCE='No') " x " DO K = 1, 10 WRITE(*, FMT='(I4)', ADVANCE='No') K END DO PRINT * PRINT *," " DO K = 1, 10 WRITE(*, FMT='(I3,A)', ADVANCE='No') K," " DO J = 1, 10 C = K * J WRITE(*, FMT='(I4)', ADVANCE='No') C END DO PRINT * END DO END ÇIKTI x
181 01: 02: 03: 04: 05: 06: 07: 08: 09: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: Üç basamaklı, basamaklarının küpleri toplamı kendisine eşit olan tam sayılara Armstrong sayı denir. Örneğin: 371 bir Armstrong sayıdır çünkü = 371. Aşağıdaki programda, iç içe geçmiş üç DO döngüsü ile bütün Armstrong sayıları bulup ekrana yazar. PROGRAM Aramstrong_Sayilar! ! 06prg05.f95! Üç basamaklı, basamaklarının küpleri toplamı kendisine! eşit olan tam sayılara Armstrong sayı denir.! Örneğin: 371 = 3**3 + 7**3 + 1**3! Bu program İç-içe geçmiş 3 döngü ile bütün Aramstrong! sayıları bulur.! IMPLICIT NONE INTEGER :: a,b,c, kup, sayi, k = 1 DO a = 1, 9 DO b = 0, 9 DO c = 0, 9 sayi = 100*a + 10*b + c;! sayi = abc (üç basamaklı) kup = a**3 + b**3 + c**3;! kup = a^3+b^3+c^3 IF( sayi == kup ) THEN PRINT *, K, Sayi K = K + 1 END IF END DO END DO END DO ÇIKTI
182 SONSUZ DÖNGÜ Bir döngü işlemini sonsuz kere tekrarlarsa bu döngü sonsuz döngü olarak adlandırılır. Böyle bir döngü için, koşul çok önemlidir. Aşağıda verilen döngüler çevrimini sonsuz kez tekrarlayarak ekrana Sonsuz döngü içindeyim... Mesajını basar. Sonsuz döngüler, CTRL + C tuş kombinasyonu ile son bulur.
183 ! EXIT deyimi kullanılmamış DO PRINT *, "Sonsuz döngü içindeyim..." END DO! J döngü içinde değişmiyor J = 6 DO PRINT *, "Sonsuz döngü içindeyim..." IF(J == 0) EXIT END DO! 7 her zaman 3 den büyüktür DO WHILE(7>3) PRINT *, "Sonsuz döngü içindeyim..." END DO! 7 her zaman 3 den büyüktür DO WHILE(7>3) PRINT *, "Sonsuz döngü içindeyim..." END DO
184 İSİMLENDİRİLMİŞ DÖNGÜ YAPISI Fortran 90+, IF ve CASE deyimlerinde olduğu gibi, DO deyimi için de isimlendirilmiş yapı kullanmaya izin verir. Genel kullanım şekli: etiket: DO... END DO etiket şeklindedir. Bu yapı, özellikle iç içe geçmiş döngülerde sık kullanılır.
185 Örneğin: Distaki: DO I = 1, 10 Icteki: DO J = 1, 10 PRINT *, I, J, I*J END DO Icteki END DO Distaki Bir döngüye verilen etiket, EXIT ve CYCLE deyimleri ile de birleştirilebilir. Şöyle ki: D1: DO; x1 = x D2: DO; x2 = x IF(x1**2+x2**2>=1.0) EXIT D1! 1 inci döngüyü sonlandır IF(x2 > xmax) EXIT D2! 2 nci döngüyü sonlandır F = ABS(x1-x2) PRINT *,x1,x2,f END DO D2 END DO D1
186 Girilen açının sinüsü aşağıdaki formüle göre hesaplanmaktadır Sin( X)=X-(X3/3!)+(X5/5!)-(X7/7!)+ +(XN/N!)! Program, girilen bir açının sinüsünü hesaplamaktadır ISARET=1 TOPLAM=0.0 READ(*,*) X X=X* /180.0 DO I=1,10,2 IFAKT=1 DO J=1,I IFAKT=J*IFAKT END DO TOPLAM=TOPLAM+ISARET*(X**I)/IFAKT ISARET=ISARET*(-1) END DO WRITE(*,*) TOPLAM STOP END
187 DO- CONTINUE Deyimi: Bir programda yer alan belirli işlemlerin, önceden bilinen bir düzende ve sayıda yenilenmesi amacı ile kullanılır. Deyimin genel yapısı: DO N I=M1,M2,M3 N: Do deyimi ile ilgili çevrimin son deyiminin numarasıdır I : deyimin indis sayacıdır. İndissiz bir değişken ismidir. M1: I nın ilk değeri M2: I nın son değeri M3: I nın artış değeri
ÖRNEK 1: Verilen iki sayının toplamının bulunmasının algoritması aşağıdaki gibi yazılır:
ALGORİTMANIN HAZIRLANMASI, 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.
DetaylıHÜPP PYTHON I.HAFTA ALGORİTMA MANTIĞI, AKIŞ DİYAGRAMLARI VE PYTHON'A GİRİŞ
HÜPP PYTHON I.HAFTA ALGORİTMA MANTIĞI, AKIŞ DİYAGRAMLARI VE PYTHON'A GİRİŞ PROGRAMLAMAYA GİRİŞ Herhangi bir program yazabilmemiz için öncelikle önümüzde bir problem, soru olması gerekir. Problemi belirledikten
DetaylıAlgoritma ve Akış Diyagramları
Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir 1 Akış diyagramları
DetaylıGİRİŞ/ÇIKIŞ VE TANIMLAMA DEYİMLERİ
GİRİŞ/ÇIKIŞ VE TANIMLAMA DEYİMLERİ Giriş/Çıkış deyimlerine neden gerek vardır? Biçimli giriş/çıkış deyimleri, Klavye den veri girişi Dosya dan veri okuma ve dosyaya yazma Ekrana sonuçları yazdırma, Yazıcı,
DetaylıSAB104 Bilgisayar Programlama
Hafta 1 Programlamanın Tanımı Ankara Üniversitesi Uygulamalı Bilimler Fakültesi dersine ait sunumlar hazırlanırken ağırlıklı olarak Quick Basic ile Bilgisayar Programlama (Dr. İsmail Gürkan, Dr. Bülent
DetaylıİÇ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
İÇ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 BÖLÜM-II ALGORİTMA I. GİRİŞ Bilgisayar dünyasında, insanın
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri
DetaylıAlgoritma ve Programlamaya Giriş
Algoritma ve Programlamaya Giriş Algoritma Bir sorunu çözebilmek için gerekli olan sıralı ve mantıksal adımların tümüne Algoritma denir. Doğal dil ile yazılabilir. Fazlaca formal değildir. Bir algoritmada
DetaylıBIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod)
2017-2018 BaharYarıyılı Balıkesir Üniversitesi Endüstri Mühendisliği Bölümü 3 BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ (Algoritma Geliştirmek, Satır Kod) Yrd. Doç. Dr. İbrahim Küçükkoç Web: ikucukkoc.baun.edu.tr
DetaylıAlgoritma ve Akış Diyagramları
Algoritma ve Akış Diyagramları Bir problemin çözümüne ulaşabilmek için izlenecek ardışık mantık ve işlem dizisine ALGORİTMA, algoritmanın çizimsel gösterimine ise AKIŞ DİYAGRAMI adı verilir. 1 Akış diyagramları
DetaylıProgram akıģı sırasında belirtilen satır numaralı yere gitmek için kullanılır. Genel formu: [<satır numarası>] GOTO <satır numarası 1> GOTO n
KONTROL DEYİMLERİ Kontrol deyimleri bir programın normal akıģını değiģtirmek için kullanılır. Aksi söylenmedikçe programın komut satırları birbiri ardına çalıģtırılır. Program içindeki yapılan sorgulamalara
DetaylıAlgoritmanın Hazırlanması
Algoritmanın Hazırlanması 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
DetaylıÖ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.
Ö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. Çözüm 1: 1. Evden dışarıya çık 2. Otobüs durağına yürü 3. Durakta
DetaylıPROGRAMLAMAYA GİRİŞ DERS 2
PROGRAMLAMAYA GİRİŞ DERS 2 Program editörde oluşturulur ve diske kaydedilir Tipik Bir C Programı Geliştirme Ortamının Temelleri 1. Edit 2. Preprocess 3. Compile 4. Link 5. Load 6. Execute Önişlemci programı
DetaylıAlgoritmalar ve Programlama. Algoritma
Algoritmalar ve Programlama Algoritma Algoritma 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ü
DetaylıFORTRAN da Giriş/Çıkış Ve Tanımlamalar
FORTRAN da Giriş/Çıkış Ve Tanımlamalar Giriş/Çıkış deyimleri Biçimli giriş/çıkış deyimleri, Klavye den veri girişi Dosya dan veri okuma ve dosyaya veri yazma Ekrana sonuçları yazdırma, Yazıcı, çizici gibi
DetaylıDers 2: Veri Tipleri, Değişkenler ve Sabitler
Ders 2: Veri Tipleri, Değişkenler ve Sabitler Giriş Orta ve yüksek seviyeli dillerin hemen hemen hepsinde veri tipi ve değişken kavramı bulunmaktadır. Bu kısımda C programlama dilindeki temel veri tipleri,
DetaylıÖ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.
Ö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. PROGRAM Soru1 PRINT Merhaba Dünya! ; 2. Klavyeden girilen negatif bir sayıyı
DetaylıBMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1
BMT 101 Algoritma ve Programlama I 6. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Veri Tipleri Yük. Müh. Köksal Gündoğdu 2 Veri Tipleri Tam sayı ve Ondalık sayı veri tipleri Veri Tipi Alt Sınıf Üst Sınıf Duyarlı
DetaylıPASCAL PROGRAMLAMA DİLİ YAPISI
BÖLÜM 3 PASCAL PROGRAMLAMA DİLİ YAPISI 3.1. Giriş Bir Pascal programı en genel anlamda üç ayrı kısımdan oluşmuştur. Bu kısımlar bulunmaları gereken sıraya göre aşağıda verilmiştir. Program Başlığı; Tanımlama
DetaylıPROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK
PROGRAMLAMAYA GİRİŞ VE ALGORİTMA «YTÜROK» EĞİTMEN:REHA ÖZGÜR ŞİMŞEK Giriş-Tanımlamalar Program Nedir? Tanımlanmış bir problemi bilgisayar ortamında çözen ürüne program denir. Programlama Nedir? Tanımlanmış
Detaylımustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar
Algoritma ve Programlamaya Giriş mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar İçerik Algoritma Akış Diyagramları Programlamada İşlemler o o o Matematiksel Karşılaştırma Mantıksal Programlama
DetaylıFonksiyonlar (Altprogram)
Fonksiyonlar (Altprogram) C Programlama Dili fonksiyon olarak adlandırılan alt programların birleştirilmesi kavramına dayanır. Bir C programı bir ya da daha çok fonksiyonun bir araya gelmesi ile oluşur.
DetaylıBİLGİSAYAR PROGRAMLAMA MATLAB
BİLGİSAYAR PROGRAMLAMA MATLAB Arş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi Ders Bilgileri Dersin Hocası: Araş. Gör. Ahmet Ardahanlı E-posta: ahmet.ardahanli@hotmail.com Oda: DZ-33
DetaylıBİLGİSAYAR PROGRAMLAMA. Algoritma ve Akış Şemaları
BİLGİSAYAR PROGRAMLAMA Algoritma ve Akış Şemaları Algoritma tanımı Algoritma özellikleri Algoritma tasarımı Akış şemaları Dallanma simgeleri Döngü simgeleri Akış şeması tasarımı Akış şeması örnekleri Konu
DetaylıGünümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır.
I. GİRİŞ Günümüz bilgi toplumunda bilgisayar, her alanda kendine yer edinmiş ve insana, bir çok işlemde yardımcı olarak büyük kolaylık sağlamaktadır. İnsanların elle yaptığı ve yapmakta olduğu bir çok
DetaylıBİLGİSAYAR PROGRAMLAMA DERSİ
BİLGİSAYAR PROGRAMLAMA DERSİ 4. DERS NOTU Konu: M-dosya yapısı ve Kontrol Yapıları Hazırlayan: Yrd. Doç. Dr. Ahmet DUMLU 1 M-Dosya Yapısı Bir senaryo dosyası (script file) özel bir görevi yerine getirmek
Detaylı<fn> FORMAT (a1,a2,a3,...) : format deyiminin satır numarasıdır READ, WRITE deyimleri ile verilir. : alan bildirim deyimleridir.
FORMAT deyimi Değişkenlere ait bilgilerin yazılması veya değişkenlere değer okunması sırasında, gerekli tür ve uzunlukların belirtildiği yani giriş ve çıkış işlemlerinin hangi düzende olması gerektiğini
DetaylıC Programlama Dilininin Basit Yapıları
Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade
DetaylıC PROGRAMLAMA D İ L İ
C PROGRAMLAMA DİLİ C Programlama Dilinin Temelleri C Programlama Dili'ni popüler kılan önemli nedenler aşağıda listelenmiştir: C, güçlü ve esnek bir dildir. C ile işletim sistemi veya derleyici yazabilir,
DetaylıBİLGİSAYAR PROGRAMLAMA DERSİ
BİLGİSAYAR PROGRAMLAMA DERSİ Yrd. Doç. Dr. Fatih TOSUNOĞLU Erzurum Teknik Üniversitesi Mühendislik Fakültesi İnşaat Mühendisliği Bölümü DERS NOTU 3 KONU: M-dosya yapısı ve Kontrol Yapıları M-Dosya Yapısı
DetaylıPascal Programlama Dili
Pascal Programlama Dili Öğr. Gör. Özgür ZEYDAN Z.K.Ü. Çevre Müh. Bölümü Pascal Programlarının Yapısı Program program_adı; Uses unitler type Özel veri tipleri Const Sabitler Label etiketler var değişken
DetaylıBÖLÜM 2: ALGORİTMALAR
BÖLÜM 2: ALGORİTMALAR Algoritma bir problemin çözümünde (işlemin gerçekleşmesinde) izlenen adımlar dizisi olup, problemi çözmek için yürütülecek eylemlerin ve bu eylemlerin sırasını belirten bir talimattır,
DetaylıBİLGİSAYAR PROGRAMLAMA DERSİ
BİLGİSAYAR PROGRAMLAMA DERSİ 3. DERS NOTU Konu: MATLAB de Temel İşlemler Hazırlayan: Yrd. Doç. Dr. Ahmet DUMLU 1 MATLAB (Matrix Laboratory) sayısal hesaplama dilidir. MathWorks firması tarafından geliştirilmiş
DetaylıBilgisayar Programlama MATLAB
What is a computer??? Bilgisayar Programlama MATLAB Prof. Dr. İrfan KAYMAZ What Konular is a computer??? MATLAB ortamının tanıtımı Matlab sistemi (ara yüzey tanıtımı) a) Geliştirme ortamı b) Komut penceresi
DetaylıBİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1
BİLGİSAYAR BİLİMİ DERSİ (KUR 1) PYTHON PROGRAMLAMA DİLİ ÇALIŞMA KÂĞIDI - 1 Ekrana Metin Yazdırmak Ekranda metin yazdırmak istendiğinde print komutu kullanılır. Kullanımı aşağıda verilmiştir. Parantez içinde
DetaylıSınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD
Selçuk Üniversitesi, Mühendislik Fakültesi, Harita Mühendisliği Bölümü Yıliçi Sınavı Test Soruları Adı soyadı : Öğrenci no : Sınav tarihi : 13.04.2015 Süre : 60 dak. 1. Hangisi gerçek sayı değişmezi değildir?
DetaylıFortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir:
FORTRAN (FORmula TRANslation) Fortran komut satırı toplam 80 kolon ve 5 bölgeden oluģur. Komut satırının yapısı aģağıdaki gibidir: 1 2...5 6 7...72 73...80 A B C D E A Bölgesi: (1. kolon) B Bölgesi: (2-5
DetaylıBölüm 1: Fortran'a Giriş
http//alikoker.name.tr Bölüm 1 Fortran'a Giriş Giriş 1.1 Tarihçe 1.2 Neden Fortran? 1.3 İlk Fortan 90 Programı 1.4 Programın Derlenmesi ve Çalıştırılması 1.5 Kod Yazımı için Tavsiyeler Giriş Bu ilk derste,
DetaylıFBEB-512 C++ ile Nesne Tabanlı Programlama Güz 2009 (1. Hafta) (Yrd. Doç. Dr. Deniz Dal)
FBEB-512 C++ ile Nesne Tabanlı Programlama Güz 2009 (1. Hafta) (Yrd. Doç. Dr. Deniz Dal) Algoritma Geliştirme ve Akış Diyagramları BİLGİSAYARLA PROBLEM ÇÖZÜMÜ AŞAMALARI Analiz Algoritma Geliştirilmesi
Detaylıİnternet Programcılığı Dersi 2.Dönem Ders Notu
İnternet Programcılığı Dersi 2.Dönem Ders Notu DEĞİŞKEN TİPLERİ TAM SAYI (İNTEGER) VERİ TİPİ Negatif veya pozitif ondalık kısmı bulunmayan sayılardır. Örnek: $i=65; $x=345; ONDALIK(REAL)VERİ TİPİ Ondalıklı
DetaylıBTP 207 İNTERNET PROGRAMCILIĞI I. Ders 8
BTP 27 İNTERNET PROGRAMCILIĞI I Ders 8 Değişkenler 2 Tamsayı Değerler (Integer) Tamsayılar, tabanlı (decimal), 8 tabanlı (octal) veya 6 tabanlı (hexadecimal) olabilir. 8 tabanındaki sayıları belirtmek
Detaylı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
DİZİLER (ARRAYS) 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 değişken tanımlamak gereklidir. string gun1,
DetaylıKarakter Değişkenlere İlişkin Komutlar
Karakter Değişkenlere İlişkin Komutlar ASCII Kodlama Sistemi Bilgisayar sayılar üzerine kurulmuş makinalar olduklarından onların düşünmeleri ve hatırlamaları sayısal değerlerle olmaktadır. Bundan dolayı
DetaylıALGORİTMA VE PROGRAMLAMA I
ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Koşul Karşılaştırma Operatörleri Mantıksal
DetaylıEBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA
6. HAFTA EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA Öğr. Gör. S. M. Fatih APAYDIN apaydin@beun.edu.tr EMYO Bülent Ecevit Üniversitesi Kdz. Ereğli Meslek Yüksekokulu ALGORİTMA ÖRNEK1: İki sayının toplamı
DetaylıTEMEL BİLGİSAYAR BİLİMLERİ. Programcılık, problem çözme ve algoritma oluşturma
TEMEL BİLGİSAYAR BİLİMLERİ Programcılık, problem çözme ve algoritma oluşturma Programcılık, program çözme ve algoritma Program: Bilgisayara bir işlemi yaptırmak için yazılan komutlar dizisinin bütünü veya
DetaylıFORTRAN Değişkenleri
FORTRAN Değişkenleri FORTRAN'daki değişken terimi, programın çeşitli yerlerinde veya safhalarında değişik değerler alabilen niceliklerin sembolik adı olup en fazla 6 karakterden oluşur (standart FORTRAN).
DetaylıDeğişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while
Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne
DetaylıC PROGRAMLAMA YRD.DOÇ.DR. BUKET DOĞAN PROGRAM - ALGORİTMA AKIŞ ŞEMASI
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
DetaylıMAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya
MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ Prof. Dr. Necmettin Kaya C PROGRAMLAMA DİLİ ÖZELLİKLERİ C programlama dili, 1972 yılında Bell Labortuvarı nda Dennis Ritchie tarafından geliştirilmiştir.
DetaylıBilgisayar II Dersi. Bölüm-2
Bilgisayar II Dersi Bölüm-2 Bilgisayar dünyasında, insanın yaşamı boyunca yaptığı plan kavramına eşdeğer algoritma kavramı vardır. Bilgisayardaki işlemin/işlemlerin gerçekleştirilmesinde izlenecek adımlara
DetaylıTemel Giriş/Çıkış Fonksiyonları
Temel Giriş/Çıkış Fonksiyonları Temel giriş/çıkış fonksiyonları, bütün programla dillerinde mevcuttur. Bu tür fonksiyonlar, kullanıcıya ekrana veya yazıcıya bilgi yazdırmasına, ve bilgisayara klavyeden
DetaylıProgramlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1
Programlama Dilleri C Dili Programlama Dilleri-ders02/ 1 Değişkenler, Sabitler ve Operatörler Değişkenler (variables) bellekte bilginin saklandığı gözlere verilen simgesel isimlerdir. Sabitler (constants)
Detaylı3/7/2011. ENF-102 Jeoloji 1. Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Veri Tanımları ve Mantıksal Đşlemler
Veri Tanımları ve Mantıksal Đşlemler Tekrar -- Değişken Tanımlamaları (Definition) ve Veri Türleri (Data Type) Kullanılacak bütün değişkenlerin kullanılmadan önce C derleyicisine bildirilmeleri gerekir.
DetaylıTemel Bilgisayar Programlama ve BASIC Diline Giriş
Temel Bilgisayar Programlama ve BASIC Diline Giriş Ders Notları Selahattin ERGEÇ-Mustafa Y.ATA KAPSAM 1. Temel Bilgisayar Donanım-Yazılım Bilgileri 2. Simgeler, Değişmezler ve Değişkenler 3. Aritmetiksel
DetaylıMatLab. Mustafa Coşar mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar
MatLab Mustafa Coşar mustafacosar@hitit.edu.tr http://web.hitit.edu.tr/mustafacosar Sunum Planı MatLab Hakkında Ekran Yapısı Programlama Yapısı Matlab da Programlamaya Giriş Sorular MatLab Hakkında MatLab;
DetaylıDr. Fatih AY Tel:
Bilgisayar Programlama Ders 5 Dr. Fatih AY Tel: 0 388 225 22 55 fatihay@fatihay.net www.fatihay.net Fonksiyonlar Fonksiyonlar Büyük programlar geliştirmenin en iyi yolu, onu orijinal programdan daha kolay
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
SABİTLER VE DEĞİŞKENLER Değişken, verilerin bellekte geçici olarak kaydedilmesini ve gerektiğinde kullanılmasını sağlayan değerdir. Nesne tabanlı programlama dilinde değişken kullanımı diğer programlama
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar
DetaylıBM202 SAYISAL ÇÖZÜMLEME
BM202 SAYISAL ÇÖZÜMLEME DOÇ.DR. CİHAN KARAKUZU DERS-2 1 Ders2-Sayısal Hesaplamalarda Gerek Duyulabilecek Matlab İşlemleri MATLAB, çok paradigmalı (bir şeyin nasıl üretileceği konusunda örnek, model) sayısal
DetaylıTEMEL BİLGİSAYAR BİLİMLERİ
TEMEL BİLGİSAYAR BİLİMLERİ Doç. Dr. M.Ümit GÜMÜŞAY YTÜ - 2012 2 PROGRAMLAMA MANTIĞI Herhangi bir amaç için hazırlanan programın mantık hataları içermesi durumunda, alınacak sonucunda yanlış olacağı aşikardır.
DetaylıBÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI
BÖLÜM 6: KARŞILAŞTIRMALI KONTROL YAPILARI C programlama dilinde, diğer programlama dillerinde olduğu gibi, işlemler, ilk satırdan başlamak üzere sırayla çalışır. Program kontrol yapıları ise, programın
DetaylıGenel Programlama I
Genel Programlama I 30.09.2010 1 Genel Programlama I Ders İçeriği Programlamaya giriş ve algoritma kavramları Basit ve karmaşık veri tipleri Program kontrol komutları (Döngü ve şart yapıları) Diziler ve
DetaylıNesne Yönelimli Programlama
1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Genel Bilgiler Ders konuları 1. Programlamaya Giriş 2. Program Denetimi ve Operatörler 3. Nesnelerin
DetaylıALGORİTMALAR. Turbo C Bilgisayarda Problem Çözme Adımları. Bilgisayarda Problem Çözme Adımları.
Turbo C ++ 3.0 ALGORİTMALAR http://vaibhavweb.tripod.com/others/tc3.zip http://www.top4download.com/turbo-c- /aklqwuba.html 1 2 Bilgisayarda Problem Çözme Adımları Bilgisayarda Problem Çözme Adımları 1-Problemi
DetaylıBASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN
BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN Basit C Programları: Bir Metni Yazdırmak #include /* program çalışmaya main fonksiyonundan başlar*/ int main() { printf( "C diline hoşgeldiniz!\n"
DetaylıBİLGİSAYAR PROGRAMLAMA MATLAB
BİLGİSAYAR PROGRAMLAMA MATLAB Arş. Gör. Ahmet ARDAHANLI Kafkas Üniversitesi Mühendislik Fakültesi Bu hafta? 1. Matlab ve Programlama Ortamı 2. Matlab Komut Penceresi 3. Matlab de değişken tanımlama 4.
DetaylıProgramlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.
Programlamaya Giriş Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi. Programın Yazımında İzleyeceğimiz Adımlar Problemi anla. İhtiyaçları belirle. Problemin
DetaylıBMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1
BMT 101 Algoritma ve Programlama I 11. Hafta Yük. Müh. Köksal Gündoğdu 1 C++ Fonksiyonlar Yük. Müh. Köksal Gündoğdu 2 C++ Hazır Fonksiyonlar Yük. Müh. Köksal Gündoğdu 3 C++ Hazır Fonksiyonlar 1. Matematiksel
DetaylıProblem. N sayıda öğrencinin boy ortalaması. N: Öğrenci sayısı S: Başlangıç değeri TOP: Toplam BOY: Boy ORT: Ortalama. Algoritma
TÜRK DİLİ VE EDEBİYATI BÖLÜMÜ TEMEL BİLGİSAYAR BİL. VE BASIC PROG. DİLİ DERS NOTLARI 1. Sınıf - 2. Dönem İsa SARI www.isa-sari.com Problem N sayıda öğrencinin boy ortalaması N: Öğrenci sayısı S: Başlangıç
DetaylıİÇ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
İÇ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 UYGULAMA Örnek: Yandaki algoritmada; klavyeden 3 sayı
DetaylıGÖRSEL PROGRALAMA HAFTA 3 ALGORİTMA VE AKIŞ DİYAGRAMLARI
GÖRSEL PROGRALAMA HAFTA 3 ALGORİTMA VE AKIŞ DİYAGRAMLARI DERS İÇERİĞİ Algoritma nedir? Akış Diyagramı nedir? Örnek Uygulama ALGORİTMA Algoritma sözcüğü Ebu Abdullah Muhammed İbn Musa el Harezmi adındaki
DetaylıFORMÜLLER VE FONKSİYONLAR
C FORMÜLLER VE FONKSİYONLAR Konuya Hazırlık 1. Excel de formül kullanmanın faydalarını açıklayınız. Formüller, bir sayfadaki verileri kullanarak işlem yapan denklemlerdir. Bir formülde, aynı sayfadaki
Detaylı2 ALGORİTMA VE AKIŞ DİYAGRAMLARI
İÇİNDEKİLER IX İÇİNDEKİLER 1 GİRİŞ 1 Kitabın Amacı 1 Algoritmanın Önemi 2 Bilgisayarın Doğuşu ve Kullanım Amaçları 3 Programlama Dili Nedir? 3 Entegre Geliştirme Ortamı (IDE) Nedir? 4 2 ALGORİTMA VE AKIŞ
DetaylıNESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki
DetaylıFortran da kullanılan giriş çıkış komutları PRINT, WRITE ve READ dir.
Fortran da Temel Giriş/Çıkış Komutları Fortran da kullanılan giriş çıkış komutları PRINT, WRITE ve READ dir. PRINT komutu belli bir ifadeyi veya değişkenlerin değerini ekrana yazdırmayı sağlar. WRITE komutu
DetaylıDiziler. Yukarıdaki bilgileri bilgisayar belleğinde saklamak için aşağıdaki gibi değişkenler tanımlanır ve değerler bu değişkenlere aktarılır :
Diziler 5 farklı şehirdeki otomobillerin göz önüne alalım : 1.Şehir 2.Şehir 3.Şehir 4.Şehir 5.Sehir Oto sayısı 1500 750 1000 2000 1800 Yukarıdaki bilgileri bilgisayar belleğinde saklamak için aşağıdaki
DetaylıALGORİTMA VE PROGRAMLAMA I DERS NOTU#8
ALGORİTMA VE PROGRAMLAMA I DERS NOTU#8 YZM 1105 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi 6. BÖLÜM 2 Çok Boyutlu Diziler Çok Boyutlu Dizi 3 Bir dizi aşağıdaki gibi bildirildiğinde
DetaylıExcel' de formüller yazılırken iki farklı uygulama kullanılır. Bunlardan;
7. FORMÜLLER SEKMESİ Excel in en çok kullanılan yönü hesaplama yönüdür. Hesaplamalar Formüller aracılığıyla yapılır. Formüller sekmesi anlatılırken sık kullanılan formüller ve formül yazımı da anlatılacaktır.
DetaylıDers Tanıtım Sunumu. Internet Programming II. Elbistan Meslek Yüksek Okulu Bahar Yarıyılı. Öğr. Gör. Murat KEÇECİOĞLU 1
Ders Tanıtım Sunumu Internet Programming II Elbistan Meslek Yüksek Okulu 2012 2013 Bahar Yarıyılı Öğr. Gör. Murat KEÇECİOĞLU 1 PHP Program Yapısı Php çoğunlukla HTML etiketleri arasına gömülerek kullanılır.
DetaylıBİLİŞİM TEKNOLOJİLERİ 6. SINIF DERS NOTLARI 2
PROGRAMLAMA Bir problemin çözümü için belirli kurallar ve adımlar çerçevesinde bilgisayar ortamında hazırlanan komutlar dizisine programlama denir. Programlama Dili: Bir programın yazılabilmesi için kendine
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
DetaylıBİL-142 Bilgisayar Programlama II
BİL-142 Bilgisayar Programlama II (C/C++) Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Konular Giriş Kontrol Yapıları if Seçme Deyimi if... else Seçme Deyimi while Tekrar
DetaylıAdı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.
Selçuk Üniversitesi Mühendislik Fakültesi Harita Mühendisliği Bölümü ra Sınavı Test Soruları dı soyadı :... Öğrenci no :... İmza :... Tarih, Süre :13.04.2017 60 dak. Dikkat!!! Soru kitapçığında ve cevap
DetaylıÜNİTE 1: TEMEL KAVRAMLAR
MATEMATİK ÜNİTE : TEMEL KAVRAMLAR Temel Kavramlar ADF 0 RAKAM Sayı oluşturmak için kullanılan sembollere... denir. 0 luk sayma düzenindeki rakamlar 0,,,... 8 ve 9 olup 0 tanedir. örnek a, b, c sıfırdan
DetaylıSAYILAR DOĞAL VE TAM SAYILAR
1 SAYILAR DOĞAL VE TAM SAYILAR RAKAM: Sayıları ifade etmek için kullandığımız 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 sembollerinden her birine rakam denir. Soru: a ve b farklı rakamlar olmak üzere a + b nin alabileceği
DetaylıNesne Yönelimli Programlama
1 Nesne Yönelimli Programlama Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, Java Programlama Dili ve Yazılım Tasarımı, Altuğ B. Altıntaş, Papatya
DetaylıC Konsol Giriş Çıkış Fonksiyonları
C Konsol Giriş Çıkış Fonksiyonları Öğr. Gör. M. Ozan AKI Rev 1.0 Stringlerde Özel Karakterler \n : Bir sonraki satırın ilk sütununa git \b : Backspace (önceki karakteri sil) \a : Bip sesi \\ : Ters bölü
DetaylıBil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi
Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini
DetaylıAtatürk Anadolu. Temel Kavramlar Üzerine Kısa Çalışmalar
Atatürk Anadolu Lisesi M A T E M A T İ K Temel Kavramlar Üzerine Kısa Çalışmalar KONYA \ SELÇUKLU 01 MATEMATİK 1. TEMEL KAVRAMLAR 1.1. RAKAM Sayıların yazılmasında kullanılan sembollere rakam denir. Onluk
DetaylıALGORİTMA VE PROGRAMLAMA I
ALGORİTMA VE PROGRAMLAMA I Yrd. Doç. Dr. Deniz KILINÇ deniz.kilinc@cbu.edu.tr YZM 1101 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Genel Bakış 2 Diziler Dizi Nedir? Dizilerin Bildirimi
DetaylıTBP101 (4. Hafta) Alıştırma Soruları ve Cevapları
TBP101 (4. Hafta) Alıştırma Soruları ve Cevapları 1. Klavyeden girilen üç sayıyı toplayan ve ortalamasını alıp sonuçları ekrana yazdıran sözde kodunu yazınız. PROGRAM Soru1 READ A, B, C; TOP = A + B+ C;
DetaylıC# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ
C# Yazım Kuralları 1 İçindekiler C# Yazım Kuralları Veritipleri Değişkenler Operatörler Sınıflar Nesneler, Özellik, Metot ve Olay Bileşenler 2 C# yazım kuralları Deyimlerde büyük küçük harf yazıma uyulmalı
DetaylıOkut. Yüksel YURTAY. İletişim : (264) Sayısal Analiz. Algoritma & Matlab.
Okut. Yüksel YURTAY İletişim : Sayısal Analiz yyurtay@sakarya.edu.tr www.cs.sakarya.edu.tr/yyurtay (264) 295 58 99 Algoritma & Matlab 1 Algoritma Algoritma ; verilerin bilgisayara hangi çevre biriminden
DetaylıKodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.
GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.
Detaylıpfrintf fonksiyonu: Çıkışın formatlı olması ve bunun bir dosyaya yazdırılması durumlarında kullanılır. fprintf fonksiyonunun genel yazım biçimi,
disp fonksiyonu: disp fonksiyonunun genel yazım biçimi, disp() bir tekst yada dizi olabilir. disp() dizi ismini basmadan ekrana diziyi görüntüler. Eğer metin dizesi içeriyorsa metin görüntülenir. disp
DetaylıBLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri
BLM-111 PROGRAMLAMA DİLLERİ I Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri Yrd. Doç. Dr. Ümit ATİLA umitatila@karabuk.edu.tr http://web.karabuk.edu.tr/umitatilla/ Temel Veri Tipleri C dilinde
DetaylıDr. Musa KILIÇ Öğretim Görevlisi http://kisi.deu.edu.tr/musa.kilic
Dr. Musa KILIÇ Öğretim Görevlisi http://kisi.deu.edu.tr/musa.kilic BİLGİSAYAR DONANIM Donanım birimleri ekran, klavye, harddisk, ram YAZILIM Yazılımlar ise bilgisayarın donanım yapısını kullanılır hale
Detaylı