enum, struct, union ve typedef Yapıları



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

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

ALGORİTMA VE PROGRAMLAMA II

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

Birlik (Union) 1 Birlik (Union), enum, typedef

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Struct VE GÖSTERİCİLER FONKSİYONLARDA STRUCT KULLANIMI Programlama dilleri hafta -

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

Fonksiyonlar (Altprogram)

BİLG Dr. Mustafa T. Babagil 1

Visual Basic 6.0. Anadolu Üniversitesi Endüstri Mühendisliği Bölümü. Değişkenler ve Veri tipleri. Ders Notları

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

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

Değişkenler tanımlanırken onlara ne tür veriler atanabileceği de belirtilir. Temel veri türleri oldukça azdır:

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

Diziler (Arrays) Çok Boyutlu Diziler

YAPILAR (STRUCTURES)

PROGRAMLAMAYA GİRİŞ DERS 2

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

8. İŞARETCİLER (POINTERS)

B02.6 Karar Verme, Eşitlik ve Bağıntı Operatörleri

Bölüm 2 - C ile Programlamaya Giriş

C++ Dersi: Nesne Tabanlı Programlama

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

MAK 1005 Bilgisayar Programlamaya Giriş C DİLİNE GİRİŞ. Prof. Dr. Necmettin Kaya

C Programlama Dilinde Değişkenler

Program Çözümleme. Aşağıdaki örneklerde printf() ve scanf() fonksiyonlarının işlevleri gösterilmektedir. Liste 1.1. Çözümleme:

Temel Giriş/Çıkış Fonksiyonları

C PROGRAMLAMA D İ L İ

C#(Sharp) Programlama Dili

BLM 111 ALGORİTMA VE PROGRAMLAMA I

BLM 111 ALGORİTMA VE PROGRAMLAMA I

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

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

Algoritma Geliştirme ve Veri Yapıları 3 Veri Yapıları. Mustafa Kemal Üniversitesi

Dr. Fatih AY Tel: fatihay@fatihay.net

Genel Programlama II

Aşağıdaki tabloyu inceleyin. Sorgulama işlemlerini bu tabloya göre yapacağız.

Fonksiyonlar -Genel Test- A

C Programlama Dilininin Basit Yapıları

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

Operator Aşırı Yükleme (Operator OverLoading)

C++ Dersi: Nesne Tabanlı Programlama

BASİT C PROGRAMLARI Öğr.Gör.Dr. Mahmut YALÇIN

C PROGRAMLAMA D İ L İ

/ C Bilgisayar Programlama Yıliçi Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

Döngü (Loop) Deyimleri / Veri Belirleyicileri / Matematiksel Fonksiyonlar

Adım Adım C. Dr. Hidayet Takcı

BÖLÜM 1b: C++ PROGRAMLAMANIN YAPISI. C++, hard diskte TC, BIN, INCLUDE, LIB gibi alt dizinlere yüklenir.

Yrd. Doç. Dr. Caner ÖZCAN

Öğr. Gör. Cansu AYVAZ GÜVEN VERİTABANI-II. Değişken Tanımlama Ve Akış Kontrol Deyimleri

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

Giris {\} /\ Suhap SAHIN Onur GÖK

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

IF / ELSE IF / ELSE. Bu deyimler, koşullu işlem yapan deyimlerdir ve daima if deyimi ile başlar, else if veya else ile devam eder.

Pointer Kavramı. Veri Yapıları

Programlamaya Giriş. Program : Belirli bir problemi çözmek için bir bilgisayar dili kullanılarak yazılmış deyimler dizisi.

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

C PROGRAMLAMA DİLİ. Hedefler

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

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

NESNEYE YÖNELİK PROGRAMLAMA

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

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

C++ Dersi: Nesne Tabanlı Programlama

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

BÖLÜM 4: DEĞİŞKENLER, SABİTLER VE OPERATÖRLER

Her veri tipine yetecek ve ancak o kadar anabellek alanı ayrılır. Programcı, ana bellekte ayrılacak adresin büyüklüğünü bilerek değişkenlerini

Ders 6: Karşılaştırma Deyimleri

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

Ders 8: Metotlar. barisgokce.com

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

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Karşılaştırma Komutları (Switch ve? Operatörü)

HSancak Nesne Tabanlı Programlama I Ders Notları

BİL1001 Bilgisayar Bilimlerine Giriş 1

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

ALGORİTMA VE PROGRAMLAMA I

ALGORİTMA VE PROGRAMLAMA I

BİLG Dr. Mustafa T. Babagil 1

Giriş. ENF102 Jeoloji

C PROGRAMLAMA DİLİNE GİRİŞ

ALGORİTMA VE PROGRAMLAMA II

BİLGİSAYAR TEMELLERİ VE PROGRAMLAMAYA GİRİŞ

C PROGRAMLAMA D İ L İ

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-8 Değişken Tipleri ve Temel Giriş/Çıkış İşlemleri

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

Bölüm 4: DDL Veri Tanımlama Dili

NESNE MODELLERİ : SINIFLAR

sayi=3 harf=a reelsayi=8.72 Bellek durumu 5. İşaretç iler (pointers)

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

for döngüsü for (başlangıç değeri; şart; artım) ifade; for (başlangıç değeri; şart; artım) { ifadeler; }

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

Ders 2: Veri Tipleri, Değişkenler ve Sabitler

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Telefon Rehberi Uygulaması

Python Programlama Dili

ESM-361 Mikroişlemciler. 3. Hafta Ders Öğretim Üyesi Dr.Öğr.Üyesi Ayşe DEMİRHAN

Transkript:

enum, struct, union ve typedef Yapıları C, kullanıcının kendi veri tipini tanımlamasına müsaade eder. Bu kısımda böyle veritiplerinin nasıl oluşturulacağı anlatılacaktır. enum Bu tip, değişkenin alabileceği değerlerin belli(sabit) olduğu durumlarda programı daha okunabilir hale getirmek için kullanılır. enum örnekleri Program 1 ve Program 2 de gösterilmiştir. Genel yazım biçimi: enum TipAdı{değer1,değer2,...,değerN}DeğişkenAdı; TipAdı programcı tarafından verilen tip ismidir. DeğişkenAdı ise program içinde kullanılacak olan değişkenin adıdır. Eğer kullanılmazsa program içinde daha sonra enum ile birlikte kullanılır. Örneğin: enum bolumler{programcilik, donanim, muhasebe, motor tanımı ile derleyici programcilik için 0, donanim için 1, muhasebe için 2 ve motor için 3 değerini kabul ederek atamaları buna göre yapar. Değişken adı bildirilirse daha sonra enum kullanmaya gerek kalmaz. enum renkler{kirmizi,mavi,sari} renk; enum gunler{pazartesi,sali,carsamba,persembe,cuma,cumartesi,pazar Şimdi istenirse tanımlanan bu tipler program içinde kullanılabilir. enum bolumler bolum; enum gunler gun; bolum = muhasebe /* bolum = 2 anlaminda */ gun = cuma; /* gun = 4 anlaminda */ renk = kirmizi; /* renk = 0 anlaminda */ Program 1 : 3 sabit renk için enum kullanımı 1: /* enum1.c */ 2: enum renkler{kirmizi,sari,mavi 4: main(){ 5: enum renkler renk; 6: renk = sari; 7: printf("\n%d",renk); 8: } 1

Program 2 : 5 sabit bölüm için enum kullanımı 1: /* enum2.c */ 2: enum bolumler{ programcilik, donanim, muhasebe, motor, buro 4: }bolum; 5: 6: main(){ 7: bolum = donanim; 8: printf("\n%d",bolum); 9: bolum +=2; /* bolum=motor */ 10: printf("\n%d",bolum); 11: } struct C dilinde standart tipler kullanılarak kendi tipinizi üretebilirsiniz. (struct örnekleri Program 3, Program 4 ve Program 5 te gösterilmiştir). Bu yapının kullanımı: struct TipAdı{ tip deg_ismi; tip deg_ismi;... enum ile sabit bildirimi yapılırken struct ile değişken bildirimi yapılır. Bu yapının faydası, örneğin bir öğrenciye ait bilgileri bir çatı altında toplamak için: struct ogrenci{ short sinif; Bu tipte bir değişken tanımlama: struct ogrenci ogr1,ogr2; şeklinde olmalıdır. ogr1 değişkeni ile tanımlanan 1. öğrencinin numarasına bir değer atama işlemi: ogr1.no = 2012597; veya ogr1->no = 2012597; şeklinde yapılır. 2

Program 3 : Bir öğrenciye ait bilgilerin tek bir çatı altında toplanması 1: /* struct1.c */ 4: struct ogrenci{ 5: 6: 7: int sinif; 8: } 9: 10: main(){ 11: struct ogrenci ogr; 12: printf("ogrenci nosu :"); 1 scanf("%ld",&ogr.no); 14: if( ogr.no == 2248 ) 15: { 16: ogr.no = 2248; 17: strcpy(ogr.ad,"ahmet"); 18: strcpy(ogr.soyad,"bingul"); 19: ogr.sinif = 1; 20: } 21: printf("\nno : %ld",ogr.no); 22: printf("\nadı : %s ",ogr.ad); 2 printf("\nsoyadı: %s ",ogr.soyad); 24: printf("\nsınıfı: %d ",ogr.sinif); 25: } Program 4 : Bir öğrenciye ait bilgilerin tek bir çatı altında toplanması /* struct2.c */ #include <stdio.h> struct ogrenci{ int sinif; }ogr; main(){ printf("ogrenci nosu :"); scanf("%ld",&ogr->no); if( ogr.no == 2248 ) { ogr.no = 2248; strcpy(ogr.ad,"ahmet"); strcpy(ogr.soyad,"bingul"); ogr.sinif = 1; } printf("\nno : %ld",ogr.no); printf("\nadı : %s ",ogr.ad); printf("\nsoyadı: %s ",ogr.soyad); printf("\nsınıfı: %d ",ogr.sinif); } 3

Program 5 : bir topun x-y düzlemindeki zamana bağlı hareketi 1: /* struct3.c */ #include <math.h> 4: 5: struct koordinat{ 6: float x,y; 7: }top; 8: 9: main(){ 10: int i; 11: float t; 12: 1 for(t=0.0;t<10.0;t+=0.1){ 14: top->x = 10-9*cos(t); 15: top->y = 5 + 2*sin(t); 16: printf("%f\t%f",top->x,top->y); 17: } 18: } tpyedef struct ile oluşturulan yapıda typedef deyimi kullanılırsa, bu yapıdan değişken tanımlamak için tekrar struct deyiminin kullanılmasına gerek kalmaz. typedef struct kayit{ short sinif; }ogr1,ogr2; bu kullanımın diğerlerinden farkı yoktur. Bu deyimin başka kullanımı da vardır. C dilinde program kodları bu deyimle tamamen türkçeleştirilebilir. Örneğin: typedef int tamsayi; şeklinde kullanılırsa programda daha sonra int tipinde bir değişken tanımlarken şu biçimde kullanılmasına izin verilir. union tamsayi x,y; /* int x,y anlaminda */ Bir programda veya fonksiyonda değişkenlerin aynı bellek alanını paylaşması için ortaklık bildirimi union deyimi ile yapılır. Bu da belleğin daha verimli kullanılmasına imkan verir. Bu tipte bildirim yapılırken struct yerine union yazılır. union paylas{ float f; int i; char kr; 4

Dikkat: Yukarıdaki bildirim yapıldığında, bellekte bir yer ayrılmaz. Değişken bildirimi: union paylas bir,iki; şeklinde yapılır. Üyelere erişmek aşağıdaki gibi olur: bir.kr= 'A'; iki.f = 3.14; bir.i = 2000; Program 6 : union x ve y nin aynı bellek alanını işgal ettiğinin kanıtı 1: /* union1 */ 4: union paylas{ 5: int x; 6: int y; 7: }z; 8: 9: main() 10: { 11: int *X,*Y; 12: 1 z.x = 10; 14: X = &z.x; 15: printf("\ntamsayı(x) : %d - bellek adresi %X",z.x,X); 16: 17: z.y = 20; 18: Y = &z.y; 20: printf("\ntamsayı(y) : %d - bellek adresi %X",z.y,Y); 21: } Tamsayı(x) : 10 - bellek adresi DF23 Tamsayı(y) : 20 - bellek adresi DF23 5