1 Structure Knowledge Understand the concept of structure data types Skills Able to write application program using structure
2 Introduction Here is the list of students’ details: – Nama – nombor kad pengenalan – nombor matrik – tahun kemasukan
3 C was provided with an alternative approaches to combined students’ detail. C used structure char nama[15], noKP[15], matrik[7]; int tahunMasuk; It could be represented by :
4 Structure Initialization This C’s features specifically used for combining various types of data Structure can be initialized by struct. Here is the general structure of struct: struct structure_name { takrifan_unsur_1 takrifan_unsur_2... takrifan_unsur_n };
5 Example of Structure Initialization Example: struct pelajar { char nama[15], noKP[15], matrik[7]; int tahunMasuk; }; Example: struct tarikh { int hari, bulan, tahun; };
6 Initialize structure variables Structure variables can be used for allocating data. Example: struct pelajar p1; nama noKP tahunMasuk matrik p1 struct pelajar { char nama[15], noKP[15], matrik[7]; int tahunMasuk; };
7 Initialize structure variables Structure variables can also be declared at the end of struct declaration. Example: struct tarikh { int hari, bulan, tahun; } tarikhLahir, tarikhMasuk; hari bulan tahun tarikhLahir hari bulan tahun tarikhMasuk
8 Initialize structure variables Example: struct tarikh tarikhLahir = {31, 10, 1966}; 31 hari bulan tahun tarikhLahir
9 Initialize structure variables Example : struct tarikh tarikhLahir = {31, 10, 1966}; 31 hari bulan tahun tarikhLahir struct tarikh { int hari, bulan, tahun; };
10 Initialize structure variables Example : struct tarikh tarikhLahir = {31, 10, 1966}; 31 hari bulan tahun tarikhLahir struct tarikh { int hari, bulan, tahun; };
11 Declaration of structure variables Example : struct tarikh tarikhLahir = {31, 10, 1966}; 31 hari bulan tahun tarikhLahir struct tarikh { int hari, bulan, tahun; };
12 Declaration of structure variables Example: struct pelajar ketua = {"A Bin B", " ", "A34444", 1990}; 'A'' 'B''i''n'' 'B''\0' '6''5''1''2''3''0''-''0''1''-''5''2''9''8''\0' 'A''3''4' '\0' 1990 nama noKP tahunMasuk matrik ketua struct pelajar { char nama[15], noKP[15], matrik[7]; int tahunMasuk; };
13 Accessing structures Structure item can be accessed by pointer operator and item name. Example: struct tarikh hariIni; hariIni.hari = 8; hariIni.bulan = 9; hariIni.tahun = 2003; ??? hari bulan tahun hariIni ???
14 Accessing structures Structure item can be accessed by pointer operator and item name. Example: struct tarikh hariIni; hariIni.hari = 8; hariIni.bulan = 9; hariIni.tahun = 2003; 8 hari bulan tahun hariIni ???
15 Accessing structures Structure item can be accessed by pointer operator and item name. Example : struct tarikh hariIni; hariIni.hari = 8; hariIni.bulan = 9; hariIni.tahun = 2003; 8 hari bulan tahun hariIni 9 ???
16 Accessing structures Structure item can be accessed by pointer operator and item name. Example : struct tarikh hariIni; hariIni.hari = 8; hariIni.bulan = 9; hariIni.tahun = 2003; 8 hari bulan tahun hariIni
17 Accessing structures Example: struct pelajar p1; strcpy(p1.nama, "C Bin D"); strcpy(p1.noKP, " "); strcpy(p1.matrik, "A11122"); p1.tahunMasuk = 1990; ??????????????? ??????????????? ??????? ??? nama noKP tahunMasuk matrik p1
18 Accessing structures Example struct pelajar p1; strcpy(p1.nama, "C Bin D"); strcpy(p1.noKP, " "); strcpy(p1.matrik, "A11122"); p1.tahunMasuk = 1990; 'C'' 'B''i''n'' 'D''\0' nama noKP tahunMasuk matrik p1 ??????????????? ??????? ???
19 Accessing structures Example struct pelajar p1; strcpy(p1.nama, "C Bin D"); strcpy(p1.noKP, " "); strcpy(p1.matrik, "A11122"); p1.tahunMasuk = 1990; 'C'' 'B''i''n'' 'D''\0' '6' '1' '2' '-''0''2''-''5' '4''\0' nama noKP tahunMasuk matrik p1 ??????? ???
20 Accessing structures Example struct pelajar p1; strcpy(p1.nama, "C Bin D"); strcpy(p1.noKP, " "); strcpy(p1.matrik, "A11122"); p1.tahunMasuk = 1990; 'C'' 'B''i''n'' 'D''\0' '6' '1' '2' '-''0''2''-''5' '4''\0' nama noKP tahunMasuk matrik p1 ??? 'A''1' '2' '\0'
21 Accessing structures Example struct pelajar p1; strcpy(p1.nama, "C Bin D"); strcpy(p1.noKP, " "); strcpy(p1.matrik, "A11122"); p1.tahunMasuk = 1990; 'C'' 'B''i''n'' 'D''\0' '6' '1' '2' '-''0''2''-''5' '4''\0' nama noKP tahunMasuk matrik p 'A''1' '2' '\0'
22 Accessing structures Example struct tarikh tarikhLahir; printf("Masukkan tarikh lahir: "); scanf("%d%d%d", &(tarikhLahir.hari), &(tarikhLahir.bulan), &(tarikhLahir.tahun)); printf("Tarikh lahir anda: %d/%d/%d\n", tarikhLahir.hari, tarikhLahir.bulan, tarikhLahir.tahun); ??? hari bulan tahun tarikhLahir ???
23 Accessing structures Example: struct tarikh tarikhLahir; printf("Masukkan tarikh lahir: "); scanf("%d%d%d", &(tarikhLahir.hari), &(tarikhLahir.bulan), &(tarikhLahir.tahun)); printf("Tarikh lahir anda: %d/%d/%d\n", tarikhLahir.hari, tarikhLahir.bulan, tarikhLahir.tahun); ??? hari bulan tahun tarikhLahir ??? Masukkan tarikh lahir: _
24 Accessing structures Example struct tarikh tarikhLahir; printf("Masukkan tarikh lahir: "); scanf("%d%d%d", &(tarikhLahir.hari), &(tarikhLahir.bulan), &(tarikhLahir.tahun)); printf("Tarikh lahir anda: %d/%d/%d\n", tarikhLahir.hari, tarikhLahir.bulan, tarikhLahir.tahun); 19 hari bulan tahun tarikhLahir Masukkan tarikh lahir: _
25 Accessing structures Example struct tarikh tarikhLahir; printf("Masukkan tarikh lahir: "); scanf("%d%d%d", &(tarikhLahir.hari), &(tarikhLahir.bulan), &(tarikhLahir.tahun)); printf("Tarikh lahir anda: %d/%d/%d\n", tarikhLahir.hari, tarikhLahir.bulan, tarikhLahir.tahun); 19 hari bulan tahun tarikhLahir Masukkan tarikh lahir: Tarikh lahir anda: 19/4/2001 _
26 Accessing structures Example struct pelajar p1; printf("Nama, no KP, matrik, tahun?\n"); gets(p1.nama); gets(p1.noKP); gets(p1.matrik); scanf("%d", &(p1.tahun)); ??????????????? ??????????????? ??????? ??? nama noKP tahunMasuk matrik p1
27 Accessing structures Example struct pelajar p1; printf("Nama, no KP, matrik, tahun?\n"); gets(p1.nama); gets(p1.noKP); gets(p1.matrik); scanf("%d", &(p1.tahun)); ??????????????? ??????????????? ??????? ??? nama noKP tahunMasuk matrik p1 Nama, no KP, matrik, tahun? _
28 Accessing structures Example struct pelajar p1; printf("Nama, no KP, matrik, tahun?\n"); gets(p1.nama); gets(p1.noKP); gets(p1.matrik); scanf("%d", &(p1.tahun)); ??????????????? ??????? ??? nama noKP tahunMasuk matrik p1 Nama, no KP, matrik, tahun? E Bin F _ 'E'' 'B''i''n'' 'F''\0'
29 Accessing structures Example struct pelajar p1; printf("Nama, no KP, matrik, tahun?\n"); gets(p1.nama); gets(p1.noKP); gets(p1.matrik); scanf("%d", &(p1.tahun)); ??????? ??? nama noKP tahunMasuk matrik p1 Nama, no KP, matrik, tahun? E Bin F _ 'E'' 'B''i''n'' 'F''\0' '7''1' '0''1''0''-''0''3''-''5''1''0' '\0'
30 Accessing structures Example struct pelajar p1; printf("Nama, no KP, matrik, tahun?\n"); gets(p1.nama); gets(p1.noKP); gets(p1.matrik); scanf("%d", &(p1.tahun)); ??? nama noKP tahunMasuk matrik p1 Nama, no KP, matrik, tahun? E Bin F A23324 _ 'E'' 'B''i''n'' 'F''\0' '7''1' '0''1''0''-''0''3''-''5''1''0' '\0' 'A''2''3' '2''4''\0'
31 Accessing structures Example struct pelajar p1; printf("Nama, no KP, matrik, tahun?\n"); gets(p1.nama); gets(p1.noKP); gets(p1.matrik); scanf("%d", &(p1.tahun)); 1997 nama noKP tahunMasuk matrik p1 E Bin F A _ 'E'' 'B''i''n'' 'F''\0' '7''1' '0''1''0''-''0''3''-''5''1''0' '\0' 'A''2''3' '2''4''\0'
32 Accessing structures Structure can be assigned to another structure Example: struct tarikh hariIni, salinan; scanf("%d%d%d", &(hariIni.hari), &(hariIni.bulan), &(hariIni.tahun)); salinan = hariIni; ??? hari bulan tahun salinan ??? hari bulan tahun hariIni ???
33 Accessing structures Structure can be assigned to another structure Example: struct tarikh hariIni, salinan; scanf("%d%d%d", &(hariIni.hari), &(hariIni.bulan), &(hariIni.tahun)); salinan = hariIni; ??? hari bulan tahun salinan ??? 8 hari bulan tahun hariIni _
34 Accessing structures Structure can be assigned to another structure Example: struct tarikh hariIni, salinan; scanf("%d%d%d", &(hariIni.hari), &(hariIni.bulan), &(hariIni.tahun)); salinan = hariIni; 8 hari bulan tahun salinan hari bulan tahun hariIni _