47
Хувьсагч гэж юу вэ? Компьютерийн санах ойн нэрлэгдсэн муж тэр нь янз бүрийн төрлийн утгыг агуулна(бүхэл, бодит гэх мэт.) Програм ажиллах үеийн өгөгдлийг хадгална Програмын хаана ч өгөгдлийг хадгалахдаа ашиглаж болно Үнэндээ өгөгдлийг боловсруулахад тусална

C lects (1)

  • Upload
    mongoo

  • View
    1.408

  • Download
    10

Embed Size (px)

Citation preview

Page 1: C lects (1)

Хувьсагч гэж юу вэ?

Компьютерийн санах ойн нэрлэгдсэн муж тэр нь янз бүрийн төрлийн утгыг агуулна(бүхэл, бодит гэх мэт.)

Програм ажиллах үеийн өгөгдлийг хадгална

Програмын хаана ч өгөгдлийг хадгалахдаа ашиглаж болно

Үнэндээ өгөгдлийг боловсруулахад тусална

Page 2: C lects (1)

Санах ой дахь хувьсагч

5

int my_int = 5;/*identifier*/

double my_double = 3.5;

3.5

my_int

my_double

Page 3: C lects (1)

Санах ой дахь хувьсагч

5

my_int-р түүний утгыг уншихаар дуудаж болно &variable_name, гэвэл тухайн хувьсагчийн хаяг

болно

3.5

my_int

my_double

Page 4: C lects (1)

/* cm-г инчэд хөрвүүлэх програм */#include <stdio.h>

int main(){

double cm, inches;

printf("Please enter length in centimeters: ");scanf("%lf", &cm);

inches = cm / 2.54;printf("This is equal to %g inches\n", inches);

return 0;}

Example

Page 5: C lects (1)

Жишээ: хувьсагчийн зарлалт

int i; char c; float f1, f2; float f1=7.0, f2 = 5.2; unsigned int ui = 0;

Page 6: C lects (1)

Хувьсагчид нэр оноох

Латин үсэг, цифр, доогуур зураас i CSE_5a a_very_long_name_that_isnt_very_useful fahrenheit

Эхнийх цифр байж болохгүй 5a_CSE энэ нь буруу!

Том жижиг үсэг ялгаатай CSE_5a энэ нь cse_5a үүнээс ялгаатай

Page 7: C lects (1)

C –н төрөл

char – нэг байт тэмдэгт. int – бүхэл тоо – 2 байт. float – дан нарийвчлалтай бодит тоо – 4

байт. double – давхар нарийвлчлалтай бодит

тоо – 8 байт.

char

int

float

double

Page 8: C lects (1)

C төрөл

short int (эсвэл short) – бүхэл тоо, 2 байт. long int (эсвэл long) – бүхэл тоо, 4 эсвэл

8 байт. long double – давхар нарийвлчлалтай

бодит тоо –8 байт. unsigned ба signedint, char, long, short өмнө хэрэглэнэ. Тухайн

хувьсагчийг илүү тодорхой болгож өгнө. Эерэг юмуу, эерэг ч сөрөг ч юмуу гэдгийг тодруулж өгдөг.

Page 9: C lects (1)

Жишээ

/* см-г инчэд хөрвүүлэх */#include <stdio.h>

int main(){

double cm, inches;

printf("Please enter length in centimeters: ");scanf("%lf", &cm);

inches = cm / 2.54;printf("This is equal to %g inches\n", inches);

return 0;}

Page 10: C lects (1)

printf ба scanf

printf – дэлгэцэнд хэвлэгч. Хувьсагчид хандаж түүний утгыг

хэвлэж чадна. scanf – стандарт оролтоос утгыг авч

хувьсагчид онооно.

Page 11: C lects (1)

printf хувьсагчийн утгыг хэвлэж чадна

printf("z=%d\n", z); %d энэ тусгай тэмдэг ба

хэвлэгдэхгүй! printf хэвлэхээр бичсэн

мөрийн арын integer хувьсагчийн утгыг энд хэвлэнэ гэдгийг хэлж байна.

Page 12: C lects (1)

scanf хэрэглэгчийн өгөгдлийг авна

scanf("%lf", &cm);

Хэрэглэгч давхар бодитыг оруулахыг хүлээнэ, тэгээд авсан утгаа ‘cm’-д онооно.

Хэрэв хоёр утга авахаар бол, –scanf("%lf%lf", &var1, &var2);

Page 13: C lects (1)

prinft/scanf код хувиргагчид

%<хувиргах код> printf/scanf –н тэмдэгт мөрөнд харгалзах төрлийн хувьсагчруу код хувиргана.

%c – тэмдэгт %5c эсвэл %-5c %d – бүхэл, %u – эерэг бүхэл. %f – бодит %5.2c эсвэл %-5.3c %e – арвын зэрэгт ашиглан дүрслэх %g –%f ба %e –г хослуулах %lf – давхар нарийвчлал %% - ‘%’ тэмдэгт хэвлэх (printf) /* printf –н тусламжаар харж болно hevjhev.cpp*/

Page 14: C lects (1)

Дахиад өмнөх жишээ

/* см-г инчэд хөрвүүлэх програм */#include <stdio.h>

int main(){

double cm, inches;

printf("Please enter length in centimeters: ");scanf("%lf",&cm);

inches = cm / 2.54;printf("This is equal to %g inches\n", inches);

return 0;}

Page 15: C lects (1)

Дасгал

Дараах програм бич- Долларын ханш өгөгднө Бүхэл тооны доллар танд байгаа

гаралт - Харгалзах мөнгөний хэмжээг гаргах

Page 16: C lects (1)

Бодолт

#include <stdio.h>int main(){

double turgeg, xchange;int dollars;

printf("Enter the US$-bank exchange rate: ");scanf("%lf", &xchange);printf("Enter the amount of dollars: ");scanf("%d", &dollars);shekels = dollars * xchange;printf("%d dollars = %g tugreg\n", dollars, tugreg);

return 0;}

Page 17: C lects (1)

Char нь мөн тоо!

char хувьсагч нь текст тэмдэгтийг хадгалахад хэрэглэгдэнэ: Үсэг. цифр. Гарны тэмдэгт. Үл хэвлэгдэх тэмдэгт. эсвэл (0 аас 255 эсвэл -128 аас 127)

хүртлэх бага тоо.

Page 18: C lects (1)

Тэмдэг үү тоо юу?

Тэмдэг бүр тоон кодтой байна. Янз бүрийн код байна:

ASCII (American Standard Code for Information Interchange) – өргөн хэрэглэгддэг.

ASCII кодыг бид хэрэглэнэ

Page 19: C lects (1)

ASCII хүснэгт

Page 20: C lects (1)

char ба number жишээ

#include <stdio.h>int main(){

char i = 'b';printf("i as a character is %c\n", i);printf("i as an integer is %d\n", i);printf("The character after %c is %c\n",

i, i + 1);

return 0;}

Page 21: C lects (1)

Дахин жишээ

/* abc дэхь үсгийн байрлал ол */#include <stdio.h>

int main(){

char letter;

printf("Please enter a lowercase letter\n");scanf("%c", &letter);printf("The position of this letter in the abc is %d\n",

letter - 'a' + 1);

return 0;}

Page 22: C lects (1)

Дасгал

Жижиг үсгийг харгалзах том үсгэ болгох програм бич

(Жн., ‘g’ --- ‘G’)

Page 23: C lects (1)

Бодолт

/* жижиг үсгийг том үсэг болгох */#include <stdio.h>

int main(){

char letter;

printf("Please enter a lowercase letter\n");scanf("%c", &letter);printf("This letter in uppercase is %c\n", letter - 'a' + 'A');

return 0;}

Page 24: C lects (1)

Арифметик үйлдэл

Үйлдэлүүд нь програмд чухал үүрэгтэй. Үйлдэлд оролцогчийг операнд гэдэг. Нийтлэг үйлдэл:

Утга оноох = нэмэх + хасах - үржих * хуваах / Үлдэгдэлтэй хуваах %

Page 25: C lects (1)

Жишээ

Цифр салгагч

digits.c

Page 26: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

1350

num

sum5198

Дурын утга байна/хог/

Page 27: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

1350

num

sum5198

Page 28: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

1350

num

sum0

Page 29: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

1350

num

sum0

Page 30: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

369

num

sum0

Page 31: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

369

num

sum0

Page 32: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

369

num

sum9

Page 33: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

369

num

sum9

Page 34: C lects (1)

int main(){

int sum, num;

sum = 0;printf("Enter 3-digits number\n");scanf("%d", &num);

/*extract the first digit*/sum = sum + num % 10;num = num / 10;

Хэрхэн ажилладаг вэ?

36

num

sum9

Page 35: C lects (1)

Хэрхэн ажилладаг вэ?

/*extract the second digit*/sum = sum + num % 10;num = num / 10;

/*extract the third digit*/sum = sum + num % 10;

printf("The digits sum is %d\n", sum);

return 0;}

36

num

sum9

Page 36: C lects (1)

Хэрхэн ажилладаг вэ?

/*extract the second digit*/sum = sum + num % 10;num = num / 10;

/*extract the third digit*/sum = sum + num % 10;

printf("The digits sum is %d\n", sum);

return 0;}

36

num

sum15

Page 37: C lects (1)

Хэрхэн ажилладаг вэ?

/*extract the second digit*/sum = sum + num % 10;num = num / 10;

/*extract the third digit*/sum = sum + num % 10;

printf("The digits sum is %d\n", sum);

return 0;}

36

num

sum15

Page 38: C lects (1)

Хэрхэн ажилладаг вэ?

/*extract the second digit*/sum = sum + num % 10;num = num / 10;

/*extract the third digit*/sum = sum + num % 10;

printf("The digits sum is %d\n", sum);

return 0;}

3

num

sum15

Page 39: C lects (1)

Хэрхэн ажилладаг вэ?

/*extract the second digit*/sum = sum + num % 10;num = num / 10;

/*extract the third digit*/sum = sum + num % 10;

printf("The digits sum is %d\n", sum);

return 0;}

3

num

sum15

Page 40: C lects (1)

Хэрхэн ажилладаг вэ?

/*extract the second digit*/sum = sum + num % 10;num = num / 10;

/*extract the third digit*/sum = sum + num % 10;

printf("The digits sum is %d\n", sum);

return 0;}

3

num

sum18

Page 41: C lects (1)

Ялгаатай төрлүүдийн хооронд үйлдэл хийвэл дараах байдлаар төрөл хувирна (int → float → double).

Ижил бол тэр төрөлдөө л байнаИжил бол тэр төрөлдөө л байна..

Ялгаатай төрлүүдийн хувьд

Page 42: C lects (1)

Жишээ - 3 + 4 = 7 3.0 + 4 = 7.0 3 / 4 = 0 !!! 3.0 / 4 = 0.75

Ялгаатай төрлүүдийн хувьд

Page 43: C lects (1)

Зарим үед шууд өөр төрөл болгох шаардлага гарна

Үүнийг хувьсагч cast хийж шинэ төрөл гаргах гэдэг.

Хэлбэр нь: (type) Жишээ нь, (float)i гэж i -г float болгож байна.

Ялгаатай төрлүүдийн хувьд

Page 44: C lects (1)

#include <stdio.h>

int main(){

int a=1, b=2;

printf("%d / %d = %d\n", a, b, a/b);printf("%d / %d = %g\n", a, b, (float)a / b);

}

Casting хийх

Page 45: C lects (1)

Энд юу буруу байна вэ?

#include <stdio.h>

int main(){

int a = 10; int b = 20;

printf("The average of %d and %d is %d\n", a, b, (a + b) * (1 / 2));

return 0;}

Page 46: C lects (1)

Энэ ажиллах уу?

#include <stdio.h>

int main(){

int a = 10; int b = 20;

printf ("The average of %d and %d is %d\n", a, b, (a + b)*(1.0 / 2));

return 0;}

Page 47: C lects (1)

Overflow- орон халих жишээ

#include <stdio.h>

int main(){

int iA = 1000;int iB = 1000000;int iC = 3000000;int iD = 5000000;printf ("%d * %d = %d\n", iA, iB, iA*iB);

printf ("%d * %d = %d\n", iA, iC, iA*iC); printf ("%d * %d = %u\n", iA, iC, iA*iC);

printf ("%d * %d = %d\n", iA, iD, iA*iD);

return 0;}