BÀI 1. MÁY TÍNH
VÀ CHƯƠNG TRÌNH MÁY TÍNH
Câu hỏi và bài tập
1. Khi soạn thảo văn bản trên máy tính và yêu cầu chương trình tìm kiếm một cụm từ trong văn bản và thay thế bằng một cụm từ khác, thực chất ta đã yêu cầu máy tính thực hiện những lệnh gì? Có thể thay đổi thứ tự những lệnh đó mà vẫn không thay đổi kết quả được không?
2. Trong ví dụ về rô-bốt, nếu thay đổi thứ tự của hai lệnh trong chương trình, rô-bốt có thực hiện được công việc nhặt rác không? Hãy xác định vị trí mới của rô-bốt sau khi thực hiện xong lệnh “Hãy quét nhà” và đưa ra các lệnh để rô-bốt trở lại vị trí ban đầu của mình.
3. Hãy cho biết lí do cần phải viết chương trình để điều khiển máy tính.
4. Tại sao người ta phải tạo ra các ngôn ngữ lập trình trong khi có thể điều khiển máy tính bằng ngôn ngữ máy?
5. Chương trình dịch làm gì?
6. Hãy cho biết các bước cần thực hiện để tạo ra các chương trình máy tính.
r×nh tÝnh diÖn tÝch vµ chu vi ®êng trßn cã b¸n kÝnh r, trong ®ã r lµ mét sè nguyªn d¬ng ®îc nhËp tõ bµn phÝm. Híng dÉn tr¶ lêi XÐt vÒ mÆt lËp tr×nh, biÕn ®¹i lîng ®îc dïng ®Ó lu tr÷ d÷ liÖu vµ d÷ liÖu ®îc biÕn lu tr÷ cã thÓ thay ®æi trong khi thùc hiÖn ch¬ng tr×nh. XÐt vÒ mÆt lu tr÷ d÷ liÖu, cã thÓ xem biÕn lµ “tªn” cña mét vïng nhí ®îc dµnh s½n ®Ó lu d÷ liÖu trong suèt qu¸ tr×nh thùc hiÖn ch¬ng tr×nh. G¸n gi¸ trÞ cho mét biÕn vÒ thùc chÊt lµ lu d÷ liÖu t¬ng øng vµo vïng nhí ®îc ®Æt tªn vµ dµnh riªng cho biÕn. ViÖc thùc hiÖn c¸c tÝnh to¸n vµ xö lÝ víi biÕn cã nghÜa lµ thùc hiÖn tÝnh to¸n vµ xö lÝ víi d÷ liÖu ®îc g¸n ®ã. Gi¶ sö X ®îc khai b¸o lµ biÕn víi kiÓu d÷ liÖu sè nguyªn vµ X ®îc g¸n d÷ liÖu lµ sè 5. Sau khi khai b¸o, ch¬ng tr×nh sÏ dµnh riªng mét vïng nhí nµo ®ã cho biÕn X, vµ khi g¸n 5 cho X th× vïng nhí ®ã lu d÷ liÖu 5. LÖnh ghi X ra mµn h×nh cã nghÜa lµ ghi sè 5 ra mµn h×nh. Lu ý. Khi mét vïng nhí ®îc khai b¸o ®Ó lu d÷ liÖu lµm gi¸ trÞ cña mét biÕn, vïng nhí ®ã sÏ kh«ng ®îc phÐp sö dông vµo môc ®Ých kh¸c. Do vËy, mét trong nh÷ng kÜ n¨ng lËp tr×nh lµ sö dông cµng Ýt biÕn cµng tèt, nhÊt lµ trong nh÷ng trêng hîp viÖc sö dông bé nhí bÞ h¹n chÕ. Nhng víi c«ng nghÖ hiÖn nay, bé nhí m¸y tÝnh ®· cã dung lîng rÊt lín nªn vÊn ®Ò h¹n chÕ sö dông biÕn trong ch¬ng tr×nh ®· kh«ng cßn lµ vÊn ®Ò cÊp thiÕt. ViÖc khai b¸o biÕn gåm: Khai b¸o tªn biÕn vµ khai b¸o kiÓu d÷ liÖu cña biÕn. Khi khai b¸o biÕn, ngoµi viÖc tªn biÕn ®îc ®a vµo danh s¸ch c¸c ®èi tîng qu¶n lÝ, m¸y tÝnh (th«ng qua ch¬ng tr×nh dÞch) sÏ x¸c ®Þnh kiÓu cña biÕn vµ dµnh mét vïng nhí cã ®é lín thÝch hîp víi ph¹m vi kiÓu cña biÕn ®Ó lu gi¸ trÞ cña biÕn. VÝ dô, còng ®Ó lu c¸c gi¸ trÞ lµ sè nguyªn, khi khai b¸o biÕn kiÓu byte, m¸y tÝnh chØ dµnh vïng nhí cã ®é lín 1 byte, nhng khi khai b¸o biÕn kiÓu nguyªn, m¸y tÝnh sÏ dµnh vïng nhí cã ®é lín 2 byte, hoÆc vïng nhí 6 byte ®îc dµnh cho biÕn ®îc khai b¸o víi kiÓu sè thùc,... Nhê thÕ viÖc sö dông bé nhí sÏ hiÖu qu¶ h¬n. Ngoµi ra m¸y tÝnh sÏ biÕt ¸p dông c¸c phÐp to¸n thÝch hîp ®èi víi gi¸ trÞ cña biÕn. §¸p ¸n: a) Hîp lÖ; b) Kh«ng hîp lÖ; c) Hîp lÖ; d) Kh«ng hîp lÖ. MÆc dï ®Òu cïng ph¶i khai b¸o tríc khi cã thÓ sö dông trong ch¬ng tr×nh, sù kh¸c nhau gi÷a biÕn vµ h»ng lµ ë chç gi¸ trÞ cña h»ng kh«ng thay ®æi trong suèt qu¸ tr×nh thùc hiÖn ch¬ng tr×nh, cßn gi¸ trÞ cña biÕn th× cã thÓ thay ®æi ®îc t¹i tõng thêi ®iÓm thùc hiÖn ch¬ng tr×nh. Kh«ng thÓ g¸n l¹i gi¸ trÞ 3.1415 cho Pi trong phÇn th©n ch¬ng tr×nh v× gi¸ trÞ cña h»ng kh«ng thay ®æi trong suèt qu¸ tr×nh thùc hiÖn ch¬ng tr×nh. a) Hîp lÖ; b) Kh«ng hîp lÖ v× tªn biÕn kh«ng hîp lÖ; c) Kh«ng hîp lÖ v× h»ng ph¶i ®îc cho gi¸ trÞ khi khai b¸o; d) c) Kh«ng hîp lÖ v× biÕn kh«ng ®îc g¸n gi¸ trÞ khi khai b¸o, c¸ch g¸n gi¸ trÞ còng kh«ng ®óng có ph¸p. C¸c lçi trong ch¬ng tr×nh: (1) Thõa dÊu b»ng ë dßng 1 (chØ cÇn dÊu hai chÊm); (2) Thõa dÊu hai chÊm ë dßng 2 (víi h»ng chØ cÇn dÊu b»ng); (3) ThiÕu dÊu chÊm phÈy ë dßng 4; (4) Khai b¸o kiÓu d÷ liÖu cña biÕn b kh«ng phï hîp: Khi chia hai sè nguyªn, kÕt qu¶ lu«n lu«n lµ sè thùc, cho dï cã chia hÕt hay kh«ng. Do ®ã cÇn ph¶i khai b¸o biÕn b lµ biÕn cã kiÓu d÷ liÖu sè thùc. C¸ch khai b¸o hîp lý: C¸c biÕn a vµ h lµ kiÓu sè nguyªn; biÕn S: kiÓu sè thùc. C¶ bèn biÕn a, b, c vµ d lµ c¸c kiÓu sè nguyªn. CÇn sö dông c¸c biÕn sau ®©y víi mçi häc sinh trong líp: Ten lµ biÕn kiÓu x©u, Diem lµ biÕn kiÓu sè nguyªn vµ Trungbinh lµ biÕn kiÓu sè thùc. Ch¬ng tr×nh Pascal cã thÓ nh sau ®©y: uses crt; var r: integer; C,S: real; begin clrscr; write('Nhap ban kinh r = '); readln(r); C:=2*Pi*r; S:=Pi*r*r; writeln(' Chu vi duong tron bang ',C:8:2); writeln('Dien tich hinh tron bang ',S:8:2); end. Bµi 5. Tõ BµI TO¸N §ÕN CH¦¥NG TR×NH C©u hái vµ bµi tËp H·y chØ ra INPUT vµ OUTPUT cña c¸c bµi to¸n sau: X¸c ®Þnh sè häc sinh trong líp cïng mang hä TrÇn. TÝnh tæng cña c¸c phÇn tö lín h¬n 0 trong d·y n sè cho tríc. T×m sè c¸c sè cã gi¸ trÞ nhá nhÊt trong n sè ®· cho. Gi¶ sö x vµ y lµ c¸c biÕn sè. H·y cho biÕt kÕt qu¶ cña viÖc thùc hiÖn thuËt to¸n sau: Bíc 1. x ¬ x + y Bíc 2. y ¬ x - y Bíc 3. x ¬ x - y Cho tríc ba sè d¬ng a, b vµ c. H·y m« t¶ thuËt to¸n gi¶i ghi kÕt qu¶ ba sè ®ã cã thÓ lµ ba c¹nh cña mét tam gi¸c hay kh«ng. Cho hai biÕn x vµ y. H·y m« t¶ thuËt to¸n ®æi gi¸ trÞ cña c¸c biÕn nãi trªn ®Ó x vµ y cã gi¸ trÞ t¨ng dÇn. Cho ba biÕn x, y vµ z. H·y m« t¶ thuËt to¸n ®æi gi¸ trÞ cña c¸c biÕn nãi trªn ®Ó x, y vµ z cã gi¸ trÞ t¨ng dÇn. H·y xem l¹i VÝ dô 5 ®Ó tham kh¶o. H·y m« t¶ thuËt to¸n tÝnh tæng c¸c phÇn tö cña d·y sè a1, a2,..., an cho tríc. H·y m« t¶ thuËt to¸n nhËp n sè a1, a2, ..., an tõ bµn phÝm vµ ghi ra mµn h×nh sè nhá nhÊt c¸c sè ®ã. Sè n còng ®îc nhËp tõ bµn phÝm. H·y m« t¶ thuËt to¸n gi¶i c¸c bµi to¸n sau: §Õm sè c¸c sè d¬ng trong d·y sè A = {a1, a2,.., an} cho tríc. H·y m« t¶ thuËt to¸n tÝnh tæng c¸c sè d¬ng trong d·y sè A = {a1, a2,..., an} cho tríc. Híng dÉn tr¶ lêi §¸p ¸n: INPUT: Danh s¸ch hä cña c¸c häc sinh trong líp. OUTPUT: Sè häc sinh cã hä TrÇn. INPUT: D·y n sè. OUTPUT: Tæng cña c¸c phÇn tö lín h¬n 0. INPUT: D·y n sè. OUTPUT: Sè c¸c sè cã gi¸ trÞ nhá nhÊt. Sau ba bíc, x cã gi¸ trÞ ban ®Çu cña y vµ y cã gi¸ trÞ ban ®Çu cña x, tøc gi¸ trÞ cña hai biÕn x vµ y ®îc ho¸n ®æi cho nhau. M« t¶ thuËt to¸n: INPUT: Ba sè d¬ng a >0, b >0 vµ c >0. OUTPUT: Th«ng b¸o “a, b vµ c cã thÓ lµ ba c¹nh cña mét tam gi¸c” hoÆc th«ng b¸o “a, b vµ c kh«ng thÓ lµ ba c¹nh cña mét tam gi¸c”. Bíc 1: TÝnh a + b. NÕu a + b ≤ c, chuyÓn tíi bíc 5. Bíc 2: TÝnh b + c. NÕu b + c ≤ c, chuyÓn tíi bíc 5. Bíc 3: TÝnh a + c. NÕu a + c ≤ b, chuyÓn tíi bíc 5. Bíc 4: Th«ng b¸o “a, b vµ c cã thÓ lµ ba c¹nh cña mét tam gi¸c” vµ kÕt thóc thuËt to¸n. Bíc 5: Th«ng b¸o “a, b vµ c kh«ng thÓ lµ ba c¹nh cña mét tam gi¸c” vµ kÕt thóc thuËt to¸n. Cã thÓ gi¶i bµi to¸n nµy b»ng c¸ch sö dông mét biÕn phô hoÆc kh«ng dïng biÕn phô. ThuËt to¸n 1. Sö dông biÕn phô z. INPUT: Hai biÕn x vµ y. OUTPUT: Hai biÕn x vµ y cã gi¸ trÞ t¨ng dÇn. Bíc 1: NÕu x ≤ y, chuyÓn tíi bíc 5. Bíc 2: z ¬ x. Bíc 3: x ¬ y. Bíc 4: y ¬ z. Bíc 5: KÕt thóc thuËt to¸n. ThuËt to¸n 2. Kh«ng sö dông biÕn phô (Xem Bµi tËp 2 ë trªn). INPUT: Hai biÕn x vµ y. OUTPUT: Hai biÕn x vµ y cã gi¸ trÞ t¨ng dÇn. Bíc 1: NÕu x ≤ y, chuyÓn tíi bíc 5. Bíc 2: x ¬ x + y. Bíc 3: y ¬ x - y. Bíc 4: x ¬ x - y. Bíc 5: KÕt thóc thuËt to¸n. Tríc hÕt, nÕu cÇn, ta ho¸n ®æi gi¸ trÞ hai biÕn x vµ y ®Ó chóng cã gi¸ trÞ t¨ng dÇn. Sau ®ã lÇn lît so s¸nh z víi x vµ z víi y, sau ®ã thùc hiÖn c¸c bíc ho¸n ®æi gi¸ trÞ cÇn thiÕt (xem l¹i VÝ dô 5 trong Bµi 5, SGK). INPUT: Ba biÕn x, y vµ z. OUTPUT: Ba biÕn x, y vµ z cã gi¸ trÞ t¨ng dÇn. Bíc 1: NÕu x ≤ y, chuyÓn tíi bíc 3. Bíc 2: z ¬ x, x ¬ y, y ¬ z. (Sau bíc nµy x vµ y cã gi¸ trÞ t¨ng dÇn.) Bíc 3: NÕu y ≤ z , chuyÓn tíi bíc 6. Bíc 4: NÕu z < x, t ¬ x , x ¬ z vµ z ¬ t, (víi t lµ biÕn trung gian) vµ chuyÓn ®Õn bíc 6. Bíc 5: t ¬ y , y ¬ z vµ z ¬ t. Bíc 6: KÕt thóc thuËt to¸n. ThuËt to¸n tÝnh tæng c¸c phÇn tö cña d·y sè A = {a1, a2,..., an} cho tríc. INPUT: n vµ d·y n sè a1, a2,..., an. OUTPUT: Tæng S = a1 + a2 +... + an. Bíc 1: S ¬ 0; i ¬ 0. Bíc 2: i ¬ i + 1. Bíc 3: NÕu i ≤ n, S ¬ S + ai vµ quay l¹i bíc 2. Bíc 4: Th«ng b¸o S vµ kÕt thóc thuËt to¸n. ThuËt to¸n t×m sè nhá nhÊt trong d·y n sè a1, a2, ..., an cho tríc. ThuËt to¸n nµy t¬ng tù nh thuËt to¸n t×m gi¸ trÞ lín nhÊt trong d·y n sè ®· cho (xem VÝ dô 6, Bµi 5). §iÒu kh¸c biÖt lµ thªm c¸c bíc nhËp sè n vµ d·y n sè a1, a2, ..., an. INPUT: n vµ d·y n sè a1, a2,..., an. OUTPUT: Min = Min{ a1, a2, ..., an} Bíc 1: NhËp n vµ d·y n sè a1, a2,..., an. Bíc 2: G¸n Min ¬ a1; i ¬ 1. Bíc 3: i ¬ i + 1. Bíc 4: NÕu i > n, chuyÓn ®Õn bíc 5. Bíc 5: NÕu ai < Min, g¸n Min ¬ ai råi quay l¹i bíc 3. Trong trêng hîp ngîc l¹i, quay l¹i bíc 3. Bíc 6: Ghi gi¸ trÞ Min ra mµn h×nh vµ kÕt thóc thuËt to¸n. a) §Õm sè c¸c sè d¬ng trong d·y sè A = {a1, a2,.., an} cho tríc. INPUT: n vµ d·y n sè a1, a2,..., an. OUTPUT: Soduong = Sè c¸c sè ai > 0. Bíc 1: G¸n Soduong ¬ 0. Bíc 2: i ¬ i + 1. Bíc 3: NÕu i > n, chuyÓn ®Õn bíc 5. Bíc 4: NÕu ai > 0, g¸n Soduong ¬ Soduong +1 råi quay l¹i bíc 2. Trong trêng hîp ngîc l¹i, quay l¹i bíc 2. Bíc 5: Th«ng b¸o gi¸ trÞ Soduong vµ kÕt thóc thuËt to¸n. b) TÝnh tæng c¸c sè d¬ng trong d·y sè A = {a1, a2,..., an} cho tríc. INPUT: n vµ d·y n sè a1, a2,..., an. OUTPUT: S = Tæng c¸c sè ai > 0 trong d·y a1, a2,..., an. Bíc 1: S ¬ 0; i ¬ 0. Bíc 2: i ¬ i + 1. Bíc 3: NÕu ai > 0, S ¬ S + ai; ngîc l¹i, gi÷ nguyªn S. Bíc 4: NÕu i ≤ n, vµ quay l¹i bíc 2. Bíc 5: Th«ng b¸o S vµ kÕt thóc thuËt to¸n. Bµi 6. C¢U LÖNH §IÒU KIÖN C©u hái vµ bµi tËp Em h·y nªu mét vµi vÝ dô vÒ c¸c ho¹t ®éng h»ng ngµy phô thuéc vµo ®iÒu kiÖn. H·y cho biÕt c¸c ®iÒu kiÖn hoÆc phÐp so s¸nh sau ®©y cho kÕt qu¶ ®óng hay sai: 123 lµ sè chia hÕt cho 3. NÕu ba c¹nh a, b vµ c cña mét tam gi¸c tháa m·n c2 > a2 + b2 th× tam gi¸c ®ã cã mét gãc tï (> 90o). 152 > 200. n! ≤ n2 víi mäi sè tù nhiªn n. x2 < 1. Hai ngêi b¹n cïng ch¬i trß ®o¸n sè. Mét ngêi nghÜ trong ®Çu mét sè tù nhiªn nhá h¬n 10. Ngêi kia ®o¸n xem b¹n ®· nghÜ sè g×. NÕu ®o¸n ®óng, ngêi ®o¸n sÏ ®îc céng thªm 1 ®iÓm, nÕu sai sÏ kh«ng ®îc céng ®iÓm. Lu©n phiªn nhau nghÜ vµ ®o¸n. Sau 10 lÇn, ai ®îc nhiÒu ®iÓm h¬n, ngêi ®ã sÏ th¾ng. H·y ph¸t biÓu c¸c ®iÒu kiÖn ë trß ch¬i lµ g×? Ho¹t ®éng nµo sÏ ®îc thùc hiÖn, nÕu ®iÒu kiÖn ®ã tho¶ m·n? Ho¹t ®éng nµo sÏ ®îc thùc hiÖn, nÕu ®iÒu kiÖn ®ã kh«ng tho¶ m·n? Mét trß ch¬i m¸y tÝnh rÊt høng thó ®èi víi c¸c em nhá lµ høng trøng. Mét qu¶ trøng r¬i tõ mét vÞ trÝ ngÉu nhiªn trªn cao. Ngêi ch¬i dïng c¸c phÝm mòi tªn ® hoÆc ¬ ®Ó ®iÒu khiÓn mét biÓu tîng chiÕc khay di chuyÓn theo chiÒu ngang ®Ó høng qu¶ trøng. NÕu høng trît, qu¶ trøng bÞ r¬i, vì vµ ngêi ch¬i tiÕp tôc di chuyÓn khay ®Ó høng qu¶ trøng kh¸c. §iÒu kiÖn ®Ó ®iÒu khiÓn chiÕc khay trong trß ch¬i lµ g×? Ho¹t ®éng nµo sÏ ®îc thùc hiÖn, nÕu ®iÒu kiÖn ®ã tho¶ m·n? Ho¹t ®éng nµo sÏ ®îc thùc hiÖn, nÕu ®iÒu kiÖn ®ã kh«ng tho¶ m·n? C¸c c©u lÖnh Pascal sau ®©y ®îc viÕt ®óng hay sai? if x:=7 then a=b; if x>5; then a:=b; if x>5 then; a:=b; if x>5 then a:=b; m:=n; if x>5 then a:=b; else m:=n; if n>0 then begin a:=0; m:=-1 end else c:=a; Sau mçi c©u lÖnh sau ®©y if (45 mod 3)=0 then X:=X+1; if X>10 then X:=X+1; gi¸ trÞ cña biÕn X sÏ lµ bao nhiªu, nÕu tríc ®ã gi¸ trÞ cña X b»ng 5? Gi¶ sö cÇn viÕt ch¬ng tr×nh nhËp mét sè tù nhiªn vµo m¸y tÝnh vµ ghi ra mµn h×nh kÕt qu¶ sè ®· nhËp lµ sè ch½n hay lÎ, ch¼ng h¹n “5 lµ sè lΔ, “8 lµ sè ch½n”. H·y m« t¶ c¸c bíc cña thuËt to¸n ®Ó gi¶i quyÕt bµi to¸n trªn vµ viÕt ch¬ng tr×nh Pascal ®Ó thùc hiÖn thuËt to¸n ®ã. ViÕt ch¬ng tr×nh nhËp sö dông hai biÕn X vµ Y ®Ó lu hai sè nhËp tõ bµn phÝm, sau ®ã ®æi gi¸ trÞ cña c¸c biÕn ®ã ®Ó X vµ Y cã gi¸ trÞ t¨ng dÇn (xem Bµi tËp 3, Bµi 5). H·y m« t¶ thuËt to¸n vµ viÕt ch¬ng tr×nh nhËp ba sè thùc a, b vµ c tõ bµn phÝm vµo m¸y tÝnh, sau ®ã s¾p xÕp vµ ghi c¸c sè ®ã ra mµn h×nh theo thø tù t¨ng dÇn (xem Bµi tËp 8 vµ thuËt to¸n trong VÝ dô 5, Bµi 5). H·y m« t¶ thuËt to¸n vµ viÕt ch¬ng tr×nh nhËp ba sè thùc a, b vµ c tõ bµn phÝm vµo m¸y tÝnh, sau ®ã kiÓm tra ba sè ®ã cã thÓ lµ c¸c c¹nh cña tam gi¸c ®Òu, tam gi¸c c©n hoÆc tam gi¸c vu«ng hay kh«ng vµ ghi kÕt qu¶ ra mµn h×nh (xem Bµi 3, Bµi thùc hµnh 4). Híng dÉn tr¶ lêi Cã thÓ nªu rÊt nhiÒu vµi vÝ dô vÒ c¸c ho¹t ®éng h»ng ngµy phô thuéc vµo ®iÒu kiÖn. Díi ®©y lµ mét sè vÝ dô: NÕu ®¹t ®iÓm tæng kÕt c¶ n¨m cao h¬n 8.5, em sÏ ®¹t danh hiÖu “Häc sinh giái”. NÕu kh«ng ®îc c¾m ®iÖn, m¸y tÝnh ®Ó bµn cña em sÏ kh«ng ho¹t ®éng ®îc. NÕu bÞ bÖnh, em (cÇn ph¶i) ®i ®Õn phßng kh¸m ®Ó b¸c sÜ kh¸m bÖnh. NÕu kh«ng ®îc tíi ®ñ níc ®óng thêi k× ph¸t triÓn, lóa sÏ kh«ng cho thu ho¹ch cao. §¸p ¸n: a) §óng; b) §óng; c) Sai; d) Sai; e) Sai, nÕu x ≥ 1. Gi¶ sö §iÓm_1 lµ sè ®iÓm cña ngêi thø nhÊt vµ §iÓm_2 lµ sè ®iÓm cña ngêi thø hai, ngoµi ra mét ngêi thø nhÊt trong ®Çu mét sè tù nhiªn n < 10. §iÒu kiÖn ë trß ch¬i lµ ngêi thø hai ®o¸n ®óng sè n. Khi ®ã §iÓm_2 ®îc céng thªm 1; ngîc l¹i, §iÓm_2 ®îc gi÷ nguyªn. T¬ng tù, nÕu ngêi thø hai nghÜ sè tù nhiªn m, vµ ®iÒu kiÖn thø hai lµ ngêi thø nhÊt ®o¸n ®óng sè m ®ã. Khi ®ã §iÓm_1 ®îc céng thªm 1; ngîc l¹i, §iÓm_1 ®îc gi÷ nguyªn. §iÒu kiÖn ë trß ch¬i lµ sau 10 lÇn, nÕu §iÓm_1 > §iÓm_2 th× ngêi thø nhÊt ®îc tuyªn bè th¾ng cuéc; ngîc l¹i, ngêi thø hai th¾ng. Trêng hîp §iÓm_1 = §iÓm_2 th× kh«ng cã ngêi th¾ng vµ ngêi thua. §iÒu kiÖn ®Ó ®iÒu khiÓn chiÕc khay trong trß ch¬i ngêi ch¬i nhÊn phÝm mòi tªn ® hoÆc ¬. NÕu ngêi ch¬i nhÊn phÝm ®, biÓu tîng chiÕc khay sÏ di chuyÓn sang ph¶i mét ®¬n vÞ kho¶ng c¸ch; nÕu phÝm ¬ ®îc nhÊn, biÓu tîng chiÕc khay sÏ di chuyÓn sang tr¸i. NÕu mét phÝm kh¸c ngoµi hai phÝm mòi tªn trªn ®îc nhÊn, chiÕc khay vÉn gi÷ nguyªn vÞ trÝ. §¸p ¸n: a) Sai (thõa dÊu hai chÊm); b) Sai (thõa dÊu chÊm ph¶y thø nhÊt); c) Sai (thõa dÊu chÊm ph¶y sau tõ then); d) §óng, nÕu phÐp g¸n m:=n kh«ng phô thuéc ®iÒu kiÖn x>5; ngîc l¹i, sai vµ cÇn ®a hai c©u lÖnh a:=b; m:=n; vµo gi÷a cÆp tõ khãa begin vµ end; e) Sai (thõa dÊu chÊm ph¶y thø nhÊt); f) §óng. a) V× 45 chia hÕt cho 3, ®iÒu kiÖn ®îc tháa m·n nªn gi¸ trÞ cña X ®îc t¨ng lªn 1, tøc b»ng 6; b) §iÒu kiÖn kh«ng ®îc tháa m·n nªn c©u lÖnh kh«ng ®îc thùc hiÖn, tøc X gi÷ nguyªn gi¸ trÞ 5. ThuËt to¸n: Bíc 1. NhËp sè n. Bíc 2. NÕu n chia hÕt cho 2, ghi ra mµn h×nh “n lµ sè ch½n”; ngîc l¹i, ghi ra mµn h×nh “n lµ sè lΔ. Bíc 3. KÕt thóc thuËt to¸n. Ch¬ng tr×nh Pascal: uses crt; var X,Y,Z: real; begin clrscr; write('Nhap so X = '); readln(Y); write('Nhap so Y = '); readln(Y); if X>Y then begin Z:=X; X:=Y; Y:=Z; writeln(X,’ ’,Y); readln end. ThuËt to¸n: Bíc 1. NhËp ba sè A, B vµ C. Bíc 2. NÕu A > B, X ¬ A, A ¬ B, B ¬ X. Bíc 3. NÕu C > A, X ¬ A, A ¬ C, C ¬ X. Bíc 4. NÕu C < B, X ¬ B, B ¬ C, C ¬ X. Bíc 5. Ghi gi¸ trÞ c¸c biÕn theo thø tù A, B vµ C vµ kÕt thóc thuËt to¸n. Ch¬ng tr×nh Pascal: uses crt; var A, B, C, X: integer; begin clrscr; write('Nhap so A: '); readln(A); write('Nhap so B: '); readln(B); write('Nhap so C: '); readln(C); if A>B then begin X:=A; A:=B; B:=X end; if C<A then begin X:=A; A:=C; C:=X end; if C<B then begin X:=B; B:=C; C:=X end; writeln(A,' ',B,' ',C); readln; end. ThuËt to¸n: Bíc 1. NhËp ba sè A, B vµ C. Bíc 2. NÕu A + B < C hoÆc B + C < A hoÆc C + A < B, th«ng b¸o A, B vµ C kh«ng ph¶i lµ ba c¹nh cña mét tam gi¸c vµ chuyÓn tíi bíc 5. Bíc 3. NÕu A2 + B2 = C hoÆc B2 + C2 = A2 hoÆc C2 + A2 = B, th«ng b¸o A, B vµ C lµ ba c¹nh cña mét tam gi¸c vu«ng vµ chuyÓn tíi bíc 5. Bíc 4. NÕu A = B vµ B = C, th«ng b¸o A, B vµ C lµ ba c¹nh cña mét tam gi¸c ®Òu; ngîc l¹i, nÕu A = B hoÆc B = C hoÆc A = C, th«ng b¸o A, B vµ C lµ ba c¹nh cña mét tam gi¸c c©n. Bíc 5. KÕt thóc thuËt to¸n. Ch¬ng tr×nh Pascal: program Sap_xep; uses crt; var A, B, C, X: integer; begin clrscr; write('Nhap so A: '); readln(A); write('Nhap so B: '); readln(B); write('Nhap so C: '); readln(C); if (A+B<C) or (B+C<A) or (A+C<B) then writeln('Day khong la ba canh cua mot tam giac') else if (A*A=B*B+C*C) or (B*B=A*A+C*C) or (C*C=A*A+B*B) then writeln('Day la ba canh cua tam giac vuong') else if (A=B) and(B=C) and (A=C) then writeln('Day la ba canh cua tam giac deu') else if (A=B) or (B=C) or (C=A) then writeln('Day la ba canh cua tam giac can') else writeln('Day chi la ba canh cua tam giac thuong'); readln; end. Bµi 7. C¢U LÖNH lÆp C©u hái vµ bµi tËp Cho mét vµi vÝ dô vÒ ho¹t ®éng ®îc thùc hiÖn lÆp l¹i trong cuéc sèng hµng ngµy! H·y m« t¶ c¸c bíc cña thuËt to¸n ®Ó vÏ h×nh ... a) vµ ... b) sau ®©y: H×nh ...a) H×nh ... b) Thao t¸c lÆp cÇn thùc hiÖn ®Ó cã c¸c h×nh trªn vµ ®iÒu kiÖn ®Ó kÕt thóc thao t¸c ®ã lµ g× H·y cho biÕt t¸c dông cña c©u lÖnh lÆp! Chóng ta nãi r»ng khi thùc hiÖn c¸c ho¹t ®éng lÆp, ch¬ng tr×nh kiÓm tra mét ®iÒu kiÖn. Víi lÖnh lÆp for := to do ; cña Pascal, ®iÒu kiÖn cÇn ph¶i kiÓm tra lµ g×? Ch¬ng tr×nh Pascal sau ®©y thùc hiÖn ho¹t ®éng nµo? var i: integer; begin for i:=1 to 1000 do; end. H·y m« t¶ thuËt to¸n ®Ó tÝnh tæng sau ®©y (n lµ sè tù nhiªn ®îc nhËp vµo tõ bµn phÝm): A = C¸c c©u lÖnh Pascal cã hîp lÖ kh«ng, v× sao? a) for i:=100 to 1 do writeln(’A’); b) for i:=1.5 to 10.5 do writeln(’A’); c) for i=1 to 10 do writeln(’A’); d) for i:=1 to 10 do; writeln(’A’); e) var x: real; for x:=1 to 10 do writeln(’A’); Mét sè ng«n ng÷ lËp tr×nh, vÝ dô Pascal, kh«ng cã s½n hµm tÝnh lòy thõa. H·y m« t¶ thuËt to¸n vµ sö dông c©u lÖnh lÆp víi sè lÇn x¸c ®Þnh tríc ®Ó viÕt ch¬ng tr×nh Pascal tÝnh lòy thõa bËc n cña sè nguyªn X. ViÕt ch¬ng tr×nh Pascal nhËp n sè nguyªn tõ bµn phÝm vµ ghi ra mµn h×nh sè lín nhÊt trong c¸c sè ®ã. Sè n còng ®îc nhËp vµo tõ bµn phÝm. (Xem m« t¶ thuËt to¸n trong VÝ dô 6, Bµi 5.) ViÕt ch¬ng tr×nh Pascal nhËp n sè nguyªn tõ bµn phÝm vµ ghi ra mµn h×nh sè c¸c sè d¬ng trong c¸c sè ®ã. Sè n còng ®îc nhËp vµo tõ bµn phÝm. (Xem Bµi tËp 5a, Bµi 5.) Híng dÉn tr¶ lêi Cã thÓ nªu rÊt nhiÒu vµi vÝ dô vÒ c¸c ho¹t ®éng lÆp. Díi ®©y lµ mét sè vÝ dô: Hµng ngµy em ®Æt ®ång hå b¸o thøc lóc 6 giê ®Ó dËy sím tËp thÓ dôc. Hµng ngµy (hoÆc hµng tuÇn) b¸c l¸i xe kh¸ch l¸i xe ®Ó chuyªn chë hµnh kh¸ch xuÊt ph¸t tõ mét thêi gian vµ ®Þa ®iÓm nhÊt ®Þnh vµ ®i theo mét tuyÕn ®êng ®· ®îc x¸c ®Þnh tríc. Mçi lÇn ®îc khëi ®éng, m¸y tÝnh cña em sÏ thùc hiÖn cïng c¸c ho¹t ®éng tù kiÓm tra c¸c thµnh phÇn m¸y tÝnh, sau ®ã khëi ®éng hÖ ®iÒu hµnh theo mét tr×nh tù ®· ®îc quy ®Þnh tríc. a) Cã thÓ thÊy, ®Ó vÏ ®îc h×nh ...a), thao t¸c chÝnh cÇn thùc hiÖn lµ vÏ nöa ®êng trßn theo híng nhÊt ®Þnh. Ta gäi thao t¸c vÏ nöa ®êng trßn theo híng A lµ vÏ nöa ®êng trßn cã b¸n kÝnh 1 ®¬n vÞ b¾t ®Çu tõ mét ®iÓm x¸c ®Þnh, ®êng kÝnh nèi ®iÓm ®Çu vµ ®iÓm cuèi cña nöa ®êng trßn vu«ng gãc víi híng A vµ nöa ®êng trßn “cong vÒ híng A” (h×nh...). Ta chØ xÐt A lµ c¸c híng lªn trªn, xuèng díi, sang tr¸i, sang ph¶i. Víi c¸c híng, ta ®Þnh nghÜa phÐp to¸n sau: lªn trªn + 1 = sang tr¸i, sang tr¸i +1 = xuèng díi, xuèng díi +1 = sang ph¶i, sang ph¶i +1 = lªn trªn. Khi ®ã cã thÓ m« t¶ c¸c bíc cña thuËt to¸n ®Ó vÏ h×nh ... a) nh sau: H×nh ... H×nh ... Cã thÓ m« t¶ c¸c bíc cña thuËt to¸n ®Ó vÏ h×nh ... a) nh sau: Bíc 1. X¸c ®Þnh ®iÓm b¾t ®Çu vÏ lµ X. Bíc 2. §Æt i = 0 vµ ®Æt híng = lªn trªn. Bíc 3. VÏ nöa ®êng trßn theo híng ®· ®Æt. Bíc 4. i = i + 1. Bíc 5. NÕu i > 4, chuyÓn bíc 6; ngîc l¹i, ®Æt híng = híng + 1 vµ quay l¹i bíc 3. Bíc 6. KÕt thóc thuËt to¸n. Lu ý. Khi tr×nh bµy thuËt to¸n lÇn ®Çu tiªn cho häc sinh kh«ng nªn ®Þnh nghÜa c¸c phÐp to¸n víi c¸c híng mµ chØ nªn liÖt kª ®ñ bèn híng trong thuËt to¸n. b) ThuËt to¸n t¬ng tù nh trªn. Thao t¸c chÝnh cÇn lÆp l¹i lµ vÏ h×nh vu«ng. T¹i mçi bíc, gi÷ nguyªn t©m h×nh vu«ng vµ thay ®æi híng vÏ mét gãc 30o. C©u lÖnh lÆp cã t¸c dông lµm ®¬n gi¶n vµ gi¶m nhÑ c«ng søc cña ngêi viÕt ch¬ng tr×nh! Chóng ta nãi r»ng khi thùc hiÖn c¸c ho¹t ®éng lÆp, ch¬ng tr×nh kiÓm tra mét ®iÒu kiÖn. Víi lÖnh lÆp for := to do ; cña Pascal, ®iÒu kiÖn cÇn ph¶i kiÓm tra chÝnh lµ gi¸ trÞ cña biÕn ®Õm lín h¬n gi¸ trÞ cuèi. NÕu ®iÒu kiÖn kh«ng ®îc tháa m·n, c©u lÖnh ®îc tiÕp tôc thùc hiÖn; ngîc l¹i, chuyÓn sang c©u lÖnh tiÕp theo trong ch¬ng tr×nh. Tuy cã vßng lÆp 1000 lÇn, nhng ch¬ng tr×nh Pascal nãi trªn kh«ng thùc hiÖn bÊt k× mét ho¹t ®éng nµo. Tuy nhiªn ®©y vÉn lµ c©u lÖnh hîp lÖ. ThuËt to¸n tÝnh tæng A = Bíc 1. G¸n A ¬ 0, i ¬ 1. Bíc 2. A ¬ . Bíc 3. i ¬ i + 1. Bíc 4. NÕu i ≤ n, quay l¹i bíc 2. Bíc 5. Ghi kÕt qu¶ A vµ kÕt thóc thuËt to¸n. Trõ d), tÊt c¶ c¸c c©u lÖnh ®Òu kh«ng hîp lÖ: a) Gi¸ trÞ ®Çu ph¶i nhá h¬n gi¸ trÞ cuèi; b) C¸c gi¸ trÞ ®Çu vµ gi¸ trÞ cuèi ph¶i lµ sè nguyªn; c) ThiÕu dÊu hai chÊm khi g¸n gi¸ trÞ ®Çu; d) Thõa dÊu chÊm ph¶y thø nhÊt, nÕu nh ta muèn lÆp l¹i c©u lÖnh writeln(’A’)mêi lÇn, ngîc l¹i c©u lÖnh lµ hîp lÖ; e) BiÕn x ®· ®îc khai b¸o nh lµ biÕn cã d÷ liÖu kiÓu sè thùc vµ v× thÕ kh«ng thÓ dïng ®Ó x¸c ®Þnh gi¸ trÞ ®Çu vµ gi¸ trÞ cuèi trong c©u lÖnh lÆp. ThuËt to¸n: Bíc 1. NhËp c¸c sè n vµ x. Bíc 2. A ¬ 1, i ¬ 0 (A lµ biÕn lu lòy thõa bËc n cña x). Bíc 3. i¬i + 1, A ¬ A.x. Bíc 4. NÕu i < n, quay l¹i bíc 3. Bíc 5. Th«ng b¸o kÕt qu¶ A lµ lòy thõa bËc n cña x vµ kÕt thóc thuËt to¸n. Ch¬ng tr×nh Pascal cã thÓ nh sau: var n,i,x: integer; a: longint; begin write('Nhap x='); readln(x); write('Nhap n='); readln(n); A:=1; for i:=1 to n do A:=A*X; writeln(x,' mu ',n,' bang ',A); end. ThuËt to¸n: Bíc 1. NhËp sè n. Bíc 2. A¬ -32768 (g¸n sè nhá nhÊt cã thÓ trong c¸c sè kiÓu nguyªn cho A), i¬1. Bíc 3. NhËp sè thø i vµ g¸n gi¸ trÞ ®ã vµo biÕn A. Bíc 4. NÕu Max < A, Max ¬ A. Bíc 5. i¬i + 1. Bíc 6. NÕu i ≤ n, quay l¹i bíc 3. Bíc 7. Th«ng b¸o kÕt qu¶ Max lµ sè lín nhÊt vµ kÕt thóc thuËt to¸n. Ch¬ng tr×nh Pascal cã thÓ nh sau: uses crt; var n,i,Max,A: integer; begin clrscr; write('Nhap N='); readln(n); Max:=-32768; for i:=1 to n do begin write('Nhap so thu ',i,':'); readln(A); if Max<A then Max:=A end; writeln('So lon nhat: ',Max); end. Lu ý. Trong ch¬ng tr×nh trªn chóng ta chØ sö dông hai biÕn A vµ Max ®Ó gi¶i bµi to¸n. Mét c¸ch tù nhiªn, ®Ó nhËp n sè chóng ta cÇn tíi n biÕn. Tuy nhiªn, ë ®©y viÖc xö lÝ c¸c gi¸ trÞ trong d·y sè cã thÓ thùc hiÖn b»ng c¸ch chØ cÇn so s¸nh c¸c gi¸ trÞ ®· ®îc nhËp vµo, do ®ã chóng ta chØ cÇn mét biÕn ®Ó lu lÇn lît c¸c gi¸ trÞ nhËp vµo lµ ®ñ. Mét c¸ch gi¶i quyÕt kh¸c lµ sö dông biÕn m¶ng (xem Bµi tËp 6, Bµi 9). Lêi gi¶i bµi nµy t¬ng tù nh lêi gi¶i cña Bµi 9 ë trªn. Xem thuËt to¸n trong lêi gi¶i Bµi tËp 5a, Bµi 5. Ch¬ng tr×nh Pascal cã thÓ nh sau: uses crt; var n,i,SoDuong,A: integer; begin clrscr; write('Nhap N='); readln(n); if n>0 then begin SoDuong:=0; for i:=1 to n do begin write('Nhap so thu ',i,':'); readln(A); if A>0 then SoDuong:=SoDuong+1 end; wr
Tài liệu đính kèm: