29
Лекц-8 Багш: Д.Саулегүл

Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

Лекц-8

Багш: Д.Саулегүл

Page 2: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Одоог хүртэл бид дандаа энгийнөгөгдлүүдтэй ажиллаж ирсэн билээ.Энгийн өгөгдөл гэдэг нь нэр бүхий ганцөгөгдөл юм. Ө.х. нэг нэрэнд нэг л өгөгдөлхаргалзана гэсэн үг.

• Энгийн өгөгдөл нь өгөгдлийн үндсэнтөрлүүдийн (char, unsigned char, short,unsigned short, int, unsigned int, long int,unsigned long, float, double, long doubleг.м.) аль нэгт хамаарна.

Page 3: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

•Массив гэж юу бэ?

Page 4: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массив (array) гэдэг нь нэгэн ижил

төрлийн, олон тооны энгийн өгөгдлийн

нэгдэл юм. Массив нь нэртэй (name of

array) байна. Ө.х. массивын хувьд, нэг

нэрэнд нэгээс олон адил төрлийн

энгийн өгөгдөл харгалздаг ажээ. Энэ

утгаараа нийлмэл өгөгдөл болно.

Page 5: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массивын бүрдэлд орогч тухайн нэг өгөгдлийг массивын элемент гэнэ. Элементүүд бүгд дугаарлагдсан байна. Элементийн дугаарыг индекс (index) гэнэ. Индекс нь 0-ээс эхлэн тоологдоно.

Page 6: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массив нь ямар ач

холбогдолтой вэ?

Page 7: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Их хэмжээний мэдээлэл, төрөл бүрийн статистик өгөгдлийг боловсруулах програмд массив ашиглах нь тун тохиромжтой байдаг.

• Массив нь математикийн нэгэн чухал ойлголт болох матрицыг програмчлалын хэлэнд илэрхийлдгээрээ онцгой ач холбогдолтой юм.

Page 8: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• бүхэл төрлийн массив (элементийн төрөл нь char, unsigned char, short, unsigned short, int, unsigned int, long int, unsigned long г.м.-ийн аль нэг)

• бодит төрлийн массив (элементийн төрөл нь float, double, long double г.м.-ийн аль нэг)

гэсэн төрлүүд байх нь ээ.

Page 9: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массивын хэмжээс гэдэг нь арай өөр ойлголт. Логикийн хувьд массив нь шулуун, эсвэл “тэгш өнцөгт”, эсвэл “параллелипипед” гэх мэт геометрийн ямар төсөөллийг бүрдүүлж буйгаас нь хамааруулаад нэг хэмжээст (1D - one dimensional), хоёр хэмжээст (2D - two dimensional), гурван хэмжээст (3D - three dimensional) массив гэх мэтээр нэрлэдэг. Гурваас олон хэмжээстэй (multidimensional) ч байж болно. Хоёр хэмжээст массивыгмассивын массив (array of array), гурван хэмжээстийг массивын массивын массив (array of array of array) гэх мэтчилэн үгээр илэрхийлж болно.

Page 10: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массивийг зарлахын тулд хувьсагчийн нэрний ард []-хос хаалт бичиж өгнө. Үүнд тухайн массивын элементийн тоог бичиж өгнө.

• Өөрөөр хэлбэл массивын элемент бүр тодорхой дугаартай байна. Нэг хэмжээст буюу шугаман массивыг дараах байдлаар зарлаж өгнө.

• Бичигдэх хэлбэр: <төрөл> <нэр> [<индекс>] int a[5];

int b[100];

Page 11: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Нэг хэмжээст массив нь санах ойд дараалсан байрлалтай байна.

• int a[5] массив санах ойд байгаа нь

• a[0], a[1], a[2]…

• if sizeof үйлдлийг ашиглан массивын хэмжээг санах ой болгож болно.

Page 12: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массивийн элементүүдийн анхны утгыг {} хаалтанд бичдэг.

• int var[5] = {10,40,70,90,120};

• Ингэж зарласан нь массивийн элементүүдэд дараах байдлаар утга олгосонтой ижил юм.

• Си-д 0-ээс эхлэн дугаарладаг.

• int a[5] = {1,2,3,4,5}; //Эхний 5 элементэд утга олгох

• int b[20] = {0,1,2…9};//Эхний 10 элементэд утга олгож байна. Бусад элементүүд нь 0 утгатай байна

Page 13: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массивийг зарлахдаа хос хаалтанд үргэлж элементийн тоог бичих ёстой. Харин массивын анхны утга олгож зарлахдаа л тоон бичихгүй байж болно.

• int ages[5] = {5,27,40,65,92}; //Зөв

• Хэрэв массивийн бүх элементийг 0-ээр дүүргэхийг хүсвэл дараах бичлэгийг ашиглана.

• float a[100] = {0,0};//Бүх элементийг олох

Page 14: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• a[1]=20, a[6]=a[2]; a[0]=I, a[1]=b[i];

• x=утга [3] a[i]; printf(“3-р элемент:%3”, d[3]);

• массивын индекс бол бүхэл тоон төрлийн утга буцаадаг илэрхийлэл байдаг.

Page 15: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массивийн элементийг хэрэглэх хувьсагч ашиглах хэлбэртэй ижил учир элементүүдийг гараас уншихдаа дараах байдлаар уншина.

• scanf(“%d”, &a[1]);

Page 16: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Массивийн элементийг хэвлэхдээ дараахбайдлаар хэвлэнэ.

• printf(“%d”,a[0]);

• printf(“%d”,a[1]);

• Массивийн бүх элементүүдийг хэвлэхдээ циклашиглах нь тохиромжтой.

• int a[10];

• for(i=0;i<10,i++)

• printf(“a[%d]=%d\n”,I,a[i]);

Page 17: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• Тэгш өнцөгт массив дараах хэлбэрээр зарлана.

”төрөл” ” массив нэр” [элементийн тоо1] [элементийн тоо2]

- ”төрөл”- массивын элементүүдийн тоон төрөл

- ” массив нэр”- массивыг праграмд төлөөлөх иденфикатор

- [элементийн тоо1]- массивын мөрийн элементийн тоог заана.

- [элементийн тоо2]- массивын баганын элементийн тоог заана.

int a[100][100];

float f[5][6];

char c[12][3];

Page 18: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

double z [4] [6] = { {1}, {2}, {3}, {4} };

Page 19: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• int x [5] [4] = { {1}, {2, 3}, {4, 5, 6}, {7, 8, 9, 10} };

• Зургаар дүрсэл

Page 20: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн
Page 21: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

• const unsigned char a [5] = { 23, 45, 8, 128, 2 };

• const float values [6] = { 0.5, 2.1, 9.81, 4.5, 560.4, 7.0 };

• const char letters [7] = {‘p’, ‘h’, ‘y’, ‘s’, ‘i’, ‘c’, ‘s’ };

2D тогтмол массив зарлаж буй жишээ:

• const unsigned char z [3] [5] = { { 11, 12, 13, 14, 15 }, { 21, 22, 23, 24, 25 }, {31, 32, 33, 34, 35 } };

Page 22: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

Циклийн тоолуур 0-9 утгыг авах бөгөөд scanfфункц нь a[0]…a[9] элементийн утгыг гараас уншина.

int a[10],i;for(i=0; i<10; i++){printf(“a[%d]=”,i);scanf(“%d”, &a[i]);}

Page 23: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

#include "stdio.h"

#include "stdlib.h"

int i,n,s;

int a[100];

int main()

{

scanf("%d",&n);

for(i=0;i

{

printf("a[%d]=",i);

scanf("%d",&a[i]);

}

for(i=0;i

system("pause");

return 0;

}

Page 24: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн
Page 25: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

Input – Enter 5 elements in the array –23 45 32 25 45

Output – Elements in the array are –Element stored at a[0]-23Element stored at a[0]-45Element stored at a[0]-32Element stored at a[0]-25Element stored at a[0]-45

Page 26: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн

#include <stdio.h> int main(int argc, char **argv) { int i, j, k; int arr[5][3]; int *arr2 = (int*)arr; for (k=0; k<15; k++) { arr2[k] = k; printf("arr[%d] = %2d\n", k, arr2[k]); } for (i=0; i<5; i++) {for (j=0; j< 3; j++) { printf("arr2[%d][%d] = %2d\n", i, j ,arr[i][j]); } } }

Page 27: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн
Page 28: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн
Page 29: Лекц-8soyolerdem.edu.mn/online/wp-content/uploads/2017/03/8...2017/03/08  · Лекц-8 Багш: Д.Саулегүл •Одоог хүртэл бид дандаа энгийн