BİLG214. 20.10.2009 Dr. Mustafa T. Babagil 1



Benzer belgeler
BİLG Dr. Mustafa T. Babagil 1

Eastern Mediterranean University Faculty of Arts & Sciences -- Department Of Mathematics BİLG213 BİLGİSAYAR PROGRAMLAMAYA GİRİŞ

şeklinde tanımlanmıştır. O halde, dosyaları daha önceki bilgilerimizi kullanarak FILE *Dosya1, *Dosya2;

Temel Bilgisayar Programlama Final Sınavı Çalışma Notları

10. DOSYA GİRİŞ ÇIKIŞ FONKSİYONLARI

Metin Dosyaları. Metin Dosyaları Dosya Açma ve Kapama Dosya Okuma ve Yazma Rastgele Erişim Standart Girdi/Çıktı Hata Kontrolü

işlemler bittikten sonra dosyaların kapatılması uygun olacaktır. Bunun için, fclose(fin);

Fall Object-Oriented Programming Laboratory 03

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

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

Diziler. Yrd.Doç.Dr.Bülent ÇOBANOĞLU

Deney 7: Fonksiyon Tanımlama ve Parametre Aktarım Yöntemleri

ALGORİTMA VE PROGRAMLAMA II

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

Karakter katarları ile ilgili fonksiyonlar içerir Yerel kayan noktalı sayılar tanımlanır

Döngü Komutları. Komutu. while Komutu Diğer Operatörler Bileşik Komut for Komutu. İçiçe Döngüler break ve continue Komutları

BİLGİSAYAR MÜHENDİSLİĞİ ALGORİTMA VE PROGRAMLAMA II 2.HAFTA SWİTCH (CASE), SAYAÇLAR, DÖNGÜLER,

mod ile açılacak olan dosyanın ne amaçla açılacağı belirlenir. Bunlar:

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

Pascalda oluşturulacak dosyalar değişkenler gibi programın başında tanımlanır.

C++ Dersi: Nesne Tabanlı Programlama

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

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

BMB1002 Bilgisayar Programlamaya Giriş. Dosyalar. Prof. Dr. Necmettin Kaya

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

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

Diziler (Arrays) Çok Boyutlu Diziler

Algoritma ve Programlama II Recursive Fonksiyonlar Dosyalama

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Endüstri Mühendisliği Bölümü Bilgisayar Programlama Ders Notları

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

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

ALGORİTMA VE PROGRAMLAMA II

Fonksiyonlar (Altprogram)

#ifndef VEKTOR_H #define VEKTOR_H. struct vektor_s { double x; double y; double z; }; typedef struct vektor_s vektor_t;

KOCAELİ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ. BİLGİSAYAR LABORATUVARI II FİNAL SINAVI SORU ve CEVAPLARI(I. ogr)

C++ Dersi: Nesne Tabanlı Programlama

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

enum bolumler{elektronik, insaat, bilgisayar, makine, gida};

Programlama Dilleri Laboratuvarı

SAKARYA ÜNİVERSİTESİ BİLGİSAYAR VE BİLİŞİM BİLİMLERİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÜZ DÖNEMİ PROGRAMLAMAYA GİRİŞ DERSİ

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Genel Programlama II

Sınav tarihi : Süre : 60 dak.

Eln 1001 Bilgisayar Programlama I

Örnek1: #include <iostream> #include <string> using namespace std;

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

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

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

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

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

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

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

ALGORİTMA VE PROGRAMLAMA II

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

BÖLÜM 11: YAPISAL VERİ TİPLERİ

Özyineleme (Recursion)

Temel Dosya İşlemleri. Kütük Organizasyonu 1

#ifndef COMPLEX_H #define COMPLEX_H

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

1 PROGRAMLAMAYA GİRİŞ

printf("\nbilgilerini goruntulemek istediginiz ogrencinin numarasini girin: "); scanf("%d",&no);

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

KONU 7: DOSYA İŞLEME ( File Processing )

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

Fall Object-Oriented Programming Laboratory 02 - Structures

Pointer Kavramı. Veri Yapıları

HSancak Nesne Tabanlı Programlama I Ders Notları

ALGORİTMA VE PROGRAMLAMA II

HSancak Nesne Tabanlı Programlama I Ders Notları

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Temel Bilgisayar Programlama

7- Turbo Pascal Programlamada Alt Programlar (Procedure)

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 1 DERSİ LAB. ÖDEVİ

BİL1001 Bilgisayar Bilimlerine Giriş 1

BİL-142 Bilgisayar Programlama II

YAPILAR (STRUCTURES)

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

Jval tipi. Genel veri yapılarını kullanacağımız zaman Jval den faydalanırız.önemli olanlar aşağıda mevcuttur:

Eln 1002 Bilgisayar Programlama II

Giriş. ENF102 Jeoloji

BİL-142 Bilgisayar Programlama II

DOSYA İŞLEMLERİ Programlama dilleri hafta -

DİZİLER-KATARLAR ALGORİTMA VE PROGRAMLAMA II

AHMET YESEVİ ÜNİVERSİTESİ BİLİŞİM SİSTEMLERİ VE MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ LİSANS DÖNEM ÖDEVİ

Programlama Dilleri 1. Ders 4: Diziler

Örnek 4: Örnek Özyinelemeli fonksiyon örneği Bölüm 9. C++ programlama dilinde Nesne ve sınıf

Arama Algoritmaları. Doğrusal Arama ve Binary Arama

C PROGRAMLAMA D İ L İ

ELN1002 BİLGİSAYAR PROGRAMLAMA 2

Kocaeli Üniversitesi Bilgisayar Mühendisliği Programlama 2 Dersi Final Sınavı. A Grubu

BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

1 RUBY HAKINDA 1 Ruby nin Gelişim Hikayesi 1 Neden Ruby? 1 Neden Bu Kadar Popüler? 2

Transkript:

BİLG214 20.10.2009 Dr. Mustafa T. Babagil 1

Yapısal bilgi türlerinin tanımlanması. (C++ daki struct yapısı. ) Daha önce öğrenmiş olduğumuz bilgi tipleri char, int ve float v.b. değişkenler ile dizi (array) tanımı idi. Şimdi artık bu temel bilgi tipleri üzerine kendi tanımlayacağımız bilgi tiplerini de ekleyebiliriz. Aslında yapacağımız, bir grup değişkeni tek bir değişkenmiş gibi tanımlamaktır. Bu amaç için de C++ programlama dili bize struct yapısını sunmaktadır. 23.02.2010 Dr. Mustafa T. Babagil 2

STRUCT yapısı Bilgi tiplerini birleştirerek yeni bilgi tipleri oluşturmak için struct yapısını kullanacağız. Bu yapı sayesinde C++ birden fazla değişken türünü gruplayarak kullanma olanağı sunar. Genel yapısı; struct <stuctisim> ; değişkentipi1 değişkentipi2... alan1; alan2; 23.02.2010 Dr. Mustafa T. Babagil 3

struct yapısı örneği!.. struct ogrenci int ogrencinumarasi; string isim; short okuldakikacinciyili; double gpa; double cgpa; ; Yapı ismi Yapı elemanları ; her yapının sonunda mutlaka olmalıdır!... 23.02.2009 Dr. Mustafa T. Babagil 4

Struct yapısı yalnız başına bellekte bir yer tutamaz. Struct yapısı ile oluşturmuş olduğunuz yeni yapının ismini kullanarak bellekte bir yer tutabilirsiniz. Bundan dolayı, struct yapısı kullanarak oluşturmuş olduğunuz yeni yapının ismini amacınıza göre adlandırınız ve bu ismi bir değişken tipi gibi kullanınız. Bir sonraki salytta bir örnek olarak, öğrencitipi yapısı olarak yeni bir yapı oluşturuldu. Bu yapıda bir dizi bilgi tutulması öngörülmüştür. Birden fazla öğrenci için bunu yapıyoruz ve sonuç olarak da sadece en büyük öğrenci numaralı öğrencinin bilgisini ekrana 23.02.2009 çıktı olarak Dr. aldık... Mustafa T. Babagil 5

#include <iostream.h> struct ogrencitipi char isim[20]; double ogrno; char cinsiyet; char bolum[20]; float GPA; float CGPA; double telno; char adres[20]; ; const max=10; int main() ogrencitipi ogrenci[max]; int i,yer; double enbuyuknumara; // 5 ogrenci için bilgi girisi yapalim ve bu girilen bilgileri ekrana toplu halde yansitalim. for (i=0;i<5;i++) cout << "isim gir--->"; cin>> ogrenci[i].isim; cout << "ogrenci no gir--->"; cin>> ogrenci[i].ogrno; cout << "cinsiyet gir E/K--->"; cin>> ogrenci[i].cinsiyet; cout << "bolum gir--->"; cin>> ogrenci[i].bolum; cout << "GPA gir--->"; cin>> ogrenci[i].gpa; cout << "CGPA gir--->"; cin>> ogrenci[i].cgpa; cout << "telno gir--->"; cin>> ogrenci[i].telno; cout << "Adres gir---> \n"; cin>> ogrenci[i].adres; 23.02.2009 Dr. Mustafa T. Babagil 6

enbuyuknumara=ogrenci[0].ogrno;i=1; while (i < 5 ) if (enbuyuknumara <= ogrenci[i].ogrno) enbuyuknumara=ogrenci[i].ogrno; yer=i; i++; cout << "en buyuk ogrenci numarali ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[yer].isim << "\n"; cout << "ogrenci no --->" << ogrenci[yer].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[yer].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[yer].bolum << "\n"; cout << "GPA --->" << ogrenci[yer].gpa << "\n"; cout << "CGPA --->" << ogrenci[yer].cgpa << "\n"; cout << "telno --->" << ogrenci[yer].telno << "\n"; cout << "Adres --->" << ogrenci[yer].adres << "\n"; return 0; 23.02.2009 Dr. Mustafa T. Babagil 7

Çalışma 1 Struct yapısını kullanarak kendinize ait yeni bir yapı oluşturunuz. En az 4 alan ve 4 çeşit değişken tipi içersin. Bu değişken tiplerinden birisi sayısal bir değişken olsun. En az 10 tane yeni yapı ile ilgili bilgi tutacak bir dizi tanımlayınız. Program çalıştığı zaman bilgi girişlerini yapınız ve çıktı olarak da bu girilen yeni yapıdaki bilgilerinizi sayısal alan dikkate alarak sıralayıp (büyükten küçüğe doğu) ekrana yansıtsın. 23.02.2009 Dr. Mustafa T. Babagil 8

ÖDEV 1 Bir marketteki 50 ürün için, ürün kodu, ürün ismi, ürün fiyatı, ürünün stok miktarı ve ürünün cinsi(temizlik yada gıda olarak adlandırılabilir.) olmak üzere bir yeni yapı tanımlayınız ve bunu bir dizi ile tanımlayınız. Dizi boyutu 50 olsun. Tüm alanlara bilgi girişi yapılsın ve ürün koduna göre sıralama(ister küçükten büyüğe, ister büyükten küçüğe) yapılarak çıktısını ekrana yazdırın.

Fonksiyonlarda Struct yapısının kullanılması ve Uygulamaları Fonksiyonlarda daha önceden de anlatmış olduğum gibi, main modülünden yazmış olduğunuz yeni fonksiyona bilgi gönderilmesi işlemi yapılabildiği gibi, yazılan yeni fonksiyon modülüne hiç bilgi gönderilmeden de bu modülü kullanabileceğimizi belirtmiştim. 20.10.2009 Dr. Mustafa T. Babagil 10

Fonksiyon kullanımı ile ilgili bilinmesi gereken 2 temel şey ise, Fonksiyona bilgi gönderilip (değişken göndermek), o bilgiyi kullanarak fonksiyonun işlem yapmasını sağlamak; (pass by value!..) Fonksiyona gönderilen değişken üzerinden işlem yapıp, o değişkenin değerinin değişmesini sağlayan yapıdaki fonksiyon tanımlamalarıdır. (pass by reference!..) Bu yapıdaki fonksiyonları kullanırken sonuç olarak ne istediğimize dikkat etmeliyiz ve bu doğrultuda fonksiyonları kullanmalıyız.

Bulunduğumuz seviye itibarı ile şu anda 1. tipteki fonksiyon kullanımı ile ilgili uygulamalar yapacağız. Yeni bir fonksiyon yazıp bilgi girişi yaptırıp, sıralama işlemi yapan programımızı hatırlıyorsunuz. Bununla ilgili fonksiyonlu bir örnek aşağıda verilmiştir. Herkes bu programı yazıp, F7 tuşu ile adım adım denemelidir.

#include <iostream.h> struct ogrencitipi char isim[20]; double ogrno; char cinsiyet; char bolum[20]; float GPA; float CGPA; double telno; char adres[20]; ; const max=2; ogrencitipi ogrenci[max]; // GLOBAL DEGISKEN TANIMI!.. int i,yer; // BU DEGISKENLER TUM PROGRAM ICIN 1 DEFA TANIMLANIR!.. double enbuyuknumara; void bilgigiris(); void enbuyuk_numarali_ogrenciyi_bul(); void enbuyuk_numarali_ogrenciyi_ekrana_yansit();

void bilgigiris() // 5 ogrenci için bilgi girisi yapalim ve bu girilen bilgileri ekrana toplu halde yansitalim. for (i=0;i<max;i++) cout << "isim gir--->"; cin>> ogrenci[i].isim; cout << "ogrenci no gir--->"; cin>> ogrenci[i].ogrno; cout << "cinsiyet gir E/K--->"; cin>> ogrenci[i].cinsiyet; cout << "bolum gir--->"; cin>> ogrenci[i].bolum; cout << "GPA gir--->"; cin>> ogrenci[i].gpa; cout << "CGPA gir--->"; cin>> ogrenci[i].cgpa; cout << "telno gir--->"; cin>> ogrenci[i].telno; cout << "Adres gir---> \n"; cin>> ogrenci[i].adres; void enbuyuk_numarali_ogrenciyi_bul() enbuyuknumara=ogrenci[0].ogrno;i=1; while (i < max ) if (enbuyuknumara <= ogrenci[i].ogrno) enbuyuknumara=ogrenci[i].ogrno; yer=i; i++;

void enbuyuk_numarali_ogrenciyi_ekrana_yansit() cout << "en buyuk ogrenci numarali ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[yer].isim << "\n"; cout << "ogrenci no --->" << ogrenci[yer].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[yer].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[yer].bolum << "\n"; cout << "GPA --->" << ogrenci[yer].gpa << "\n"; cout << "CGPA --->" << ogrenci[yer].cgpa << "\n"; cout << "telno --->" << ogrenci[yer].telno << "\n"; cout << "Adres --->" << ogrenci[yer].adres << "\n"; int main() bilgigiris(); enbuyuk_numarali_ogrenciyi_bul(); enbuyuk_numarali_ogrenciyi_ekrana_yansit(); return 0;

Yukarıda verilmiş olan en temel fonksiyon kullanımı ile ilgili uygulama programını değiştirerek fonksiyon kullanımında bir adım daha ileriye gidelim. Yeni uygulamalarımızda hazırlamış olduğumuz modüller içerisine değişken(ler) gönderip bu değişkenler ile işlem yapılmasını sağlayacağız. Buna benzer fonksiyon kullanımlarını BİLG213 dersimizde de yapmıştık. Şimdi bizim tanımlamış olduğumuz yapıları ( struct ile tanımlanmış) da fonksiyona gönderelim.

Çalışma sorusu olarak VERİLMİŞ OLAN PROGRAMINIZIN KODU AŞAĞIDAKİ SLAYTLARDA DETAYLI BİR ŞEKİLDE AÇIKLANMIŞTIR

#include <iostream.h> struct ogrencitipi char isim[20]; double ogrno; char cinsiyet; char bolum[20]; float GPA; float CGPA; double telno; char adres[20]; ; Yeni tanımladığımız ogrencitipi yapısı const max=3; // GLOBAL DEGISKEN TANIMI!.. // BU DEGISKENLER TUM PROGRAM ICIN 1 DEFA TANIMLANIR!.. ogrencitipi ogrenci[max], gecici; int i,yer,k; double enbuyuknumara,enkucuknumara,numara; char secim; char bulundu; Global değişken tanımları void bilgigiris(); void enbuyuk_numarali_ogrenciyi_bul(); void ogrenciyi_ekrana_yansit(); void enkucuk_numarali_ogrenciyi_bul(); void arama_yap(); void kucuk_buyuk_sirala(); void buyuk_kucuk_sirala(); Fonksiyonların prototiplerinin tanımlandığı yer.

void bilgigiris() // max ogrenci için bilgi girisi yapalim ve bu girilen bilgileri ekrana toplu halde yansitalim. for (i=0;i<max;i++) cout << "isim gir--->"; cin>> ogrenci[i].isim; cout << "ogrenci no gir--->"; cin>> ogrenci[i].ogrno; cout << "cinsiyet gir E/K--->"; cin>> ogrenci[i].cinsiyet; cout << "bolum gir--->"; cin>> ogrenci[i].bolum; cout << "GPA gir--->"; cin>> ogrenci[i].gpa; cout << "CGPA gir--->"; cin>> ogrenci[i].cgpa; cout << "telno gir--->"; cin>> ogrenci[i].telno; cout << "Adres gir---> "; cin>> ogrenci[i].adres;cout <<"\n"; void enbuyuk_numarali_ogrenciyi_bul() enbuyuknumara=ogrenci[0].ogrno;i=1; yer=0; while (i < max ) if (enbuyuknumara <= ogrenci[i].ogrno) enbuyuknumara=ogrenci[i].ogrno; yer=i; i++; Bilgi giriş modülü En büyük numaralı öğrenciyi bulan modül

void enkucuk_numarali_ogrenciyi_bul() enkucuknumara=ogrenci[0].ogrno;i=1; yer=0; while (i < max ) if (enkucuknumara >= ogrenci[i].ogrno) enkucuknumara=ogrenci[i].ogrno; yer=i; i++; En küçük numaralı ogrenciyi bulan modül void arama_yap() cout << " bir numara gir ----> "; cin>> numara; i=0; bulundu='y'; while (i < max ) if (numara == ogrenci[i].ogrno) bulundu='d'; yer=i; i++; Girilen bir numara için arama yapar ve bulunan pozisyonu yer değişkeni ile tutar.

void buyuk_kucuk_sirala() for (i=1;i<max;i++) k=i; while ((ogrenci[k].ogrno>ogrenci[k-1].ogrno) && (k>0)) gecici=ogrenci[k]; ogrenci[k]=ogrenci[k-1]; ogrenci[k-1]=gecici; k--; for(yer=0;yer<max;yer++) cout << "ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[yer].isim << "\n"; cout << "ogrenci no --->" << ogrenci[yer].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[yer].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[yer].bolum << "\n"; cout << "GPA --->" << ogrenci[yer].gpa << "\n"; cout << "CGPA --->" << ogrenci[yer].cgpa << "\n"; cout << "telno --->" << ogrenci[yer].telno << "\n"; cout << "Adres --->" << ogrenci[yer].adres << "\n"; Girilen bilgileri, Ogrenci numarasına göre küçükten büyüğe sıralayan modül

void kucuk_buyuk_sirala() for (i=max-1;i>0;i--) k=i; while ((ogrenci[k].ogrno<ogrenci[k-1].ogrno) && (k<=(max-1))) gecici=ogrenci[k]; ogrenci[k]=ogrenci[k-1]; ogrenci[k-1]=gecici; k++; for(yer=0;yer<max;yer++) cout << "ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[yer].isim << "\n"; cout << "ogrenci no --->" << ogrenci[yer].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[yer].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[yer].bolum << "\n"; cout << "GPA --->" << ogrenci[yer].gpa << "\n"; cout << "CGPA --->" << ogrenci[yer].cgpa << "\n"; cout << "telno --->" << ogrenci[yer].telno << "\n"; cout << "Adres --->" << ogrenci[yer].adres << "\n"; Girilen bilgileri, Ogrenci numarasına göre büyükten küçüğe sıralayan modül.

void ogrenciyi_ekrana_yansit() cout << "ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[yer].isim << "\n"; cout << "ogrenci no --->" << ogrenci[yer].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[yer].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[yer].bolum << "\n"; cout << "GPA --->" << ogrenci[yer].gpa << "\n"; cout << "CGPA --->" << ogrenci[yer].cgpa << "\n"; cout << "telno --->" << ogrenci[yer].telno << "\n"; cout << "Adres --->" << ogrenci[yer].adres << "\n"; Ogrenci yapısındaki herhangi bir girilmiş bilgiyi ekrana yansıtır.

int main() while (secim!= '8') cout << " bilgi girisi icin -------------------> 1"<<"\n"; cout << " en buyuk numarali ogrenci -----------> 2"<<"\n"; cout << " en kucuk numarali ogrenci -----------> 3"<<"\n"; cout << " ekrana yansitmak icin ---------------> 4"<<"\n"; cout << " arama yapmak icin -------------------> 5"<<"\n"; cout << " kucukten buyuge sirala --------------> 6"<<"\n"; cout << " buyukten kucuge sirala --------------> 7"<<"\n"; cout << " cikis icin --------------------------> 8"<<"\n"; cout << " isleminizi seciniz --->"; cin >> secim; Ekrana bir menü yansıtır. Bu menü her seçenek sonrasında ekrana tekrardan gelir. switch (secim) case'1': bilgigiris(); break; case'2': enbuyuk_numarali_ogrenciyi_bul();break; case'3': enkucuk_numarali_ogrenciyi_bul();break; case'4': ogrenciyi_ekrana_yansit();break; case'5': arama_yap();if (bulundu=='y') cout <<" bulunamadi!.."<<"\n";break; case'6': kucuk_buyuk_sirala();break; case'7': buyuk_kucuk_sirala();break; return 0; Menü seçeneğine göre, yapılması gereken modüle yönlendirilir. SWITCH kullanımına dikkat ediniz.

Fonksiyonlara Struct ile tanımlanmış yeni yapıların gönderilmesi Fonksiyonlar içerisine C++ ın kendi değişkenlerini göndermeyi daha önce yapmıştık. Şimdi fonksiyonlar içerisine kendi tanımlamış olduğumuz yapıları gönderip, yazmış olduğumuz yeni modül ile işlem yaptıracağız. Aşağıdaki slaytlarda bilgi girişi için modül yazılmıştır. İnceleyiniz.

#include <iostream.h> struct ogrencitipi char isim[20]; double ogrno; char cinsiyet; char bolum[20]; float GPA; float CGPA; double telno; char adres[20]; ; const max=3; ogrencitipi ogrenciler[max]; // GLOBAL DEGISKEN TANIMI!.. int i; // BU DEGISKENLER TUM PROGRAM ICIN 1 DEFA TANIMLANIR!.. char secim; void bilgigiris(ogrencitipi ogrenci); void ogrenciyi_ekrana_yansit(ogrencitipi ogrenci[]);

void bilgigiris(ogrencitipi ogrenci) int i; for (i=0;i<max;i++) cout << "isim gir--->"; cin>> ogrenci.isim; cout << "ogrenci no gir--->"; cin>> ogrenci.ogrno; cout << "cinsiyet gir E/K--->"; cin>> ogrenci.cinsiyet; cout << "bolum gir--->"; cin>> ogrenci.bolum; cout << "GPA gir--->"; cin>> ogrenci.gpa; cout << "CGPA gir--->"; cin>> ogrenci.cgpa; cout << "telno gir--->"; cin>> ogrenci.telno; cout << "Adres gir---> "; cin>> ogrenci.adres;cout <<"\n"; ogrenciler[i]=ogrenci; void ogrenciyi_ekrana_yansit(ogrencitipi ogrenci[max]) for (i=0;i<max;i++) cout << "ogrenci bilgileri \n"; cout << "isim --->" << ogrenci[i].isim << "\n"; cout << "ogrenci no --->" << ogrenci[i].ogrno << "\n"; cout << "cinsiyet --->" << ogrenci[i].cinsiyet << "\n"; cout << "bolum --->" << ogrenci[i].bolum << "\n"; cout << "GPA --->" << ogrenci[i].gpa << "\n"; cout << "CGPA --->" << ogrenci[i].cgpa << "\n"; cout << "telno --->" << ogrenci[i].telno << "\n"; cout << "Adres --->" << ogrenci[i].adres << "\n";

int main() secim='0'; while (secim!= '3') cout << " bilgi girisi icin -------------------> 1"<<"\n"; cout << " ekrana yansitmak icin ---------------> 2"<<"\n"; cout << " cikis icin --------------------------> 3"<<"\n"; cout << " isleminizi seciniz --->"; cin >> secim; switch (secim) case'1': bilgigiris(ogrenciler[1]); break; case'2': ogrenciyi_ekrana_yansit(ogrenciler);break; return 0;

Dosya opersyonları (File operations) fstream header kütüğünü eklemek gerekir. ifstream bilgi giriş dosyaları tanımlamak için. ofstream bilgi çıkış dosyaları tanımlamak için. fstream hem bilgi giriş-hem bilgi çıkış dosyaları tanımlamak için kullanılır.

<< dosyaya yazmak için kullanılır >> dosyadan okumak için kullanılır eof komutu ise giriş dosyası sonunu kontrol etmek için kullanılan bir hazır fonksiyondur. open komutu ile bazı mode lar kullanılmalı örnek mode lar: ios::in giriş (input) ios::out çıkış (output) open çağrıldığı zaman bu mode lar birlikte kullanılabilir: dfile.open("class.txt", ios::in ios::out);

// 10 sayıyı dosyalar arasında kopyalar // dosyayı açar fstream girisdosyasi("input.txt", ios::in); fstream cikisdosyasi("output.txt", ios::out); int sayi; for (int i = 1; i <= 10; i++) girisdosyasi >> sayi;// dosyalari kullanir cikisdosyasi << sayi; girisdosyasi.close(); // dosyalari kapatir cikisdosyasi.close();

Kabuledilen Dosya Açma Mode ları ifstream: Sadece giriş için dosya açılır dosya yazılabilir mode da değildir open, dosya bulunamazsa başarısız olur ofstream: Sadece çıkış için dosya açılır. Dosya okunabilir değildir. Dosya bulunamazsa, dosya yaratılır. Eğer dosya zaten varsa, dosya içeriği silinir.

Örnek File (Dosya, Kütük) Uygulaması #include<iostream.h> #include<iomanip.h> #include<fstream.h> int main() fstream fl1; İnt num; int i; fl1.open("sayidosya.txt", ios::out); num=2; for (i=0;i<10;i++) fl1 << num*i << endl; fl1.close (); return 0; Yandaki Program kodu, sayidosya.txt adında bir text (düz yazı) kütüğü yaratarak içerisine, 0,1,2,3,4,5,6,7,8 ve 9 sayılarının 2 ile çarpımlarını yazmaktadır. Sonra da bu dosyayı yazma işlemini, dosyayı kapatarak bitiriyor.

Örnek File (Dosya, Kütük) Uygulaması #include<iostream.h> #include<iomanip.h> #include<fstream.h> int main() fstream fl1,fl2; double num; int i; fl1.open("c:\sayidosya.txt", ios::in); fl2.open("c:\kopyala.txt", ios::out); for (i=0;i<10;i++) fl1 >> num; fl2 << num << endl; fl1.close (); return 0; Yandaki Program kodu, sayidosya.txt adında, daha önce yaratılmış ve içerisine bilgi yazılmış bir text (düz yazı) kütüğünü açarak içerisindeki bilgileri tek tek okuyup yeni dosyaya kopyala.txt ye aktarmaktadır. Sonuç olarak ise 2 tane ayni dosya olacaktır.

Asağıdaki kütük bizim tarafımızdan yaratılmış (yazılmış ve kaydedilmiş) bir kütüktür. Kütük ismi ise yine bizim uygun gördüğümüz bir isim ile kaydedilmiştir. Bu kütük istediğiniz bir düz editor yardımı ile hazırlanabileceği gibi, C++ derleyicisinin editörü ile de hazırlanabilir. Hatırlayacağınız gibi, Lab dersimizde birlikte hazırlamış olduğumuz kütüğü C++ editörü ile hazırlamıştık. Kütük adı: isimler.txt 900188 90 35 40 900101 100 100 100 963254 50 60 70 987899 32 45 60

Aşağıdakidaki programı birlikte geliştirmiştik. Gereken açıklamaları birlikte yapalım. #include<iostream.h> #include<iomanip.h> #include<fstream.h> int main() fstream fl1; double num; int vz1, vz2, final; float ortalama; int i; // kütük değişkeni // Kütükteki öğrenci numarasının okutulmasında kullanılacak. // Kütükteki sınav notlarını okutmak için kullanılacak değişkenler // vz1, vz2 ve final değişkenleri yardımı ile hesaplama yapacağımız ortalama değişkeni tanımı. // döngü için kullanılacak olan tam sayı değişkeni. fl1.open("isimler.txt", ios::in); // dosya değişkeninin isimler.txt kütüğü için tanımlanıp, okutulmak için açılması. for (i=0;i<4;i++) fl1 >> num; fl1 >> vz1; fl1 >> vz2; fl1 >> final; // dosya değişkeni ile öğrenci numarasının dosyadan okunması // vize 1 notunun okutulması // vize 2 notunun okutulması // final notunun okutulması ortalama=0.3*vz1+0.3*vz2+0.4*final; // Ortalamanın hesaplanması. cout << num << " " << ortalama << " \n"; // ekrana öğrenci numarasının ve ortalamanın yansıtılması fl1.close (); // dosyanın kapatılması. return 0;

Şimdi de Yeni bir kütüğe hesaplamış olduğumuz ortalamaları, ve öğrenci numaralarını yazdıralım. #include<iostream.h> #include<iomanip.h> #include<fstream.h> int main() fstream fl1,fl2; // kütük değişkenleri double num; // Kütükteki öğrenci numarasının okutulmasında kullanılacak. int vz1, vz2, final; // Kütükteki sınav notlarını okutmak için kullanılacak değişkenler float ortalama; // vz1, vz2 ve final değişkenleri yardımı ile hesaplama yapacağımız ortalama değişkeni tanımı. int i; // döngü için kullanılacak olan tam sayı değişkeni. fl1.open("isimler.txt", ios::in); // dosya değişkeninin isimler.txt kütüğü için tanımlanıp, okutulmak için açılması. fl2.open("ortalama.txt", ios::out); // dosya değişkeninin ortalama.txt kütüğü için tanımlanıp, yazdırılmak için açılması (yaratılması). for (i=0;i<4;i++) fl1 >> num; // dosya değişkeni ile öğrenci numarasının dosyadan okunması fl1 >> vz1; // vize 1 notunun okutulması fl1 >> vz2; // vize 2 notunun okutulması fl1 >> final; // final notunun okutulması ortalama=0.3*vz1+0.3*vz2+0.4*final; // Ortalamanın hesaplanması. fl2 << num << " " << ortalama << endl; // Yeni dosyaya, (ortalama.txt) öğrenci numarası ve ortalamaların yazdırılması!.. cout << num << " " << ortalama << " \n"; // ekrana öğrenci numarasının ve ortalamanın yansıtılması fl1.close (); fl2.close (); return 0; // dosyaların kapatılması.