Upload
oyungerel-natsag
View
62
Download
2
Embed Size (px)
Citation preview
2010.03.26
Си Осмовы-Си хэлний үндсүүд:1. №1. Удиртгал
Алгоритмын 6 үндсэн чанарууд байдаг.№2 .Команд гэж юуг хэлэх вэ компьютерийн заавал гүйцэтгэх үйлдлийг хэлнэ.№3. Доод түвшний хэлүүд, Өндөр түвшний хэлүүд/Тодорхой компьютерийн өгөгдлөөс
хамаарархгүй/№4. Си хэлний давуу тал/Маш өргөн төрлийн боломжуудтай,/Сөрөг тал/Алдаа гарахад
алдаа нь сайн мэдэгддэггүй/№5. Үндсэн хэсэг
Main(){-эхлэл
Тооцоолох,Биелэгдэх хэсэг}-төгсгөл
№6. First.cpp, First.o гэсэн өргөтгөлтэй байж болно./Обеъкт файл, функцүүд заавал байх ёстой/
Ингэснээр бид .exe файл болгон гаргана.
Анхаарах зүйл:Анхдагч файл байх тохиолдолд сэргээх боломжтой.№7. #include <stdio.h> stdio – Ямар файл багтаах гэж байгаа файлыг дуудаж
өгөх команд/standar input output/ #include <stdio.h>
Main(){Printf(“text дэлгэцрүү хэвлэнэ”); /Формат файл гэнэ/{
№8 IDE/Integrated Development Environment/Буцаж сэргээх – Shift-Ctrl-Z;Шинэ файл үүсгэх – Ctrl- N;Ажиллуулах – F9;
№9 getch()- өгөгдлийг хадгалж харуулж байдаг/Үсэг дарах бүрт/
Жишээ: #include <stdio.h>#include <conio.h>main()
{printf("Hewlene!");
getch();}
Алдаа гарсан тохиолдолд xxx.h: Файл болон нэр эсвэл хаягдсан байж болох алдаа
№10 //, /* - Талбар <Conio.h> - Гар болон дэлгэцтэй ажиллахад зориулсан толгой файл№11 Дэлгэцрүү гаргадаг зарим код/10/
\n- Шинэ мөрнөөс эхлэх
Жишээ бодлого:1
#include <stdio.h>#include <conio.h>int main() { printf("bayraa \n good \n CHi "); getch(); return 0;}
Үр дүн: Баяраа ыбаыба ыбаыбабыа
Жишээ бодлого:2
#include <stdio.h>#include <conio.h>int main() { printf(" *\n ***\n *****\n *******\n HH HH\n XXXXX "); getch(); return 0;}
Үр дүн: Байшингийн хэлбэртэй гарна
№12 Хувьсагч/Өөрийн гэсэн утгатай байна/ Санах ойн мужыг нэг үүр гэнэ/-Төрөл байна:ҮүндInt- 4 байтад хадгалдаг /бүхэл төрөл/Float- 4 байтад хадгалдаг /Бодит тоо/Char-1 байтад хадгалдаг /Тэмдэгт төрөл/
Хувьсагчийн нэр циклээр эхлэж болохгүй мөн дунд нь латин үсэг орж болохгүй
Хувьсагч зарлахдаа: Түүний нэр төрөл анхын утгуудыг нь тодорхойлж түүнд үүр бэлтгэж өгнө
Main(){
Int a;Float b,c /Бодит төрлийн b,c утгыг зарлаж өгнө/Int Tu104, IL83=23, Yak42 = анхны утга олгож байна
Float x=4.56, y, z;Char c, c2=’A’, m;
№13 Утга олгох операторП дээд түвшний оператыг хэлнэ.
A=5;X=a+20; /25/Y=(a+x)*(x-a); /600/
Утга олгох нь: Юуг хааш нь:/Тогтмолыг, Хувьсагчийг, арифметик үйлдлийг/
Div - / % - mod үлдэгдэл + ,-,
Жишээ:
Үйлдлийн хураангуй хэлбэр
1-р нэмэгдүүлэх1-р хорогдуулах гэх мэт
#include <stdio.h>#include <conio.h>int main(){ int a,b; a=5; b=a+2; a=(a+2)*(b-3); b=a/5; a=a%b; a++; b=(a+14)%7; getch();}Жишээ бодлого 3
2 тооны нийлбэр олох /тоог гараас оруулах/
#include <stdio.h>#include <conio.h>main(){ int a, b, c; printf("Á?õýë òîîí óòãóóäàà îðóóëíà óó\n"); scanf ("%d%d", &a, &b); c = a + b; printf("%d", c); getch(); return 0;}Үр дүн 20
%d – целое число /бүхэл тоо/%f – вещественное число /Бодит тоо/%c – 1 символ / Тэмдэгтүүдийн /%s – символьная/ мөр/
Бүхэл тоо гаргах
Эсвэл "%i" эсвэл /9 тэмдэгтийн байрлалд хэвлэнэ шүү/
Бодит тоо гаргах
/9 хэмжээнд таслалын арас 3 тэмдэгт орно/
#include <stdio.h>#include <conio.h>main(){ int a, b, c; printf("2 toogoo oruulna uu?\n"); scanf("%d%d", &a, &b); c = a + b; printf("%d+%d=%d", a, b, c); getch();}
Үр дүн 101010+10=20
Бодлого №14
#include <stdio.h>
#include <conio.h>
main()
{
int a, b, c,sa,se,so;
printf("3 toogoo oruulna uu?\n");
scanf("%d%d%d", &a, &b, &c,&sa,&se,&so);
sa = a + b + c;
se= a*b*c;
so= a/b/c;
printf("%d+%d+%d=%d\n", a, b, c,sa);
printf("%d*%d*%d=%d\n", a, b, c,se);
printf("%d/%d/%d=%d\n", a, b, c,so);
getch();
}
Үр дүн: 10+10+10=30; 10*10*10=1000; 10/10/10=1;
Салаалат бүхий алгоритм
2 бүхэл тоо оруулж аль ихийг нь олАлхамуудын төрөл нь #include <stdio.h>#include <conio.h>main(){
int a, b, max; printf("oruulna uu\n"); scanf("%d%d", &a, &b, &max); if (a > b) { max=a; } else { max=b; } printf("ih %d", max); getch(); return 0;}
5 тооны их#include <stdio.h>#include <conio.h>int main(){
int a, b, c, d, e, max; printf("oruulna uu\n"); scanf("%d%d%d%d%d", &a, &b, &c, &d, &e, &max);
max=a; if (b>max) max=b; if (c>max) max=c; if (e>max) max=e; if (d>max) max=d; printf("hamgiin ih: %d", max); getch(); return 0;}
#include <stdio.h>#include <conio.h>main(){
int a, b, c, d, e, max; printf("oruulna uu\n"); scanf("%d%d%d%d%d", &a, &b, &c, &d, &e, &max); if (a > b) { max=a; } else if (b > c) { max=b; } else if (c > d) { max=c;
} else if (d > e) { max=d; } else { max=e; } printf("hamgiin ih: %d", max); getch(); return 0;}
Нийлмэл нөхцөл2 нөхцөл зэрэг биелэж байна уу гэдгийг олно
#include<stdio.h>#include<conio.h>main(){
int x; printf("насаа оруул\n"); scanf("%d", &x); if (x >= 25) if (x <= 40) printf("Залуу"); else printf("Хөгшин"); else printf("Тохирохгүй"); getch();}-----------------------------------------------------------------#include<stdio.h>#include<conio.h>main() { int x; printf("Nasaa oruulna uu?\n"); scanf("%d", &x); if ( x >= 25 && x <= 40 ) printf("Zaluu"); else printf("tohirohgvi bna"); getch(); }
Хэд хэдэн энгийн нөхцлөөс хамаарсныг НИЙЛМЭЛ нөхцөл байнаЭдгээр нь олон логик нөхцөлтэй байна.||-or эсвэл!-үгүйсгэл== тэнцүү, = утга оноох, != тэнцүү биш
Үйлдлийн дараалал ямар байх вэ?
#include<stdio.h>#include<conio.h>main() { int x; printf("Nasaa oruulna uu?\n"); scanf("%d", &x);
Үйлийн төрөл нь INT төрөлтэйгөөр явагдана
if ( x >= 1 && x <= 18 ) printf("hvvhed"); else printf("tom hvn"); getch(); }
Давталт
Давталтын тоо нь тодорхой байдаг/Праметрт давталт/Алхамын тоог тодорхой бус/Нөхцөлтэй давталт/
1-8 хүртэлх тоонуудын кв куб дэлгэцэн хэвлэ
1-р нэмэгдэх байдлаар#include<stdio.h>#include<conio.h>main() {int i, i2, i3;for (i=1; i<=8; i++) { i2 = i*i; i3 = i2*i; printf("%4d %4d %4d\n", i, i2, i3); } getch();}
FOR операторын ажиллах зарчим
1-р хорогдох байдлаар#include<stdio.h>#include<conio.h>main() {int i, i2, i3; for ( i = 8; i >= 1; i-- ) { i2 = i*i; i3 = i2*i; printf("%4d %4d %4d\n", i, i2, i3); } getch();}
For (<анхны утга>; <Нөхцөл>;<Утгыг өөрчлөх хэсэг>)
#include<stdio.h>#include<conio.h>main() {int i, ib, ir;ib=1; printf("%5d %5d %5d\n",1,1,1);for (i=2; i<=10; i++) { ir=ib+(i-1); printf("%6d %6d %6d\n",ir,ir*ir,ir*ir*ir); ib=ir; } getch();}
Нөхцөлт давталт
Бүхэл тоог тодорхойл
N!=0 – 0-с ялгаатайWhile operator ashiglana
Ардаа нөхцөлтэй давталтНөхцөл шалгах үйлдэл нь давталтын төгсгөлд хийгдэж байгаа үед хэлнэээээ.
Нийт сар хэд хоногтой вэ?#include<stdio.h>#include<conio.h>main(){ int M, D; printf("Ugugdluu oruulna uu:\n"); scanf("%d", &M); switch ( M ) { case 2: D = 28; break;
case 4: case 6: case 9: case 11: D = 30; break;
case 1: case 3: case 5: case 7: case 8: case 10: case 12: D = 31; break;
default: D = -1; } if (D > 0) printf("ene sar %d honogtoi.", D); else printf("ugugdol buruu bna"); getch(); return 0;}
12 сарын 31 болоход хэд хоног дутуу байна вэ#include<stdio.h>#include<conio.h>int main(){ int Mo, Da; int Nd; printf("sar odroo oruulna uu:\n"); scanf("%d%d", &Mo,&Da); switch (Mo) { case 1: { Nd=(31*6+30*4+28)+(31-Da); break;} case 2: { Nd=(31*6+30*4)+(28-Da);break;} case 3: { Nd=(31*5+30*4)+(31-Da);break;} case 4: { Nd=(31*5+30*3)+(30-Da);break;} case 5: { Nd=(31*4+30*3)+(31-Da);break;} case 6: { Nd=(31*4+30*2)+(30-Da);break;} case 7: { Nd=(31*3+30*2)+(31-Da);break;} case 8: { Nd=(31*2+30*2)+(31-Da);break;} case 9: { Nd=(31*2+30)+(30-Da);break;}
case 10: { Nd=(31+30)+(30-Da);break;} case 11: { Nd=(31+(30-Da));break;} case 12: { Nd=(31-Da);break;}
default: Nd=-1; } if (Da > -1) printf("shine jil boltol %d dutuu bna.", Nd); else printf("ugugdol buruu bna"); getch();}
Do while ашиглан гараас гарагийн дугаар оруулж үр дүнг гаргах бодлого#include<stdio.h>#include<conio.h>int main(){ int yes, day;do { printf("Garagiin dugaaraa oruulna uu!\n"); scanf("%d", &day); switch (day) { case 1: {yes=1;printf("Monday\n"); break;} case 2: {yes=1;printf("Tuesday\n"); break;} case 3:{yes=1;printf("Wednesday\n"); break;} case 4:{yes=1;printf("Thursday\n"); break;} case 5:{yes=1;printf("Friday\n"); break;} case 6:{yes=1;printf("Saturday\n"); break;} case 7:{yes=1;printf("Sunday\n"); break;} default: yes=0; } } while (yes==0); /Давталтын нөхцөл шалгах/
getch();}
2010 III/27
МассивМассив гэж юу вэInt a;A=5; Си хэлэнд ,энгийн өгөгдлүүдээр нийлмэл өгөгдлийг бүтээж болно. Нийлмэл өгөгдлүүд гэдэгт МАССИВ, ,БҮТЭЦ, НЭГДЭЛ ФАЙЛ гэх мэтийг харуулдаг
Массив/array/ гэдэг нь нэгэн ижил төрлийн, олон тооныЭлементийн дугаарыг индекс (index) гэнэ. Индекс нь 0 эхлэн тоологдоно.
Массив нь математикийн матрицийг програмчилалын хэлэнд олгож болно.
Double z[4][6]={{1}{2}{3}{4}};Зургаар дүрсэлбэл:1 * * * * *2 * * * * *3 * * * * *4 * * * * *
,Int x[5][4]= {{1}{2,3}{4,5,6}{7,8,9,10}};-Гурвалжин массив1 * * *
2 3 * *4 5 6 *7 8 9 10* * * *
Өөрчлөгдөх боломжгүй утгыг тогтмолууд гэнэ.
Тогтмол массив зарлахдаа Const ашиглана.
8 хэмжээст Массивийн бүх элементийг 1 болгох програм зохио#include<stdio.h>#include<conio.h>main(){ unsigned char a[8]; int i; for(i=0; i<=7; i++) { a[i]=1; printf("\n a[%d]=%u",i,a[i]); } getch(); return 0;}
ееееееееееееееееееееееееееееееееееееееееееееееееееееееее#include<stdio.h>#include<conio.h>main(){ unsigned char a[8]; int i,max; max=-1; for(i=0; i<=7; i++) { a[i]=i; printf("a[%d]=%d\n",i,a[i]); } for(i=0; i<=7; i++) if (a[i]>max) max=a[i]; printf("hamgiin ih:%d",max); getch(); return 0;}
еееееееееееееееееееееееееееееееееееееееееееееееееееее#include<stdio.h>#include<conio.h>main(){ unsigned char a[8]; int i,max; for(i=0; i<=7; i++) a[i]=i; //anhnii utgiig onooj ugch bna for(i=0; i<=7; i++) printf("%3d",a[i]);
max=-100; for(i=0; i<=7; i++) if (a[i]>max) max=a[i]; printf("\n\n max element ni: %d", max); getch(); }
Тогтмол утга оруулахГараас утга оруулах
#include<stdio.h>#include<conio.h>main(){ unsigned char a[8]; int i,max; for(i=0; i<=7; i++){ printf("\na[%d]= ",i); scanf("%d",&a[i]); } for(i=0; i<=7; i++) printf("%3d",a[i]); max=-100; for(i=0; i<=7; i++) if (a[i]>max) max=a[i]; printf("\n\n max element ni: %d", max); getch(); }
Санамсаргүй тооны үүсгүүрийг ашиглан оруулахСанамсаргүй тоог бэлэн функц ашиглаж үүсгэнэRand()%size;Rand()-stdlib.h сангийн стандарт функцд Size-хамгийн ихдээ хэд хүртэлх тоог үүсгэхийн бэ #include<stdio.h>#include<conio.h>#include<stdlib.h>main(){ unsigned char a[8]; int i,max; for(i=0; i<=7; i++) a[i]=rand()%100; //86+rand()%10 //anhnii utgiig onooj ugch bna for(i=0; i<=7; i++) printf("%3d'",a[i]); max=-100; for(i=0; i<=7; i++) if (a[i]>max) max=a[i]; printf("\n\n max element ni: %d", max); getch(); }
#include<stdio.h>#include<conio.h>main(){ unsigned char a[5][5]; unsigned char i,j; for(i=0; i<=4; i++) { for(j=0; j<=4; j++) { a[i][j]=i*j; printf("%3d",a[i][j]); } printf("\n");
getch();}getch();}
#include<stdio.h>#include<conio.h>main(){ unsigned char a[5][5]; unsigned char i,j; for(i=0; i<=4; i++) { for(j=0; j<=4; j++) { a[i][j]=i*j; printf("%3d",a[i][j]); getch(); } printf("\n");
getch();}getch();}
#include<stdio.h>#include<conio.h>main(){ unsigned char a[5][5]; unsigned char i,j; for(i=0; i<=4; i++) for(j=0; j<=4; j++) { a[i][j]=i*j; printf("a[%d][%d]=%d\n",i,j,a[i][j]); } getch();}
#include<stdio.h>#include<conio.h>#include<stdlib.h>main(){ unsigned char a[8]; int i,s; for(i=0; i<=8; i++) a[i]=rand()%20; for(i=0; i<=8; i++) printf("%3d",a[i]); s=0; for(i=0; i<=8; i++) s=s+a[i]; printf("\n\n niilber element ni: %d", s); getch();}
ФунцДэд програмыг Фунц – Function –Утга буцаанаПроцедур – procedure – Утга буцаахгүй
- СтандартPrintf()
- ХэрэглэгчийнӨдрийн дугаарыг оруулахад нэрийг нь буцаадаг функц
String weekday(int a)
N хүртэлх тоонууд дотроос анхны тоонуудыг олN хүртэлх тоонуудаас палиндром анхны тоонууд байна ууАнхны тоо мөн эсэхийг шалгадаг функц хэрэгтэй болно.
Int ankh(int a);
Хэрэглэгчийн функц
#include<stdio.h>#include<conio.h>main(){ int a,b; //undsen programiin biy a=Function1(); b=Function2(); printf("%d%d",a,b); getch(); }int Function1(parametr baij bolno){..........return;}int Function2(parametr baij bolno){..........return;}void Proced(parametr baij bolno){ }
File, Directory-ийн нэршлийн асуудал
#include<stdio.h>#include<conio.h>int zereg(int a, int b){ int k,c; c=1; for(k=0; k<b; k++) c=c*a; printf("%d -toonii %d -zereg ni: %d",a,b,c); return c;}main(){ int i,m,n,z; printf("toog oruul ="); scanf("%d",&m); printf("Zergiig oruul ="); scanf("%d",&z); zereg(m,z); getch(); return 0;}
Асуудал:
Формал ба бодит параметруудХэрэглэгчийн функцийг зарлахдаа мөн тодорхойлохдоо нэрийнх нь ард хаалтанд дотор бичиж буй аргументуудыг формал(хуурмаг) параметр гэнэ.
БодлогоӨгөгдсөн тоон дотор ямар цифр хэдэн удаа давтагдаж орсон байна вэ?---------------------2231A=2B=2C=3D=1----------------------- 111111111111222222222222333333344444444555555555500000000546564513 Тэмдэгт мөр + массив ашиглаж бодно.1-8 удаа2-9 удаа3-3 удаа
Int digit[10];
Тэмдэгт мөрийн жижиг үсгүүдийг том, том үсгүүдийг жижиг үсгээр соль /ASCII KOD АШИГЛАНА/a-97 A-65z-122 Z-90
ФАЙЛЯагаад файлын тухай гэж?W:Бид програмын оролтын өгөгдлийг хаанаас оруулж байна юэ?q:гараас
Файлын оролт гаралтын тухай сайн мэдэх хэрэгтэй
Нөгөө талаас гадаад санах ой тухайлбал диск дээр орших файл бол байтуудын далаалал байдаг. Үүнтэй холбоотойгоор оролт гаралтын хэрэгсэл гэсэн ойлголт мөн файлыг хамруулж болох юм.
Файлтай ажиллах 2 хэлбэр- Доод түвшний хандалт /Low-level access/- Урсгалаар дамжуулан ажиллах /stream-level access/
Урсгал гэж юу вэ?Мэдээллийг үүсгэж буй эсвэл мэдээллийг хүлээн авч буй бодит хэрэгслийн төлөөлсөн логик хэрэгсэл юм.
Гар ба дэлгэцийг төлөөлсөн урсгалуудыг стандарт урсгалууд гэдэг.
- Урсгал үүсгэх- Урсгалыг нээж файлтай холбох- Дээр оролт гаралтын үйлдэл хийх- Урсгалыг хаах
Си хэлэнд урсгалыг урсгалын заагч хэмээх ойлголтооор илэрхийлдэг.Урсгалын заагч нь FILE гэсэн өгөгдлийн төрөлд хамаардаг
FILE * урсгалын_нэр;
Дараагийн алхам бол үүсгэсэн урсгалаа нээж, физик файлтай холбох явдал. ҮҮний тулд
Урсгалын нэр=Fopen(файлын_бүтэц_нэр,_урсгалыг_нээх_горим)- Fopen - Урсгалыг нээж, файлтай холбох стандарт функц- Файлын_нэр - холбох файлын нэр
Жишээ нь:Урсгалыг нээж файлтай холбохдоо эдгээрийн аль нэгийг ашиглана-“W” - Нэр бүхий файл, зөвхөн бичихийн тулд шинээр горим үүсгэх-“r”- уншихийн тулд нээх горим-“a”- Төгсгөлд нь нэмж бичихийн тулд нээх шинээр үүсгэх горим
#include<stdio.h>#include<conio.h>main () { FILE *fp; //failiin ursgaliig vvsgej baina fp = fopen ("int.dat","r"); //ursgaliig ajillah failtai holboj ugch bna unsigned int i,k; for(i=1; i<=5; i++) { fscanf(fp,"%u",&k); //ursgalaar damjuulan file-aas buhel toonuudiig ol printf("%u",k); } fclose (fp); getch();}
Файл руу бичих, файлаас унших
Fputc()Fgetc()Fputs()Fgets()
Функц –Сэргээн санахFactoria-ФакториалFact *=n;Fact=fact*n;Return fact;
#include<stdio.h>#include<conio.h>int factRec(int n){ if(n==0 || n==1) return 1; return n*factRec(n-1);}int main() { int i; printf("Utgaa oruul: "); scanf("%d", &i); printf("%d -iin fatctorial: %d",i,factRec(i)); scanf("%d", &i);}
Өгөгдсөн натурал тоонуудын цифрүүдийн нийлбэрийг ол
#include<stdio.h>#include<conio.h>int main() { int i,k,l; printf("oruul: "); scanf("%d", &i); k=i; l=0; while(k!=0) { l+=k%10; k/=10; } printf("\n%d -ogodson tsifrvvdiin niilber: %d",i,l); getch(); return 0;}