Em hãy viết một chương trình đơn giản đưa ra màn hình tên của mình
Xem toàn bộ tài liệu Lớp 11: tại đâyGiải Bài Tập Tin Học 11 – Bài 3: Cấu trúc chương trình giúp HS giải bài tập, giúp cho các em hình thành và phát triển năng lực sử dụng công nghệ thông tin và truyền thông: Show Xem thêm các sách tham khảo liên quan:
1. Cấu trúc chung – Chương trình viết bằng một ngôn ngữ lập trình bậc cao thường gồm phần khai báo và phần thân. + Phần khai báo: Có thể có hoặc không tùy theo từng chương trình cụ thể. + Phần thân: Nhất thiết phải có. Khi diễn giải cú pháp của ngôn ngữ lập trình người ta thường đặt các diễn giả bằng ngôn ngữ tự nhiên đặt giữa cặp dấu <> và phần tùy chọn(có thể có hoặc không) đặt giữa cặp dấu []. Như vậy cấu trúc 1 chương trình có thể mô tả như sau. [2. Các thành phần của chương trình a) Có thể khai báo cho: Tên chương trình, thư viện, hằng, biến, các chương trình con. + Tên chương trình: Phần này có thể khó hoặc không, nếu có thì ta sử dụng từ khóa program, sau đó là tên chương trình program Ví dụ: program chuongtrinh2; Program chuongtrinh2; + Khai báo thư viện: Mỗi ngôn ngữ lập trình thường có sẵn một số thư viện cung cấp một chương trình thông dụng đã được lập sẵn. Để sử dụng các chương trình đó ta cần sử khai báo thư viện chứa nó. Trong pascal ta sử dụng uses < Tên thư viện1,tên thư viện 2,…>; Ví dụ: uses crt; uses crt,graph; Thư viện crt cung cấp các chương tình có sẵn để làm việc với màn hình và bàn phím. Khi ta sử dụng hàm trong thư viện mà lại quên khai báo nó (Ví dụ hàm readkey trong thư viện crt) sẽ gây ra lỗi khi biên dịch. + Khai báo hằng: Trong pascal ta sử dụng cú pháp const Ví dụ: const MaxN=1000; Const dung=TRUE; Const kq='ket qua';+ Khai báo biến: Tất cả các biến dung trong chương trình đều phải đặt tên và khai báo để chương trình dịch biết để lưu trữ và xử lý.Biến chỉ nhận một giá trị tại mỗi thời điểm gọi là biến đơn. Ví dụ: Khi tính tổng 2 số a và b. Ta có a và b là các biến đơn (Cú pháp khai báo biến sẽ học ở bài sau).
b) Phần thân chương trình Thân chương trình trong pascal được đặt giữa begin và end. Cụ thể có thể mô tả như sau : 3. Ví dụ chương trình đơn giản Ví dụ 1: Viết chương trình đưa ra màn hình thông báo ‘Xin chào các bạn’. Program vi_du; Begin Writeln('xin chao cac ban'); End.-Phần khai báo gồm khai báo tên chương trình gồm tên dành riêng program và tên chương trình là vi_du. -Phần thân chương trình chỉ có câu lệnh writeln ( câu lệnh in 1 chuỗi ra màn hình ). Ví dụ 2: Chương trình pascal đưa ra thông báo ‘Xin chao cac ban’ va ‘Moi cac ban lam quen voi pascal’ ra màn hình. Program vi_du1; Begin Writeln('xin chao cac ban'); Writeln('Moi cac ban lam quen voi pascal'); End.
Khi mới học Pascal ai cũng thích thực hành viết chương trình luôn hơn là học lý thuyết và mình cũng vậy. Cho nên trong series này mình không viết riêng bài về lý thuyết mà lồng ghép nó vào trong các bài hướng dẫn viết chương trình cho các bạn luôn, mình thấy như vậy khá là dễ nhớ. Ngay trong bài thứ 2 thuộc series này, ta sẽ thực hành viết chương trình đơn giản đầu tiên luôn. #2-Cấu trúc một chương trìnhCấu trúc một chương trình gồm hai phần:
-Khai báo tên chương trình: program Tên chương trình do người lập trình đặt, tên là một dãy liên tiếp không quá 127 ký tự bao gồm chữ số, chữ cái hoặc dấu gạch dưới và nó phải được bắt đầu bằng chữ cái hoặc dấu gạch dưới. Ví dụ:Program ten_chuong_trinh; program _A21; -Khai báo thư viện: uses crt; Bạn chỉ sử dụng được lệnh clrscr; (lệnh xóa màn hình) khi đã khai báo thư viện crt nhé -Khai báo biến: var a : integer; -Khai báo hằng const pi=3.14; 2. Phần thân Phần thân bắt đầu từ Begin cho tới End. (End có dấu chấm nhé), các bạn có thể thấy phần thân chưa có lệnh nào cả. Đối với các bạn mới bắt đầu thì các bạn chỉ cần đảm bảo cấu trúc như hình dưới cho mình, chưa cần quan tâm tới biến và hằng, tên chương trình thì các bạn có thể thay đổi khác đi nhé
#3-Một vài lệnh cơ bảnwrite(write('Pascal'); Xuất ra màn hình hằng xâu Pascal, nói đơn giản là nó in ra màn hình chữ Pascal, Pascal quy định xâu ký tự cần được đặt trong dấu nháy đơn.
writeln(
read( Ví dụ: read(a); Đọc dữ liệu và lưu vào biến a read(a,b,c); Đọc dữ liệu và lưu vào các biến a,b và c readln( clrscr; xóa màn hình, cái này cần khai báo thư viện crt #4-Các ví dụ#4.1-Ví dụ 1Viết chương trình xuất ra màn hình dòng Hello WorldBước 1: Đầu tiên bạn hãy đảm bảo cấu trúc chương trình Có dòng khai báo tên chương trình: program hello_world; Tiếp theo là phần thân chương trình được bắt đầu bằng: Begin end. Phần thân bây giờ đang rỗng nhé.
Bước 2: Để xuất ra màn hình một dòng chữ ta dùng write, các bạn để ý là dòng chữ mình cần xuất ra nó nằm trong cặp nháy đơn nhé. Ở bước này ta dùng lệnh write('Hello World'); để xuất ra màn hình dòng Hello World Tất nhiên là nó phải nằm trong phần thân chương trình
Bước 3: Nhấn tổ hợp Alt + f9 để biên dịch chương trình nhé, nếu thấy có hộp thoại thông báo: Compile Successful là đã thành công nhé
Bước 4: Có phải là bạn không kịp nhìn thấy gì hết phải không, bây giờ bạn hãy bổ sung thêm lệnh readln; vào dưới lệnh write('Hello World'); lệnh này có tác dụng ngừng chương trình lại cho tới khi ta nhấn enter, chương trình khi này sẽ như dưới.
Bạn đừng nhầm lệnh readln; ta dùng ở đây với lệnh readln(a); mà mình giới thiệu ở trên nhé Khi chạy chương trình sẽ có mấy dòng linh tinh do chương trình nó tự viết ra, kiểu như dưới
Giải thích chương trình: Chương trình sẽ chạy từ trên xuống gặp dòng begin thì nó hiểu phần thân đã bắt đầu từ đó 1. Đầu tiên khi chạy chương trình thì màn hình sẽ như thế này, hoặc nếu bạn dùng Turbo Pascal thì sẽ hiển thị dòng khác, nói chung mấy dòng này không liên quan tới chương trình, nó chỉ là mấy dòng thông tin phiên bản của Turbo Pascal hay Free Pascal
Trước đó ta khai báo thư viện crt đã nhé : uses crt; Dòng này sẽ xóa sạch những gì có trên màn hình trước đó, tức là mấy dòng thông tin về phiên bản Turbo Pascal hay Free Pascal bị xóa sạch, chỉ còn lại màn hình đen thui 3. Dòng tiếp theo là : Writeln('Hello World'); Nó sẽ in ra màn hình dòng chữ Hello World 4. Dòng tiếp theo Readln; Dòng này sẽ dừng màn hình lại, mục đính cho bạn xem kết quả, khi bạn nhấn enter, chương trình chạy tiếp dòng tiếp theo 5. Dòng cuối cùng: End. Khi chạy tới End. chương trình sẽ dừng lại, mọi dòng lệnh viết dưới end. sẽ vô nghĩa. #4.2-Ví dụ 2Để các bạn có hiểu hơn về lệnh Clrscr; các bạn hãy chạy chương trình sau:Program vd2; uses crt; begin clrscr; write('Hello World 1'); clrscr; write('Hello World 2'); readln; end. Kết quả là gì? Hello World 2 phải không nào. Thế còn lệnh write('Hello World 1'); thì sao? Chẳng lẽ nó không chạy. Giải thích phần thân : 1. Đầu tiên là lệnh: clrscr; Nó sẽ xóa mấy cái dòng thông tin phiên bản của Turbo Pascal hoặc Free Pascal. Kết quả là màn hình đen thui, chả có gì cả 2. Lệnh tiếp theo: write('Hello World 1'); Nó sẽ viết ra màn hình dòng Hello World 1 3. Lệnh tiếp theo: Clrscr; Nó sẽ xóa sạch màn hình, mà màn hình bây giờ chỉ có dòng Hello World 1, kết quả sau đó màn ình lại đen thui 4. Lệnh tiếp theo : write('Hello World 2'); Tại vì dòng Hello World 1 vừa in ra đã bị xóa nên màn hình bây giờ chỉ còn Hello World 2 Các bạn đã hiểu rồi phải không nào, không phải do lệnh write('Hello World 1'); không chạy mà do nó vừa in kết quả ra thì đã bị lệnh Clrscr; phía dưới xóa mất. #4.3-Ví dụ 3Ở ví dụ này mình sẽ giúp cho các bạn hiểu được sự khác biệt của write và writeln. Nói sơ qua thì write sẽ in ra màn hình một dòng chữ và con trỏ sẽ nằm ở ngay sau dòng chữ được in ra, còn với writeln nó cũng in ra màn hình dòng chữ nhưng con trỏ sẽ được chuyển xuống dòng dưới Các bạn lần lượt chạy hai chương trình sau cho dễ hiểu Chương trình 1:Program ct1; uses crt; begin clrscr; write('Hello'); write('World'); readln; end. Chương trình 2:Program ct2; uses crt; begin clrscr; writeln('Hello'); writeln('World'); readln; end. Kết quả của chương trình 1 là: HelloWorld
Hello World
Sau khi lệnh write('Hello'); chạy xong, con trỏ nằm ngay sau chữ Hello, do đó khi lệnh write('World'); chạy thì chữ World nằm ngay sau chữ Hello. Chương trình 2:Sau khi lệnh write('Hello'); chạy xong, con trỏ sẽ được chuyển xuống dòng dưới, do đó khi lệnh write('World'); chạy thì chữ World nằm dưới chữ Hello. Lưu ý: Nếu bạn dùng lệnh Writeln; thì nó có tác dụng để xuống dòng nhé. Chạy ví dụ sau và bạn sẽ thấy nó có cùng kết quả của chương trình 2 phía trên.program vd3; uses crt; begin clrscr; write('Hello'); writeln; write('World'); readln; end.Giải thích: write('Hello'); sẽ in ra dòng Hello nhưng không đưa con trỏ xuống dòng dưới writeln; sẽ đưa con trỏ xuống dòng dưới, write('World'); sẽ in ra chữ World ở dòng dưới chữ Hello - Vị trí hiện tại của con trỏ #4.4-Ví dụ 4Ở ví dụ này sẽ hướng dẫn các bạn sử dụng lệnh readln(a); nhé.Đề bài đơn giản thôi: Nhập vào một số nguyên dương (<30000) sau đó viết ra một thông báo về số vừa nhập vào Ví dụ như mình nhập vào số 5 thì sẽ xuất ra thông báo Ban vua nhap vao so 5. Như vậy bài này dùng read(a); để đọc dữ liệu vào và write để in ra thông báo nhé. Bây giờ chúng ta sẽ bắt đầu viết: Bước 1: Đầu tiên các bạn hãy đảm bảo cấu trúc chương trình
Bước 2: Đề bài yêu cầu nhập vào một số, vậy ta phải thông báo cho người dùng hãy nhập vào một con số bằng một đoạn thông báo trên màn hình, vậy làm sao để in ra được một dòng thông báo - Một dòng chữ? Ta sẽ dùng lệnh write('Hay nhap vao mot so nguyen'); hoặc writeln('Hay nhap vao mot so nguyen');
Bước 3: Khi nhập vào một số từ bàn phím thì ta cần phải lưu nó lại? Vậy phải lưu vào đâu? Ta sẽ phải lưu nó vào biến, mà muốn sử dụng biến ta phải báo cho nó một cái tên để gọi. Lấy một ví dụ cho các bạn hiểu hơn về biến nhé: chẳng hạn nhà bạn đăng tin cần thuê một người làm việc gì đó, thì người đó sẽ đến và khai báo với bố mẹ bạn về tên, tuổi,... của anh ta rồi mới vào làm đúng không. Biến cũng tương tự, nó cần đi vào phần thân chương trình để làm một công việc là lưu trữ thông tin, vậy đầu tiên ta phải khai báo tên, kiểu dữ liệu của nó trước rồi mới được dùng. Mỗi biến sẽ lưu được 1 giá trị. Cách khai báo như sau:
var -Kiểu dữ liệu: ở bài trước mình nói rồi đấy, nó là integer hoặc real hoặc char hoặc ... Ví dụ:var a,b,c : integer; Dòng trên khai báo ba biến a, b và c có kiểu dữ liệu là integer, như vậy 3 biến này sẽ lưu được những giá trị như 1 hoặc 2 hoặc 3 hoăc -1 hoặc 0 hoặc .... Nói thêm về chỗ chọn kiểu dữ liệu, bạn cần chọn kiểu dữ liệu cho phù hợp, chẳng hạn nếu biến đó chỉ để lưu số nguyên thì bạn có thể chọn Integer, nhưng nếu lưu số thực thì bạn phải chọn là real Bạn cũng có thể khai báo nhiều danh sách biến, ví dụ:var a,b,c: integer; k, qk, bqk : real; Như trên thì sẽ có hai danh sách biến, danh sách thứ nhất gồm 3 biến a,b và c thuộc kiểu integer, danh sách thứ 2 thuộc kiểu real gồm 3 biến là k, qk và bqk. Vậy cấu trúc chung như sau:
var: ... Bạn cần dùng bao nhiêu biến, hay biến thuộc kiểu gì thì hãy tự khai báo vào chương trình nhé. Và cũng lưu ý đặt tên biến sao cho dễ hiểu và dễ nhớ tí, không sau này đọc lại thì lại chẳng hiểu gì. Ta đã biết các khai báo biến, vậy bạn đã biết phải đặt đoạn khai báo này ở đâu chưa? Theo như cấu trúc một chương trình mà mình đã nói ở trên thì ta sẽ đặt đoạn khai báo biến ở phần khai báo (trước phần thân); Ok, bây giờ quay lại ví dụ, người ta yêu cầu nhập vào một số nguyên, vậy ta cần một biến, ta sẽ chọn cho nó một cái tên để gọi và một kiểu dữ liệu. tên thì tùy bạn, mình chọn là biến a. Còn kiểu dữ liệu, người ta bảo là số nguyên, vậy bạn hãy tìm trong bài trước xem kiểu số nguyên gồm những kiểu dữ liệu nào. Bạn có thể chọn integer hoặc longint hoặc byte hoặc word, tùy vào độ lớn của số mà bạn nhập vào. Ví dụ số bạn nhập vào là 256 mà bạn khai báo biến kiểu byte (từ 0 đến 255) như vậy là lỗi ngay nhé, trong trường hợp này bạn nên khai báo integer là vừa đủ, số nhập vào nhỏ hơn 30000 mà kiểu integer tối đa tới 32767. Như vậy sẽ là : var a : integer;
Bước 4: Ta đã thông báo với người dùng hãy nhập vào một số, ta cũng đã chuẩn bị sẵn một biến để lưu nó, vậy bây giờ ta phải đọc số mà người dùng nhập như thế nào? Ta sẽ dùng lệnh readln(a); hoặc read(a); Ta sẽ đọc số sau khi thông báo nên ta thêm readln(a); nằm dưới writeln('Hay nhap vao mot so nguyen');
Lệnh readln(a); sẽ đọc một số người dùng nhập từ bàn phím và lưu vào biến a (biến cần phải được khai báo trước), sau đó con trỏ sẽ nhảy xuống dòng dưới. Lệnh read(a); thì tương tự như readln(a); chỉ khác nó không đưa con trỏ xuống dòng tiếp theo, bạn thử thay readln(a); thành read(a); để thấy sự khác biệt. Bước 5: In ra một thông báo về số đã nhập vào. Vậy ta dùng lệnh write (hoặc writeln) để in ra thông báo, nhưng làm sao để in ra số vừa nhập vào? Ta dùng lệnh sau: write( 'So ban vua nhap vao la: ' , a );
Danh sách kết quả ra gồm hai thành phần, phần màu đỏ bao gồm cả hai dấu nháy đơn, gọi là hằng xâu, Pascal quy định chuỗi ký tự cần phải được đặt trong cặp dấu nháy đơn mới in ra được nhé Còn phần màu xanh, nó là tên biến mà mình muốn in giá trị của nó ra màn hình. Bạn cần hiểu có hai thành phần được in ra (màu đỏ với màu xanh ) và hai thành phần này được ngăn cách bằng dấu phẩy và chuỗi ký tự cần in ra nó nằm trong cặp dấu nháy kép. Như vậy, lệnh write (hay writeln) có thể in ra một lúc nhiều thứ nhé, và các thành phần sẽ phân cách nhau bằng dấu phẩy. Ví dụ nếu bạn có 3 biến a,b và c bạn có thể in một lúc 3 biến như sau write( a , b , c ); Nói thêm chỗ này, nếu bạn chỉ muốn in duy nhất giá trị biến a ra thì dùng lệnh write(a); Bước 6: Bạn cần phải dừng chương trình để có thể xem kết quả nên ta dùng readln;
#4.5-Ví dụ 5Ví dụ này mình sẽ giúp các bạn hiểu hiểu thêm về read và readln Chúng ta không chỉ đọc vào được một biến với mỗi lệnh read hay readln mà là nhiều nhé.Ví dụ: Viết chương trình nhập vào 3 số nguyên dương (<30000) và hiện thị một đoạn thông báo về 3 số vừa nhập. Ví dụ 5 gần như giống hệt ví dụ 4, chỉ khác thay vì chỉ nhập vào 1 số ở ví dụ 4 thì ở ví dụ 5 yêu cầu nhập 3 số.
Bước 2: Khai báo biến. Yếu cầu nhập vào 3 số nên ta khai báo 3 biến, kiểu dữ liệu vẫn là integer; var a,b,c : integer;
Bước 3: In dòng thông báo nhập vào 3 số writeln('Nhap vao 3 so ');
Bước 4: Bước này là sự khác biệt Bạn có thể dùng read(a,b,c); hoặc readln(a,b,c); để đọc hết 3 biến cùng một lúc. Nếu đọc từng biến một thì là đoạn này:read(a); read(b); read(c); Hoặc đoạn này:readln(a); readln(b); readln(c); Nếu dùng read(a,b,c); thì cách bạn nhập số vào như sau: bạn viết 3 số cách nhau bằng một khoảng trắng rồi enter. Số đầu tiên nhập vào được lưu vào biến a, số thứ hai lưu vào biến b và số thứ 3 lưu vào biến c, cái này tương tự cho readln(a,b,c);
Nếu dùng readln(a,b,c); Bạn nhập số đầu tiên vào rồi enter , bạn sẽ thấy con trỏ nhảy xuống dòng dưới phải không, tiếp tục nhập số rồi enter, như vậy là nhập được số thứ nhất, tiếp tục cho hai số còn lại.
Nếu dùng read(a); read(b); read(c); Đầu tiên là lệnh read(a); chạy, bạn nhập vào một số và nó được lưu vào biến a, tiếp theo lệnh read(b); chạy, bạn nhập số vào và nó được lưu vào biến b. Tương tự cho read(c);
Nếu dùng readln(a); readln(b); readln(c); Đầu tiên là lệnh readln(a); chạy, bạn nhập vào một số và nó được lưu vào biến a đồng thời con trỏ nhảy xuống dòng tiếp theo. Tiếp theo lệnh readln(b); chạy, bạn nhập số vào và nó được lưu vào biến b đồng thời con trỏ chuyển xuống dòng dưới. Tương tự cho readln(c);
Bạn hãy thử hết cả 4 cách để cảm nhận sự khác biệt. Mình chọn read(a,b,c); nhé. Bước 5: Ta sẽ in ra một đoạn thông báo kiểu như 3 so vua nhap vao la 1 2 3 (giả sử 3 số nhập vào lần lượt là 1,2 và 3) Ta dùng lệnh sau: Writeln( '3 so ban vua nhap vao la ' , a , ' ' , b , ' ', c ); Bạn nhìn kĩ nhé, trong lệnh writeln trên có năm thành phần, đầu tiên là chuỗi (hằng xâu) '3 so ban vua nhap vao la ' , tiếp theo là biến a, tiếp theo là khoảng trắng, khoảng trắng cũng được xem là một ký tự và nó cũng được đặt trong dấu nháy đơn, tiếp theo là biến b, tiêp theo lại là một khoảng trắng và cuối cùng là biến c.
Bước 6: Dùng lệnh readln; để dừng chương trình, xem kết quả.
Mình định viết hết trong một bài luôn nhưng do nó dài quá nên tạm ngắt ở đây, các bạn hãy làm đi làm lại cho nhuần nhuyển hết các ví dụ, quan trọng phải hiểu được ý nghĩa của các lệnh trong chương trình. Nếu có gì không hiểu hãy để lại bình luận hoặc gửi tin nhắn qua Facebook cho mình để được giải đáp. Nhớ nhé, không hiểu thì hỏi liền, đây là những cái rất nền tảng, bạn không được những cái này thì qua bài sau sẽ không hiểu gì đâu, hãy học tới đâu chắc tới đó. |