SlideShare a Scribd company logo
1 of 7
Download to read offline
1
U.CS201 Алгоритм ба програмчлал
Лекц-4
Битийн харьцуулах ба логик үйлдлүүд
Битийн үйлдэл нь илэрхийллийн гишүүдийн битийн хувьд үйлдэл хийдэг учраас энгийн арифметик
үйлдлээс хурдан хийгддэг. Си хэлэнд дараах битийн үйлдлүүд байна.
~ - бит үгүйсгэл
& -бит ба (and)
^ - битийн өргөтгөсөн буюу (xor)
|| - битийн буюу (or)
<< - битээр зүүн тийш шилжүүлэх
>> - битээр баруун тийш шилжүүлэх
Битийн үйлдлүүд нь илэрхийллийн гишүүдийн ижил байрлал дахь битүүдийн дээр үйлдлээ
гүйцэтгэдэг. Дараах хүснэгтэнд битийн ~, &, ||, ^ үйлдлүүдийн үр дүнгийн хүснэгтийг харуулав.
A бит B бит A &B A || B A^B
1 1 1 1 0
1 0 0 1 1
0 1 0 1 1
0 0 0 0 0
int a=5, b=7, k;
k=a&b; /* 5 */
k=a|b; /* 7 */
k=~a; /* 250 */
k=~b; /* 148 */
Харин битээр шилжүүлэх операторууд нь хоёр бүхэл тооны хооронд хийгддэг.
int t=2, n=2, r;
r= t<<n; /* r=8 */
int e=r>>3; /* e=1 */
Зүүн тийш шилжүүлэх оператор (<<) нь илэрхийллийн нэгдүгээр гишүүний бит (2-тын тооллын
систем дэх бичлэг)- үүдийг хоёрдугаар гишүүн удаа зүүн тийш шилжүүлнэ. Тухайлбал дээрх
жишээнд t тооны битүүд
0000000000000010 ба n=2 тул
0000000000001000 буюу 8 гарч байна.
A бит ~A
1 0
0 1
Илэрхийлэл Хоёртын бичлэг
a 00000111
b 00000101
k=a&b 00000101
k=a|b 00000111
k=~a 11111000
k=~b 11111010
2
U.CS201 Алгоритм ба програмчлал
Жишээ: Битийн шилжүүлэлтийн операторыг ашигласан жишээ
#include <cstdlib>
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
unsigned int y,x=255;
int c;
printf("toott zuun tiish t result n");
for(c=1; c<8; c++)
{
y=x<<c;
printf("%dtt%dtt%dn", x,c,y);
}
printf("nnn toott baruun tiish t result n");
for(c=1; c<8; c++)
{
y=x>>c;
printf("%dtt%dtt%dn", x,c,y);
}
system("pause");
return 0;
}
Программын үр дүн:
Тоо зүүн тийш үр дүн Тоо баруун тийш үр дүн
255 1 510 255 1 127
255 2 1020 255 2 63
255 3 240 255 3 31
255 4 4080 255 4 15
255 5 8160 255 5 7
255 6 16320 255 6 3
255 7 32640 255 7 1
3
U.CS201 Алгоритм ба програмчлал
#include <cstdlib>
#include <iostream>
using namespace std;
#include<stdio.h>
/* 10-тын тооллын системийн тоог 2-тийн тооллын систем рүү хөрвүүлэх дэд програм*/
void binary(int number) {
int remainder;
if(number <= 1) {
cout << number;
return;
}
remainder = number%2;
binary(number >> 1);
cout << remainder;
}
int main()
{
unsigned int a=5,b=7,f,c,d,e;
e=a&b; /* 5 */
f=a|b; /* 7 */
c=~a; /* 250 */
d=~b; /* 148 */
printf("%d %d %d %d tn",e,f,c,d);
cout << e << " converted to binary is: ";
binary(e);
system("pause");
return 0;
}
Break, continue, goto, return оператор
Програмд break оператор нь нөхцөл шалгах, сонголтын болон давталтын операторуудтай хамт
хэрэглэгддэг. Өөрөөр хэлбэл break оператор нь зөвхөн do, for, while, switch операторуудын дотор
хэрэглэгддэг. Энэ операторын үүрэг нь дээрх операторуудын биелэлтийг тасалж программын
удирдлагыг дараагийн операторт шилжүүлэхэд оршино.
4
U.CS201 Алгоритм ба програмчлал
Жишээ: Доорхи жишээнд break операторыг хэрхэн ашиглахыг харуулав.
#include <cstdlib>
#include <iostream>
using namespace std;
#include<stdio.h>
char s[]="ene bol jishee. End 2 oguulber baina.";
int main()
{
int c;
printf("n temdegt moriin utga: %s",s);
for(c=0; s[c]!='0'; c++)
{
if(s[c]=='.')
{
s[c+1]='0';
break;
}
}
printf("n moriin oorchlogdson utga: %sn",s);
system("pause");
return 0;
}
Дараах жишээ нь for давталтыг дуусахаас өмнө түүний үйл ажиллагааг дуусгахад break
операторыг ашиглаж байна. Жишээлбэл:
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
int c;
printf(" 1-ees 10 hurtelh toog hewlehn");
for(c=1; ; c++)
{
if(c==11) break;
printf("n %d",c);
}
system("pause");
return 0; }
5
U.CS201 Алгоритм ба програмчлал
Үргэлжлүүлэх оператор (continue)
Continue оператор нь do, for, while циклийн операторуудтай хамтарч ажиллана. Дээрх циклийн
операторууд дотор continue бичигдсэн бол уг операторын дараагийн үйлдлүүд биелэгдэхгүй. Do,
while циклийн операторт continue ашиглагдах үед continue-гийн дараагийн алхамт нөхцөл
илэхрийллийг бодохоос эхэлнэ.
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
int c;
printf(" 1-ees 10 hurtelh tegsh toonii niilbern");
for(c=1; c<=10; c++)
{
if(c%2!=0) /* sondgoi too */
continue; /* dawtaltiin ehend udirdlaga shiljih*/
}
printf("n%dt",c);
system("pause");
return 0;
}
6
U.CS201 Алгоритм ба програмчлал
Шилжилтийн оператор (goto)
Бичигдэх хэлбэр нь:
goto<тэмдэг>;
<тэмдэг>:<оператор>
Goto оператор нь <тэмдэг> -ээр эхэлсэн мөр рүү программын удирдлагыг шилжүүлнэ
Жишээ:
#include <iostream>
using namespace std;
#include<stdio.h>
int main()
{
int n;
start:;
printf(" 0- 10 hoorond too oruulna uu:");
scanf("%d",&n);
if(n<0 | n>10) goto start;
else if(n==0) goto location0;
else if(n==1) goto location1;
else goto location2;
location0:
printf(" ta 0-g oruullaa n");
goto end;
location1:
printf(" ta 1-g oruullaa n");
goto end;
location2:
printf(" ta 2-oos 10-n hoorond too oruullaa n");
end:
system("pause");
return 0;
}
7
U.CS201 Алгоритм ба програмчлал
return оператор
Return оператор нь програмыг төгсгөх буюу функцийн утгыг буцаадаг. Хэрэглэгдэх хэлбэр нь
return[<төгсгөх код>];
эсвэл
return[<буцах утга>]; энэ операторын ард 0 гэж бичиж өгөхөд энэ мөрийг биелүүлснээр програм
энгийнээр төгсдөг. Хэрэв функц утга буцаахгүй (void төрлийн бол) return операторыг бичихгүй
байж болох ба бичсэн тохиолдолд буцах утга бичдэггүй. Өөрөөр хэлбэл return; хэлбэртэйгээр
бичих хэрэгтэй болдог. Энэ операторын хэрэглээ нь хэрэглэгчийн функцийг үзэх үед илүү
тодорхой болох болно.
Жишээ: a болон б тооны үржвэрийг бодох mult() утга буцаадаг хэрэглэгчийн функцийг
зохиож үр дүнг x хувьсагчид оноож x- ийн утгыг буцаана уу. mult() функцийн утгыг гараас
оруулах ба үр дүнг хэвлэж харуулах програм зохио.
#include <iostream>
using namespace std;
#include<stdio.h>
int x;
int mult(int a,int b)
{
x=a*b;
return x;
}
int main()
{
int c,d;
scanf("%d %d", &c,&d);
mult(c,d);
printf("%dn",x);
system("pause");
return 0;
}

More Related Content

Viewers also liked

Yu lin tang shi1
Yu lin tang shi1Yu lin tang shi1
Yu lin tang shi1sixiangqi
 
Achievements Gained at IBM
Achievements Gained at IBMAchievements Gained at IBM
Achievements Gained at IBMamylmorris
 
Preparing Your Home for Winter
Preparing Your Home for WinterPreparing Your Home for Winter
Preparing Your Home for WinterJeff Nevil
 
Big data making complex things simpler
Big data making complex things simplerBig data making complex things simpler
Big data making complex things simplerIşıl Tabağ
 
Empreendedorismo (parte 2), David Stephen
Empreendedorismo (parte 2), David StephenEmpreendedorismo (parte 2), David Stephen
Empreendedorismo (parte 2), David StephenDavid Stephen
 
A Guide To Filing For Bankruptcy
A Guide To Filing For BankruptcyA Guide To Filing For Bankruptcy
A Guide To Filing For BankruptcyJeff Nevil
 
ардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалт
ардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалтардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалт
ардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалтDondogjamts Batbaatar
 
Online Challenges and Opportunities for the Furniture Industry
Online Challenges and Opportunities for the Furniture IndustryOnline Challenges and Opportunities for the Furniture Industry
Online Challenges and Opportunities for the Furniture IndustryJeff Nevil
 
Why executive education
Why executive educationWhy executive education
Why executive educationIşıl Tabağ
 

Viewers also liked (20)

лаб U.cs101 3
лаб U.cs101 3лаб U.cs101 3
лаб U.cs101 3
 
Arduino lesson 1
Arduino lesson 1Arduino lesson 1
Arduino lesson 1
 
Hanyupinyin2
Hanyupinyin2Hanyupinyin2
Hanyupinyin2
 
Tiansi
TiansiTiansi
Tiansi
 
Yu lin tang shi1
Yu lin tang shi1Yu lin tang shi1
Yu lin tang shi1
 
Презентация1
Презентация1Презентация1
Презентация1
 
Achievements Gained at IBM
Achievements Gained at IBMAchievements Gained at IBM
Achievements Gained at IBM
 
Preparing Your Home for Winter
Preparing Your Home for WinterPreparing Your Home for Winter
Preparing Your Home for Winter
 
Big data making complex things simpler
Big data making complex things simplerBig data making complex things simpler
Big data making complex things simpler
 
Tiansi
TiansiTiansi
Tiansi
 
Empreendedorismo (parte 2), David Stephen
Empreendedorismo (parte 2), David StephenEmpreendedorismo (parte 2), David Stephen
Empreendedorismo (parte 2), David Stephen
 
Nobita
NobitaNobita
Nobita
 
A Guide To Filing For Bankruptcy
A Guide To Filing For BankruptcyA Guide To Filing For Bankruptcy
A Guide To Filing For Bankruptcy
 
ардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалт
ардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалтардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалт
ардиуно удирдлагын хавтанд суурилсан эмбеддэд системийн анхан шатны сургалт
 
APLIKOM
APLIKOM APLIKOM
APLIKOM
 
The job of the menu
The job of the menuThe job of the menu
The job of the menu
 
One phase transformer
One phase transformerOne phase transformer
One phase transformer
 
Online Challenges and Opportunities for the Furniture Industry
Online Challenges and Opportunities for the Furniture IndustryOnline Challenges and Opportunities for the Furniture Industry
Online Challenges and Opportunities for the Furniture Industry
 
Food storing and issuing control
Food storing and issuing controlFood storing and issuing control
Food storing and issuing control
 
Why executive education
Why executive educationWhy executive education
Why executive education
 

Similar to лекц4 (20)

U.cs101 лаборатори 1
U.cs101 лаборатори 1U.cs101 лаборатори 1
U.cs101 лаборатори 1
 
онол
онолонол
онол
 
Лекц №13
Лекц №13Лекц №13
Лекц №13
 
алгоритм
алгоритмалгоритм
алгоритм
 
Lekts 8
Lekts 8Lekts 8
Lekts 8
 
C lects (1)
C lects (1)C lects (1)
C lects (1)
 
u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7u.cs101 "Алгоритм ба програмчлал" Лекц №7
u.cs101 "Алгоритм ба програмчлал" Лекц №7
 
SW206 labo
SW206 laboSW206 labo
SW206 labo
 
Lecture 1
Lecture 1Lecture 1
Lecture 1
 
Лекц-1
Лекц-1Лекц-1
Лекц-1
 
Лекц №6
Лекц №6Лекц №6
Лекц №6
 
Lab10 2-it101
Lab10 2-it101Lab10 2-it101
Lab10 2-it101
 
Лекц 9(Заагч)
Лекц 9(Заагч)Лекц 9(Заагч)
Лекц 9(Заагч)
 
Ci hel
Ci helCi hel
Ci hel
 
Лекц №8
Лекц №8Лекц №8
Лекц №8
 
Algoritm
AlgoritmAlgoritm
Algoritm
 
Тоон электроник /монгол/
Тоон электроник /монгол/Тоон электроник /монгол/
Тоон электроник /монгол/
 
Lecture 9
Lecture 9Lecture 9
Lecture 9
 
алгоритмчлалын үндэс
алгоритмчлалын үндэсалгоритмчлалын үндэс
алгоритмчлалын үндэс
 
Pp Lect6
Pp Lect6Pp Lect6
Pp Lect6
 

лекц4

  • 1. 1 U.CS201 Алгоритм ба програмчлал Лекц-4 Битийн харьцуулах ба логик үйлдлүүд Битийн үйлдэл нь илэрхийллийн гишүүдийн битийн хувьд үйлдэл хийдэг учраас энгийн арифметик үйлдлээс хурдан хийгддэг. Си хэлэнд дараах битийн үйлдлүүд байна. ~ - бит үгүйсгэл & -бит ба (and) ^ - битийн өргөтгөсөн буюу (xor) || - битийн буюу (or) << - битээр зүүн тийш шилжүүлэх >> - битээр баруун тийш шилжүүлэх Битийн үйлдлүүд нь илэрхийллийн гишүүдийн ижил байрлал дахь битүүдийн дээр үйлдлээ гүйцэтгэдэг. Дараах хүснэгтэнд битийн ~, &, ||, ^ үйлдлүүдийн үр дүнгийн хүснэгтийг харуулав. A бит B бит A &B A || B A^B 1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 int a=5, b=7, k; k=a&b; /* 5 */ k=a|b; /* 7 */ k=~a; /* 250 */ k=~b; /* 148 */ Харин битээр шилжүүлэх операторууд нь хоёр бүхэл тооны хооронд хийгддэг. int t=2, n=2, r; r= t<<n; /* r=8 */ int e=r>>3; /* e=1 */ Зүүн тийш шилжүүлэх оператор (<<) нь илэрхийллийн нэгдүгээр гишүүний бит (2-тын тооллын систем дэх бичлэг)- үүдийг хоёрдугаар гишүүн удаа зүүн тийш шилжүүлнэ. Тухайлбал дээрх жишээнд t тооны битүүд 0000000000000010 ба n=2 тул 0000000000001000 буюу 8 гарч байна. A бит ~A 1 0 0 1 Илэрхийлэл Хоёртын бичлэг a 00000111 b 00000101 k=a&b 00000101 k=a|b 00000111 k=~a 11111000 k=~b 11111010
  • 2. 2 U.CS201 Алгоритм ба програмчлал Жишээ: Битийн шилжүүлэлтийн операторыг ашигласан жишээ #include <cstdlib> #include <iostream> using namespace std; #include<stdio.h> int main() { unsigned int y,x=255; int c; printf("toott zuun tiish t result n"); for(c=1; c<8; c++) { y=x<<c; printf("%dtt%dtt%dn", x,c,y); } printf("nnn toott baruun tiish t result n"); for(c=1; c<8; c++) { y=x>>c; printf("%dtt%dtt%dn", x,c,y); } system("pause"); return 0; } Программын үр дүн: Тоо зүүн тийш үр дүн Тоо баруун тийш үр дүн 255 1 510 255 1 127 255 2 1020 255 2 63 255 3 240 255 3 31 255 4 4080 255 4 15 255 5 8160 255 5 7 255 6 16320 255 6 3 255 7 32640 255 7 1
  • 3. 3 U.CS201 Алгоритм ба програмчлал #include <cstdlib> #include <iostream> using namespace std; #include<stdio.h> /* 10-тын тооллын системийн тоог 2-тийн тооллын систем рүү хөрвүүлэх дэд програм*/ void binary(int number) { int remainder; if(number <= 1) { cout << number; return; } remainder = number%2; binary(number >> 1); cout << remainder; } int main() { unsigned int a=5,b=7,f,c,d,e; e=a&b; /* 5 */ f=a|b; /* 7 */ c=~a; /* 250 */ d=~b; /* 148 */ printf("%d %d %d %d tn",e,f,c,d); cout << e << " converted to binary is: "; binary(e); system("pause"); return 0; } Break, continue, goto, return оператор Програмд break оператор нь нөхцөл шалгах, сонголтын болон давталтын операторуудтай хамт хэрэглэгддэг. Өөрөөр хэлбэл break оператор нь зөвхөн do, for, while, switch операторуудын дотор хэрэглэгддэг. Энэ операторын үүрэг нь дээрх операторуудын биелэлтийг тасалж программын удирдлагыг дараагийн операторт шилжүүлэхэд оршино.
  • 4. 4 U.CS201 Алгоритм ба програмчлал Жишээ: Доорхи жишээнд break операторыг хэрхэн ашиглахыг харуулав. #include <cstdlib> #include <iostream> using namespace std; #include<stdio.h> char s[]="ene bol jishee. End 2 oguulber baina."; int main() { int c; printf("n temdegt moriin utga: %s",s); for(c=0; s[c]!='0'; c++) { if(s[c]=='.') { s[c+1]='0'; break; } } printf("n moriin oorchlogdson utga: %sn",s); system("pause"); return 0; } Дараах жишээ нь for давталтыг дуусахаас өмнө түүний үйл ажиллагааг дуусгахад break операторыг ашиглаж байна. Жишээлбэл: #include <iostream> using namespace std; #include<stdio.h> int main() { int c; printf(" 1-ees 10 hurtelh toog hewlehn"); for(c=1; ; c++) { if(c==11) break; printf("n %d",c); } system("pause"); return 0; }
  • 5. 5 U.CS201 Алгоритм ба програмчлал Үргэлжлүүлэх оператор (continue) Continue оператор нь do, for, while циклийн операторуудтай хамтарч ажиллана. Дээрх циклийн операторууд дотор continue бичигдсэн бол уг операторын дараагийн үйлдлүүд биелэгдэхгүй. Do, while циклийн операторт continue ашиглагдах үед continue-гийн дараагийн алхамт нөхцөл илэхрийллийг бодохоос эхэлнэ. #include <iostream> using namespace std; #include<stdio.h> int main() { int c; printf(" 1-ees 10 hurtelh tegsh toonii niilbern"); for(c=1; c<=10; c++) { if(c%2!=0) /* sondgoi too */ continue; /* dawtaltiin ehend udirdlaga shiljih*/ } printf("n%dt",c); system("pause"); return 0; }
  • 6. 6 U.CS201 Алгоритм ба програмчлал Шилжилтийн оператор (goto) Бичигдэх хэлбэр нь: goto<тэмдэг>; <тэмдэг>:<оператор> Goto оператор нь <тэмдэг> -ээр эхэлсэн мөр рүү программын удирдлагыг шилжүүлнэ Жишээ: #include <iostream> using namespace std; #include<stdio.h> int main() { int n; start:; printf(" 0- 10 hoorond too oruulna uu:"); scanf("%d",&n); if(n<0 | n>10) goto start; else if(n==0) goto location0; else if(n==1) goto location1; else goto location2; location0: printf(" ta 0-g oruullaa n"); goto end; location1: printf(" ta 1-g oruullaa n"); goto end; location2: printf(" ta 2-oos 10-n hoorond too oruullaa n"); end: system("pause"); return 0; }
  • 7. 7 U.CS201 Алгоритм ба програмчлал return оператор Return оператор нь програмыг төгсгөх буюу функцийн утгыг буцаадаг. Хэрэглэгдэх хэлбэр нь return[<төгсгөх код>]; эсвэл return[<буцах утга>]; энэ операторын ард 0 гэж бичиж өгөхөд энэ мөрийг биелүүлснээр програм энгийнээр төгсдөг. Хэрэв функц утга буцаахгүй (void төрлийн бол) return операторыг бичихгүй байж болох ба бичсэн тохиолдолд буцах утга бичдэггүй. Өөрөөр хэлбэл return; хэлбэртэйгээр бичих хэрэгтэй болдог. Энэ операторын хэрэглээ нь хэрэглэгчийн функцийг үзэх үед илүү тодорхой болох болно. Жишээ: a болон б тооны үржвэрийг бодох mult() утга буцаадаг хэрэглэгчийн функцийг зохиож үр дүнг x хувьсагчид оноож x- ийн утгыг буцаана уу. mult() функцийн утгыг гараас оруулах ба үр дүнг хэвлэж харуулах програм зохио. #include <iostream> using namespace std; #include<stdio.h> int x; int mult(int a,int b) { x=a*b; return x; } int main() { int c,d; scanf("%d %d", &c,&d); mult(c,d); printf("%dn",x); system("pause"); return 0; }