1. Trang chủ
  2. » Giáo án - Bài giảng

giáo trình môn kỹ thuật lập trình ngành điện tự động

134 537 1

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 134
Dung lượng 715,41 KB

Nội dung

Như vậ y khi dù ng thuậ t toá n cùng một dữ liệ u ban đầ u phả i cho Lưu đồ là một dạ ng đồ thị dùng để mô tả quá trì nh tí nh toá n một cá ch có hệ thố ng... CáC NGôN NGữ LậP TRìNH & CH

Trang 1

I.2.3 Tí nh duy nhấ t :

Toà n bộ quá trì nh biế n đổi, cũng như trậ t tự thực hiệ n phả i được xá c định

và là duy nhấ t Như vậ y khi dù ng thuậ t toá n cùng một dữ liệ u ban đầ u phả i cho

Lưu đồ là một dạ ng đồ thị dùng để mô tả quá trì nh tí nh toá n một cá ch có

hệ thố ng Ngư ờ i ta thư ờ ng thể hiệ n thuậ t toá n bằ ng lư u đ ồ

II.2 Cá c ký hiệ u trê n lưu đ ồ :

Khố i mở đ ầ u hoặ c kế t

thú c

Dù ng mở đ ầ u hoặ c kế t thú c chư ơ ng trì nh

kế t quả

Trang 2

Khè i tÝ nh to¸ n BiÓ u diÔ n c¸ c c« ng thø c

tÝ nh to¸ n vµ thay ® æ i gi¸ trÞ cñ a c¸ c biÕ n

II.3 Mé t sè vÝ dô biÓ u diÔ n thuË t to¸ n b» ng l­u ® å

II.3.1 ThuË t to¸ n kh« ng ph© n nh¸ nh:

C By Ax

2 +

+ +

Trang 3

II.3.2 ThuË t to¸ n cã ph© n nh¸ nh:

VÝ dô 1: T× m gi¸ trÞ max cñ a ba sè thù c a,b,c

VÝ dô 2: Gi¶ i ph­ ¬ ng tr× nh bË c nhÊ t Ax+B =0 ví i c¸ c nghiÖ m thù c

Ñ

Trang 4

Ví dụ 3 : Giả i phư ơ ng trì nh bậ c hai Ax2+Bx+C =0 vớ i cá c nghiệ m thự c

S Delta = b*b - 4*a*c

ẹ Delta = 0 Xuaỏt (-b / (2*a)) S

II.3.3 Thuậ t toá n có chu trì nh:

Thuậ t toá n có chu trì nh với cá c bước lặ p xá c định thường được thể hiệ n bằ ng lư u đ ồ sau :

i = giaự trũ ban ủaàu

Leọnh S;

Taờng i

i <= nSẹ

vớ i n là giá trị kế t thú c

Trang 5

Nhaọp (n)

i = 1

S = 0 Nhaọp (xi)

III CáC NGôN NGữ LậP TRìNH & CHươNG TRìNH DịCH:

III.1 Ngô n ngữ lậ p trì nh:

III.1.1 Giới thiệ u: Con người muốn giao tiế p với má y tí nh phả i thông qua

ngôn ngữ Con người muốn má y tí nh thực hiệ n công việ c, phả i viế t cá c yê u cầ u

đ ư a cho má y bằ ng ngôn ngữ má y hiể u được Việ c viế t cá c yê u cầ u ta gọi là lậ p trì nh (programming) Ngôn ngữ dùng để lậ p trì nh được gọi là ngôn ngữ lậ p trì nh

Nế u ngôn ngữ lậ p trì nh gầ n với vấ n đề cầ n giả i quyế t, gầ n với ngôn ngữ tự nhiê n thì việ c lậ p trì nh sẽ đơn giả n hơn nhiề u Những ngôn ngữ lậ p trì nh có tí nh chấ t như trê n được gọi là ngôn ngữ cấ p cao Nhưng má y tí nh chỉ hiể u được ngôn ngữ riê ng củ a mì nh, đ ó là cá c chuỗ i số 0 vớ i 1 và như vậ y rõ rà ng là khó khă n cho lậ p trì nh viê n, vì nó khô ng gầ n gũ i vớ i con ngư ờ i

Hiệ n tạ i, ngô n ngữ lậ p trì nh đ ư ợ c chia ra là m cá c loạ i sau:

III.1.2 Phâ n loạ i ngô n ngữ lậ p trì nh:

- Ngô n ngữ má y (machine language)

Trang 6

- Hợ p ngữ (assembly language)

- Ngô n ngữ cấ p cao (higher-level language)

Do má y tí nh chỉ hiể u được ngôn ngữ má y, cho nê n một chương trì nh viế t trong ngô n ngữ cấ p cao phả i đ ư ợ c biê n dịch sang ngô n ngữ má y Cô ng cụ thự c hiệ n việ c biê n dịch đ ó đ ư ợ c gọ i là chư ơ ng trì nh dịch

III.2 Chươ ng trì nh dịch:

Chương trì nh dịch được chia ra là m 2 loạ i : trì nh biê n dịch (compiler) và trì nh thô ng dịch (interpreter)

III.2.1 Trì nh biê n dịch: là việ c chuyể n một chương trì nh trong ngôn ngữ

cấ p cao nà o đ ó (chư ơ ng trì nh nguồn) sang ngôn ngữ má y (chương trì nh đí ch)

- Thời gian chuyể n một chương trì nh nguồn sang chương trì nh đí ch được

Hì nh I.1 Chư ơ ng trì nh thự c thi theo cơ chế dịch củ a trì nh biê n dịch

III.2.2 Trì nh thô ng dịch: quá trì nh dịch và thự c thi xả y ra cù ng 1 thờ i

gian, dịch đ ế n đ â u thi hà nh lệ nh đ ế n đ ó

Chửụng trỡnh nguoàn Chửụng trỡnhthoõng dũch Keỏt quaỷ

Dửừ lieọu

Hì nh I.2 Chư ơ ng trì nh thự c thi theo cơ chế dịch củ a trì nh thô ng dịch

Trang 7

CHươNG 2 LàM QUEN VớI NGôN NGữ C

* Giới thiệu ngôn ngữ C

Ngôn ngữ C do Dennis Ritchie là người đầ u tiê n đề xuấ t, đ∙ thiế t kế và cà i

đ ặ t C trong mô i trư ờ ng UNIX Nó có nguồ n gố c từ ngô n ngữ BCPL do Martin Richards đ ư a ra và o nă m 1967 và ngô n ngữ B do Ken Thompson phá t triể n từ ngô n ngữ BCPL nă m 1970 khi viế t hệ đ iề u hà nh Unix

C là ngôn ngữ lậ p trì nh đa dụng, cấ p cao nhưng lạ i có khả nă ng thực hiệ n cá c thao tá c như của ngôn ngữ Assembly Vì thế ngôn ngữ C nhanh chóng được

cà i đặ t, sử dụng trê n má y vi tí nh và đ∙ trở thà nh một công cụ lậ p trì nh khá mạ nh, hiệ n nay đang có khuynh hướng trở thà nh một ngôn ngữ lậ p trì nh chí nh cho má y

vi tí nh trê n thế giớ i

* Đặ c điể m ngô n ngữ C

Ngô n ngữ C có nhữ ng đ ặ c đ iể m cơ bả n sau :

- Tí nh cô đ ọ ng (compact) : Ngô n ngữ C chỉ có 32 từ khoá chuẩ n, 40 toá n

tử chuẩ n mà hầ u hế t đ ư ợ c biể u diể n bở i cá c d∙ y ký tự ngắ n gọ n

- Tí nh cấ u trúc (structured) : Ngôn ngữ C có một tậ p hợp cá c phá t biể u lậ p trì nh cấ u trú c như phá t biể u quyế t đ ịnh hoặ c lặ p Do đ ó , nó cho phép chú ng ta viế t chư ơ ng trì nh có tổ chứ c và dể hiể u

- Tí nh tư ơ ng thí ch (compactable) : Ngô n ngữ C có bộ lệ nh tiề n xử lý và cá c thư việ n chuẩ n là m cho cá c chương trì nh viế t bằ ng ngôn ngữ C có thể tương thí ch khi chuyể n từ má y tí nh nà y sang má y tí nh kiể u hoà n toà n khá c

- Tí nh linh đ ộ ng (flexible) : Ngôn ngữ C là một ngôn ngữ rấ t linh động về ngữ phá p, nó có thể chấ p nhậ n rấ t nhiề u cá ch thể hiệ n mà không có ở ngôn ngữ khá c như Pascal, nó giú p cho kí ch thư ớ c m∙ lệ nh có thể thu gọn lạ i để chương trì nh thự c thi nhanh chó ng hơ n

- Biê n dịch : Ngô n ngữ C đ ư ợ c biê n dịch bằ ng nhiề u bư ớ c và cho phép biê n dịch nhiề u tậ p tin chương trì nh riê ng rẽ thà nh cá c tậ p tin đối tượng (object)

và nối cá c đối tượng đó lạ i với nhau (link) thà nh một chương trì nh thực thi thống nhấ t

Trang 8

- Ch­ ¬ ng tr× nh C bao giê cò ng cã mé t hay nhiÒ u hµ m, trong ® ã cã mé t

hµ m chÝ nh b¾ t bué c ph¶ i cã lµ hµ m main() §© y chÝ nh lµ hµ m ®­îc thùc hiÖ n

® Ç u tiª n trong ch­ ¬ ng tr× nh

- CÆ p dÊ u “{ } “ ® Ó x¸ c ® Þnh mé t khè i lÖ nh

- Hµ m printf(“ Chao cac ban \n”) lµ hµ m chuÈ n cñ a C dï ng ® Ó xuÊ t c© u th« ng b¸ o “Chao cac ban” ra mµ n h× nh Ký tù “\n“ lµ ký tù ® Æ c biÖ t dï ng ® Ó xuè ng dßng

- DÊ u “;” ® Ó chÊ m dø t mé t lÖ nh

- Ch­ ¬ ng tr× nh C cã ph© n biÖ t ch÷ th­ ê ng ví i ch÷ hoa §a sè c¸ c tõ kho¸

cñ a C ® ­ î c viÕ t b» ng ch÷ th­ ê ng, cßn mé t sè Ý t ® ­ î c viÕ t b» ng ch÷ hoa mµ ta ph¶ i tu© n thñ chÆ t chÏ , nÕ u kh« ng th× ch­ ¬ ng tr× nh dÞch sÏ kh« ng hiÓ u

Trang 9

Ví dụ 2 : Tư ơ ng tự như ví dụ 1 như ng viế t cá ch khá c :

#include <stdio.h>

#define max 50 /*Tiề n xử lý , đ ịnh nghĩ a max =50*/

void main()

for (n=10; n<=max; n++) /*Lặ p từ 10 đ ế n 50 bằ ng for*/

printf(“%3d \t %5d\n”,n,n*n); /*in n và n2 dạ ng 5d là nă m chữ số */

Ví dụ 3 : Chương trì nh in lũy thừa 2, 3, 4, 5; có dùng hà m để tí nh lũy thừa :

#include <stdio.h>

#define max 50 /*Tiề n xử lý , đ ịnh nghĩ a max =50*/

float luythua(int n, int m) /*Hà m luythua vớ i 2 thô ng số */

{ float s=1; /*Khai bá o và khở i tạ o biế n s*/

Hà m printf() sẽ xem xét chuỗi-địnhdạ ng, lấ y giá trị cá c tham số (nế u cầ n)

đ ể đ ặ t và o theo yê u cầ u củ a chuỗ i-đ ịnhdạ ng và gở i ra thiế t bị chuẩ n

Chuỗ i-đ ịnhdạ ng là mộ t chuỗ i ký tự , trong đ ó có nhữ ng ký tự xuấ t ra nguyê n vẹ n hoặ c xuấ t ở dạ ng đặ c biệ t, và có thể có những chuỗi điề u khiể n

cầ n lấ y giá trị củ a cá c tham số đ ể thay và o đ ó khi in ra

Trang 10

\xdd XuÊ t ký tù cã m∙ ASCII d¹ ng Hex lµ dd

\ddd XuÊ t ký tù cã m∙ ASCII d¹ ng Dec lµ

s Chuç i ký tù tË n cï ng b» ng ‘\0’

Trang 11

Flag : D¹ ng ® iÒ u chØ nh

nÕ u kh« ng cã in d÷ liÖ u ra ví i canh ph¶ i

- in d÷ liÖ u ra ví i canh tr¸ i + Lu« n b¾ t ® Ç u sè b» ng + hay -

0 : ChÌ n thª m 0 ® ø ng tr­ í c gi¸ trÞ >0 x,X : ChÌ n thª m 0x hay 0X ® ø ng tr­ í c sè nµ y e,E,f : Lu« n lu« n cã dÊ u chÊ m thË p ph© n

l Tham sè lµ long int (d,i,o,u,x,X)

double (e,E,f,g,G)

VÝ dô 1: char c=‘A’;

char s[]=“Blue moon!” ;

Trang 13

I.2 KiÓ u d÷ liÖ u c¬ b¶ n

unsigned char Ký tù kh« ng dÊ u 1 byte 0→255

unsigned short Sè nguyª n ng¾ n kh«ng dÊ u 2 bytes 0→65535

enum Sè nguyª n cã dÊ u 2 bytes -32768→32767

short int Sè nguyª n cã dÊ u 2 bytes -32768→32767

int Sè nguyª n cã dÊ u 2 bytes -32768→32767

unsigned int Sè nguyª n kh« ng dÊ u 2 bytes 0 → 65535

long Sè nguyª n dµ i cã dÊ u 4 bytes -2147483648 →

2147483647 unsigned long Sè nguyª n dµ i kh« ng dÊ u 4 bytes 0→4294967295

float Sè thù c ® é chÝ nh x¸ c ® ¬n 4 bytes 3.4 E-38→3.4 E+38 double Sè thù c ® é chÝ nh x¸ c kÐp 8 bytes 1.7 E-308 → 1.7

E+308 long double Sè thù c ® é chÝ nh x¸ c h¬ n

int = short int = short = signed int = signed short int

long int = long

signed long int = long

unsigned int = unsigned = unsigned short = unsigned short int

unsigned long int = unsigned long

Trang 14

I.3 Biế n

I.3.1 Tê n biế n : Tê n biế n là một chuỗi ký tự bắ t đầ u bằ ng ký tự chữ, ký tự

kế tiế p là ký tự chữ (dấ u gạ ch dưới “_” được xem là ký tự chữ) hoặ c số và không

Ví dụ :Hai biế n sau bị xem là cù ng tê n

bien_ten_dai_hon_32_ky_tu_dau_tien_1

bien_ten_dai_hon_32_ky_tu_dau_tien_2

I.3.2 Khai bá o biế n

Cá c biế n phả i đ ư ợ c khai bá o trư ớ c khi sử dụ ng nhằ m giú p cho chư ơ ng trì nh dịch có thể xử lý chú ng

Khai bá o biế n có dạ ng :

Kiể udữ liệ u tê nbiế n1 [,tenbiế n2 ] ;

Ví dụ : int a,b,c;

* Khai bá o và khở i tạ o biế n:

Kiể u dữ liệ u tê nbiế n = giá trị ;

I.3.3 Hà m nhậ p dữ liệ u chuẩ n

a) Hà m scanf()

Cú phá p: scanf(“chuỗi-địnhdạ ng“,điạ chỉ thamsố1, điạ chỉ thamsố2, )

- Chuỗ i-đ ịnhdạ ng củ a scanf() gồ m có ba loạ i ký tự :

+ Chuỗ i đ iề u khiể n + Ký tự trắ ng

+ Ký tự khá c trắ ng ! Chuỗ i đ iề u khiể n có dạ ng :

Trang 15

Vớ i type: xá c đ ịnh kiể u củ a biế n đ ịa chỉ tham số sẽ nhậ n giá trị nhậ p và o

Hà m scanf() chỉ nhậ n cho đủ width ký tự hoặ c cho đế n khi gặ p ký tự trắ ng

đầ u tiê n Nế u chuỗi nhậ p và o nhiề u hơn thì phầ n còn lạ i sẽ dà nh lạ i cho lầ n gọi scanf() kế tiế p

Lư u ý : Nế u scanf(“%ul”, &money) thì giá trị nhậ p và o sẽ không được lưu

trữ trong biế n money, như ng chư ơ ng trì nh dịch khô ng bá o lỗ i

Ví dụ 3: Nhậ p và o tê n và bị giớ i hạ n trong khoả ng [A-Z,a-z]

char name[20];

printf(“Name : ”) ; scanf(“%[A-Za-z]”,&name);

Trong trư ờ ng hợ p nà y, nế u ta gõ sai dạ ng thì name =””

! Ký tự trắ ng: nế u có trong chuỗi-dạ ng sẽ yê u cầ u scanf() bỏ qua một hay nhiề u ký tự trắ ng trong chuỗ i nhậ p và o Ký tự trắ ng là ký tự khoả ng trắ ng (‘ ‘), tab (‘\t’), xuố ng hà ng (‘\n’) Một ký tự trắ ng trong chuỗi-địnhdạ ng sẽ được hiể u

là chờ nhậ p đ ế n ký tự khá c trắ ng tiế p theo

Trang 16

Ví dụ 4: scanf(“%d “,&num);

Hà m scanf() cho ta nhậ p mộ t ký tự khá c trắ ng nữa thì mới thoá t ra Ký tự

đ ó sẽ nằ m trong vùng đệ m và sẽ được lấ y bởi hà m scanf() hoặ c gets() tiế p theo

! Ký tự khá c trắ ng: nế u có trong chuỗi-địnhdạ ng sẽ khiế n cho scanf() nhậ n

và o đ ú ng ký tự như thế

Ví dụ 5: scanf(%d/%d/%d”,&d,&m,&y);

Hà m scanf() chờ nhậ n một số nguyê n, cấ t và o d, kế đế n là dấ u ‘/’, bỏ dấ u

nà y đ i và chờ nhậ n số nguyê n kế tiế p đ ể cấ t và o m Nế u khô ng gặ p dấ u ‘/’ kế tiế p số nguyê n thì scanf() chấ m dứ t

Chú ý : Hà m scanf() đ òi hỏ i cá c tham số phả i là cá c địa chỉ của cá c biế n

hoặ c là mộ t con trỏ

* Toá n tử đ ịa chỉ & : Lấ y đ ịa chỉ củ a mộ t biế n

Ví dụ 6: int n; → biế n n

#include <stdio.h>

#include <conio.h>

void main()

{ char ch;

Trang 17

printf("\nBan nhap vao 1 chu cai tu a den e: ");

while ((ch=getche()) != 'd')

{ printf("\nXin loi, %c la sai roi",ch);

printf("\n Thu lai lan nua \n");

}

}

L­ u ý : Hµ m getch() cßn cho phÐp ta nhË p vµ o 1 ký tù më ré ng nh­ c¸ c phÝ m F1, F2, , c¸ c phÝ m di chuyÓ n cursor C¸ c phÝ m nµ y lu« n cã 2 bytes: byte thø nhÊ t b» ng 0, cßn byte 2 lµ m∙ scancode cñ a phÝ m ® ã §Ó nhË n biÕ t ta ® ∙ gâ phÝ m ký tù hay phÝ m më ré ng, ta cã ch­ ¬ ng tr× nh sau:

F4 62 F5 63 F6 64 F7 65 F8 66 F9 67 F10 68 Home 71

Trang 18

% 77 PgUp 73 PgDn 81

End 79 Ins 82 Del 83 Bả ng m∙ scancode củ a cá c phí m mở rộ ng

c Hà m kbhit(): Hà m int kbhit() sẽ kiể m tra xem có phí m nà o đ ư ợ c gõ

và o hay không Nế u có, hà m kbhit sẽ trả về một số nguyê n khá c 0, và ngược lạ i

Ký tự mà ta nhậ p và o qua hà m kbhit() có thể lấ y đ ư ợ c qua hà m getch() hoặ c getche()

Ví dụ :

void main()

{

printf("Press any key to continue:");

while (!kbhit()) /* do nothing */ ;

456789L -1234L

- Cá c hằ ng số nguyê n dương lớn hơn long sẽ được lưu trữ theo kiể u double

- Mộ t hằ ng số đ ư ợ c lư u trữ theo dạ ng long nế u theo số đ ó có ký tự l (L),

Trang 19

dạ ng unsigned nế u sau đó có chữ u (U), dạ ng thậ p lục phâ n nế u trước số

c Hằ ng chuỗ i : Là mộ t chuỗ i ký tự nằ m trong hai dấ u nhá y kép “ “

Ví dụ : “Day la mot chuoi”

“Hang chuoi co ky tu đ ạ c biệ t như \ \n \248”

d Hằ ng biể u thứ c : Là mộ t biể u thứ c mà trong đ ó cá c toá n hạ ng đề u là

cá c hằ ng Khi đó chương trì nh dịch sẽ tí nh toá n biể u thức trước, và kế t quả được lư u trữ thẳ ng bằ ng mộ t hằ ng số tư ơ ng đ ư ơ ng

Ví dụ : 8*20-13 → kế t quả lư u trữ là 173

Trang 20

‘a -’A’ → “ lµ 97-65 = 32

I.4.2 Khai b¸ o h» ng:

Có ph¸ p: const tª nh» ng = biÓ uthø c;

VÝ dô : const MAX = 50;

a PhÐp to¸ n hai to¸ n h¹ ng : +, -, *, /, %

+, -, * char, int, long, float,

double

KiÓ u cñ a to¸ n h¹ ng cã kiÓ u cao nhÊ t

/ nguyª n/nguyª n KiÓ u nguyª n vµ lµ phÐp chia nguyª n thù c(nguyª n)/thù c

Trang 21

b PhÐp to¸ n mé t to¸ n h¹ ng : phÐp t¨ ng ++, phÐp gi¶ m

a hoÆ c a ⇔ a = a-1

Chó ý : Tuy nhiª n a++ sÏ kh¸ c ++a khi chó ng ® ø ng trong biÓ u thø c (cã

phÐp g¸ n)

a++ : T¨ ng a sau khi gi¸ trÞ cñ a nã ® ­ î c sö dô ng

++a : T¨ ng a tr­ í c khi gi¸ trÞ cñ a nã ® ­ î c sö dô ng

Trang 22

C¸ c phÐp g¸ n phø c hî p : += , -= , *= , /= , %= , <<= , >>=

VÝ dô :n = n*(10+x) ⇔ n *= (10 +x)

<< : lµ phÐp dÞch chuyÓ n bit qua tr¸ i

>> : lµ phÐp dÞch chuyÓ n bit qua ph¶ i

I.5.4 PhÐp to¸ n quan hÖ :

printf(“Ch­ ¬ ng tr× nh t× m sè lí n nhÊ t trong 3 sè ”);

Trang 23

B¶ ng ch© n trÞ:

false true false

true true true

false true true

if ((ch> =‘a’) and (ch< =‘z’)) or ((ch> =‘A’) and (ch< =‘Z’))

printf(“%c lµ chu cai \n”,ch);

Trang 24

VÝ dô : A = i>= MAX ? 1: 0;

printf (“ max (a,b) = %d “, (a>b) ? a:b);

lower = (c > = ‘A’ && c< = ‘Z’) ? c - ‘A’ + ‘a’ :c;

I.5.8 To¸ n tö trª n bit (bit wise) :

dÞch tr¸ i << nh© n 2 dÞch ph¶ i >> chia 2

Trang 25

VÝ dô 1:

void main()

{ unsigned x1; x2;

printf (“\n cho 2 sè hex(2 sè ) “);

scanf (“%x %x “, &x1, &x2);

printf (“% 02x & % 02x = % 02x\n”, x1, x2, x1& x2);

Trang 26

2 PhÐp OR dï ng ® Ó bË t c¸ c bit cÇ n thiÕ t lª n cò ng nhê vµ o mé t mÆ t n¹ Ch¼ ng h¹ n nh­ ta muè n bË t bit thø 7 cñ a biÕ n ch (unsigned char ch) lª n 1:

ch = ch | 0x80;

VÝ dô 3:

void main()

{ unsigned char x1,x2;

printf (“\n cho 2 sè hex (ff hay nhá h¬ n) :”);

scanf (“%x %x”, &x1, &x2);

KÕ t qu¶ = 0x0324 → 804 nghÜ a lµ 201* 4

VÝ dô 6:

void main()

{ unsigned char x1, x2 ;

printf (“ nhË p 1 sè hex < = ff vµ sè bit : “);

scanf ( %x %d “, &x1, &x2);

printf (“ %02x >> %d = %02x \n”, x1, x2, x1>> x2);

}

Chó ý : Trong phÐp dÞch ph¶ i C lµ m theo 2 c¸ ch kh¸ c nhau tï y thué c vµ o

Trang 27

kiÓ u d÷ liÖ u cñ a to¸ n h¹ ng bª n tr¸ i

- NÕ u to¸ n h¹ ng bª n tr¸ i kiÓ u unsigned th× phÐp dÞch sÏ ®iÒ n 0 vµ o c¸ c bit

bª n tr¸ i

- NÕ u to¸ n h¹ ng bª n tr¸ i kiÓ u signed th× phÐp dÞch sÏ ®iÒ n bit dÊ u vµ o c¸ c bit bª n tr¸ i

VÝ dô 7: unsigned int num;

num = 39470; // 9A2E hexa num =

printf ("Chuong trinh doi so hexa sang nhi phan\n");

printf ("Nhap vao so hexa :");

Trang 29

* Sự chuyể n kiể u bắ t buộ c:

Trong C có 2 trư ờ ng hợ p chuyể n kiể u: chuyể n kiể u tự đ ộ ng và chuyể n kiể u bắ t buộ c

Chuyể n kiể u bắ t buộc: được á p dụng khi chuyể n kiể u tự động không được

f= (double) a/ (double)b // kế t quả f= 100.0 / 6.0= 16.666

* Mức độ ưu tiê n của cá c phép toá n:

Trang 30

char chuỗ i[50];

* Lưu ý : Tấ t cả cá c chuỗi đề u được kế t thúc bằ ng ký tự NULL (\0) Do đó,

nế u chuỗ i dà i 50 thì ta chỉ có thể chứ a tố i đ a 49 ký tự

I.6.2 Khở i đ ộ ng trị:

char chuỗ i[ ] = {‘A’, ‘N’, ‘H’, ‘ \0’};

char chuỗ i[ ] = "ANH";

I.6.3 Nhậ p / xuấ t chuỗ i:

Trang 31

// chuỗ i = “Nguyễ n” vì hà m scanf cắ t khoả ng trắ ng

- Khi dù ng hà m gets trong chư ơ ng trì nh thì khô ng nê n dù ng hà m scanf ở

bấ t kì đâ u dù rằ ng dùng hà m scanf để nhậ p số mà ta nê n dùng hà m gets và hà m atoi, atof đ ể nhậ p số

Vì :

scanf(“%d”, &n); // ta nhậ p số 5 ↵

gets (chuỗ i); // lú c nà y chuỗ i = ““ (chuỗ i rỗ ng)

I.6.4 Hà m chuyể n đ ổ i số sang chuỗ i và ngượ c lạ i

số int = atoi (chuỗ isố ) // chuyể n chuỗ i số sang số nguyê n

số f = atof (chuỗ isố ) // chuyể n chuỗ i số sang số thự c

* Hai hà m nà y nằ m trong < stdlib h >

I.6.5 Cá c hà m về chuỗ i: (# include < string h> )

quả bằ ng 0 Nế u chuỗ i S1< S2 kế t quả là â m, nế u chuỗ i S1> S2 kế t quả > 0

hay chữ hoa

nhau

- int strnicmp(S1, S2, n): chỉ so sá nh n ký tự đ ầ u củ a 2 chuỗ i S1, S2 vớ i

nhau, khô ng phâ n biệ t chữ thư ờ ng, chữ hoa

- strcpy(dest, source): chép chuỗ i từ nguồ n source sang đ í ch dest

Ví dụ : char string[10];

char *str1 = "abcdefghi";

strcpy(string, str1);

printf("%s\n", string); // "abcdefghi"

- strncpy(dest, source, n): chép chuỗ i từ nguồ n sang đ í ch vớ i nhiề u nhấ t

là n ký tự

Ví dụ :

char string[10];

char *str1 = "abcdefghi";

strncpy(string, str1, 3); // string = "abcx1zwe12"

string[3] = '\0'; // Đặ t ký tự kế t thú c chuỗ i và o cuố i chuỗ i printf("%s\n", string); // "abc"

- strcat(dest, src): nố i chuỗ i src và o sau chuỗ i dest Chiề u dà i củ a chuỗ i

kế t quả bằ ng strlen(dest) + strlen(src)

Trang 32

VÝ dô :

char destination[25];

char *blank = " ", *c = "C++", *turbo = "Turbo";

strcpy(destination, turbo); // destination = "Turbo"

strcat(destination, blank); // destination = "Turbo "

strcat(destination, c); // destination = "Turbo C++"

- strncat(dest, src, n): nè i nhiÒ u nhÊ t lµ n ký tù cñ a src vµ o cuè i chuç i

dest, sau ® ã thª m ký tù null vµ o cuè i chuç i kÕ t qu¶

printf("%s\n", destination); // destination = "United State"

- char * strchr(s, ch): tr¶ vÒ ® Þa chØ cñ a ký tù ch ® Ç u tiª n cã trong chuçi

- Kh« ng ® ­ î c so s¸ nh 2 chuç i b» ng c¸ c to¸ n tö quan hÖ (S1== S2, S1>S2, S1>= S2), mµ ph¶ i dï ng hµ m strcmp(S1,S2)

Trang 33

Ví dụ : Viế t chư ơ ng trì nh tì m kiế m 1 từ trong 1 câ u

II Các cấu trúc điều khiển trong C:

Ngôn ngữ C là ngôn ngữ lậ p trì nh cấ p cao có cấ u trúc, gồm: cấ u trúc tuầ n tự, chọ n, và lặ p

II.1 Cấ u trúc tuầ n tự (Sequence) :

Cá c lệ nh trong chư ơ ng trì nh đ ư ợ c thự c hiệ n tuầ n tự từ lệ nh nà y đế n lệ nh khá c cho đ ế n khi hế t chư ơ ng trì nh

Ví du : Viế t chương trì nh tí nh và in ra diệ n tí ch của hai đường tròn bá n kí nh

Trang 34

printf ("Dien tich hinh tron 2 = %.2f\n",PI*r2*r2);

hieuso = PI*r1*r1 - PI*r2*r2;

printf ("Hieu so dien tich 2 hinh tron = %.2f\n",hieuso);

getch();

}

II.2 CÊ u tróc chä n

Ký hiÖ u : ® k lµ biÓ u thø c Logic

S1, S2 lµ c¸ c ph¸ t biÓ u hay 1 nhã m c¸ c ph¸ t biÓ u (lÖ nh)

YES

Chó ý : C¸ c lÖ nh if else lå ng nhau

if (® k1) S1; else if (® k2) S2; else if (® k3) S3; else S4;

VÝ dô 1: T× m max(a,b,c)

Trang 35

else if (x>=2) fx= 4;

else { printf("\n Khong xac dinh") ; exit(0) ;}

II.2.2 Lệ nh chọ n lựa: switch_case

- (biể uthứ c) có kế t quả nguyê n

- Hằ ng: ký tự , số nguyê n, biể u thứ c có số nguyê n

- Nế u kế t quả bằ ng hằ ng I nà o đó thì nó sẽ là m lệ nh Si và tuầ n tự thực hiệ n

hế t cá c lệ nh ở dư ớ i cho đ ế n khi hế t lệ nh switch

- Muố n ngắ t sự tuầ n tự trê n thì phả i dù ng lệ nh break

Ví dụ : Nhậ p 1 ký tự số dạ ng hex đ ổ i ra số thậ p phâ n

#include <stdio.h>

#include <conio.h>

void main()

Trang 37

float num1, num2;

char op;

clrscr();

printf ("Go vao so, toan tu, so \n");

scanf("%f %c %f", &num1, &op, &num2);

Chó ý : Trong phÇ n th© n lÖ nh ph¶ i cã biÕ n ® iÒ u khiÓ n vßng lÆ p

VÝ dô 1: ViÕ t ch­ ¬ ng tr× nh in ra b¶ ng m∙ ASCII

while (n <= 255)

Trang 38

{ printf(“%c cã m∙ ASCII lµ %d”, n, n);

n ++

} }

VÝ dô 2: NhË p mé t chuç i ký tù , vµ kÕ t thó c nhË p b» ng ESC

VÝ dô 1: ViÕ t ch­ ¬ ng tr× nh in b¶ ng m∙ ASCII

#include <stdio.h>

Trang 39

main ()

do { printf(“%c cã m∙ ASCII %d\n”, n, n);

VÝ dô 3: ViÕ t ch­ ¬ ng tr× nh in ra b¶ ng cö u ch­ ¬ ng b» ng vßng for

VÝ dô 4: ViÕ t ch­ ¬ ng tr× nh tÝ nh n giai thõ a

Trang 40

* Ph¸ t biÓ u break, continue, goto:

1 Break:

LÖ nh break cho phÐp tho¸ t ra sí m khá i vßng lÆ p ( whiledo , for, dowhile),

lÖ nh switch

2 LÖ nh continue:

LÖ nh continue chØ dï ng trong vßng lÆ p lµ m cho ch­ ¬ ng tr× nh nh¶ y t¾ t vÒ

® iÒ u kiÖ n kiÓ m tra cñ a vßng lÆ p ® Ó b¾ t ® Ç u mé t vßng lÆ p mí i

VÝ dô : ViÕ t ch­ ¬ ng tr× nh nhË p mé t c© u ch÷ th­ ê ng kÕ t thó c b» ng dÊ u chÊ m, xuÊ t ra b» ng ch÷ hoa

Ngày đăng: 05/03/2014, 19:27

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w