Upload
mongoo
View
1.408
Download
10
Embed Size (px)
Citation preview
Хувьсагч гэж юу вэ?
Компьютерийн санах ойн нэрлэгдсэн муж тэр нь янз бүрийн төрлийн утгыг агуулна(бүхэл, бодит гэх мэт.)
Програм ажиллах үеийн өгөгдлийг хадгална
Програмын хаана ч өгөгдлийг хадгалахдаа ашиглаж болно
Үнэндээ өгөгдлийг боловсруулахад тусална
Санах ой дахь хувьсагч
5
int my_int = 5;/*identifier*/
double my_double = 3.5;
3.5
my_int
my_double
Санах ой дахь хувьсагч
5
my_int-р түүний утгыг уншихаар дуудаж болно &variable_name, гэвэл тухайн хувьсагчийн хаяг
болно
3.5
my_int
my_double
/* 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
Жишээ: хувьсагчийн зарлалт
int i; char c; float f1, f2; float f1=7.0, f2 = 5.2; unsigned int ui = 0;
Хувьсагчид нэр оноох
Латин үсэг, цифр, доогуур зураас i CSE_5a a_very_long_name_that_isnt_very_useful fahrenheit
Эхнийх цифр байж болохгүй 5a_CSE энэ нь буруу!
Том жижиг үсэг ялгаатай CSE_5a энэ нь cse_5a үүнээс ялгаатай
C –н төрөл
char – нэг байт тэмдэгт. int – бүхэл тоо – 2 байт. float – дан нарийвчлалтай бодит тоо – 4
байт. double – давхар нарийвлчлалтай бодит
тоо – 8 байт.
char
int
float
double
C төрөл
short int (эсвэл short) – бүхэл тоо, 2 байт. long int (эсвэл long) – бүхэл тоо, 4 эсвэл
8 байт. long double – давхар нарийвлчлалтай
бодит тоо –8 байт. unsigned ба signedint, char, long, short өмнө хэрэглэнэ. Тухайн
хувьсагчийг илүү тодорхой болгож өгнө. Эерэг юмуу, эерэг ч сөрөг ч юмуу гэдгийг тодруулж өгдөг.
Жишээ
/* см-г инчэд хөрвүүлэх */#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;}
printf ба scanf
printf – дэлгэцэнд хэвлэгч. Хувьсагчид хандаж түүний утгыг
хэвлэж чадна. scanf – стандарт оролтоос утгыг авч
хувьсагчид онооно.
printf хувьсагчийн утгыг хэвлэж чадна
printf("z=%d\n", z); %d энэ тусгай тэмдэг ба
хэвлэгдэхгүй! printf хэвлэхээр бичсэн
мөрийн арын integer хувьсагчийн утгыг энд хэвлэнэ гэдгийг хэлж байна.
scanf хэрэглэгчийн өгөгдлийг авна
scanf("%lf", &cm);
Хэрэглэгч давхар бодитыг оруулахыг хүлээнэ, тэгээд авсан утгаа ‘cm’-д онооно.
Хэрэв хоёр утга авахаар бол, –scanf("%lf%lf", &var1, &var2);
prinft/scanf код хувиргагчид
%<хувиргах код> printf/scanf –н тэмдэгт мөрөнд харгалзах төрлийн хувьсагчруу код хувиргана.
%c – тэмдэгт %5c эсвэл %-5c %d – бүхэл, %u – эерэг бүхэл. %f – бодит %5.2c эсвэл %-5.3c %e – арвын зэрэгт ашиглан дүрслэх %g –%f ба %e –г хослуулах %lf – давхар нарийвчлал %% - ‘%’ тэмдэгт хэвлэх (printf) /* printf –н тусламжаар харж болно hevjhev.cpp*/
Дахиад өмнөх жишээ
/* см-г инчэд хөрвүүлэх програм */#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;}
Дасгал
Дараах програм бич- Долларын ханш өгөгднө Бүхэл тооны доллар танд байгаа
гаралт - Харгалзах мөнгөний хэмжээг гаргах
Бодолт
#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;}
Char нь мөн тоо!
char хувьсагч нь текст тэмдэгтийг хадгалахад хэрэглэгдэнэ: Үсэг. цифр. Гарны тэмдэгт. Үл хэвлэгдэх тэмдэгт. эсвэл (0 аас 255 эсвэл -128 аас 127)
хүртлэх бага тоо.
Тэмдэг үү тоо юу?
Тэмдэг бүр тоон кодтой байна. Янз бүрийн код байна:
ASCII (American Standard Code for Information Interchange) – өргөн хэрэглэгддэг.
ASCII кодыг бид хэрэглэнэ
ASCII хүснэгт
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;}
Дахин жишээ
/* 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;}
Дасгал
Жижиг үсгийг харгалзах том үсгэ болгох програм бич
(Жн., ‘g’ --- ‘G’)
Бодолт
/* жижиг үсгийг том үсэг болгох */#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;}
Арифметик үйлдэл
Үйлдэлүүд нь програмд чухал үүрэгтэй. Үйлдэлд оролцогчийг операнд гэдэг. Нийтлэг үйлдэл:
Утга оноох = нэмэх + хасах - үржих * хуваах / Үлдэгдэлтэй хуваах %
Жишээ
Цифр салгагч
digits.c
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
Дурын утга байна/хог/
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
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
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
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
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
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
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
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
Хэрхэн ажилладаг вэ?
/*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
Хэрхэн ажилладаг вэ?
/*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
Хэрхэн ажилладаг вэ?
/*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
Хэрхэн ажилладаг вэ?
/*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
Хэрхэн ажилладаг вэ?
/*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
Хэрхэн ажилладаг вэ?
/*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
Ялгаатай төрлүүдийн хооронд үйлдэл хийвэл дараах байдлаар төрөл хувирна (int → float → double).
Ижил бол тэр төрөлдөө л байнаИжил бол тэр төрөлдөө л байна..
Ялгаатай төрлүүдийн хувьд
Жишээ - 3 + 4 = 7 3.0 + 4 = 7.0 3 / 4 = 0 !!! 3.0 / 4 = 0.75
Ялгаатай төрлүүдийн хувьд
Зарим үед шууд өөр төрөл болгох шаардлага гарна
Үүнийг хувьсагч cast хийж шинэ төрөл гаргах гэдэг.
Хэлбэр нь: (type) Жишээ нь, (float)i гэж i -г float болгож байна.
Ялгаатай төрлүүдийн хувьд
#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 хийх
Энд юу буруу байна вэ?
#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;}
Энэ ажиллах уу?
#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;}
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;}