C lects (1)
Transcript of C lects (1)
Хувьсагч гэж юу вэ?
Компьютерийн санах ойн нэрлэгдсэн муж тэр нь янз бүрийн төрлийн утгыг агуулна(бүхэл, бодит гэх мэт.)
Програм ажиллах үеийн өгөгдлийг хадгална
Програмын хаана ч өгөгдлийг хадгалахдаа ашиглаж болно
Үнэндээ өгөгдлийг боловсруулахад тусална
Санах ой дахь хувьсагч
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;}